web-dev-qa-db-fra.com

Existe-t-il une différence entre 'valid xml' et 'wellform xml'?

Je ne savais pas qu'il y avait une différence, mais un collègue a dit que c'était le cas, bien qu'il ne puisse pas le confirmer Quelle est la différence le cas échéant?

73
user18931

Il y a une différence, oui.

XML qui respecte le standard XML ​​ est considéré comme étant bien formé, tandis que xml qui adhère à un DTD est considéré comme valide.

76
Kilhoffer

XML valide est XML qui réussit la validation sur une DTD.

Un XML bien formé est un XML qui a toutes les balises fermées dans le bon ordre et, s'il a une déclaration, il l'a tout d'abord dans le fichier avec les attributs appropriés.

En d'autres termes, la validité fait référence à la sémantique, la bonne forme à la syntaxe.

Donc, vous pouvez avoir un XML bien formé invalide.

27
Vinko Vrsalovic

Comme d'autres l'ont dit, un XML bien formé est conforme à la spécification XML et un XML valide est conforme à un schéma donné.

Une autre façon de le dire est qu'un XML bien formé est lexicalement correct (il peut être analysé), alors qu'un XML valide est grammatical correct (il peut correspondre à un vocabulaire et une grammaire connus).

Un document XML ne peut être valide tant qu'il n'est pas bien formé. Tous les documents XML sont soumis au même standard de qualité de la mise en forme (un RFC publié par le W3). Un document XML peut être valide contre certains schémas et non valide pour d'autres. Il existe un certain nombre de langages de schéma, dont beaucoup sont eux-mêmes basés sur XML.

16
harpo

Un XML bien formé est un XML qui répond aux exigences syntaxiques du langage. Ne manquez aucune balise de fermeture, utilisez toutes vos balises singleton avec <whatever /> au lieu de <whatever> et ayez vos balises de fermeture dans le bon ordre.

Un XML valide est un XML qui utilise une DTD et qui répond à toutes ses exigences. Donc, si vous utilisez un attribut de manière incorrecte, vous violez la DTD et n'êtes pas valide.

Tout XML valide est bien formé, mais tous les XML bien formés ne sont pas valides.

6
ZachPruckowski

XML est bien formé s'il répond aux exigences de tous les documents XML définis par les normes - par exemple, avoir un seul nœud racine, des nœuds correctement imbriqués, tous les nœuds ayant une balise de fermeture (ou utiliser le raccourci de nœud vide d'une barre oblique la parenthèse fermante), les attributs cités, etc. Être bien formé signifie simplement qu’il adhère aux règles de XML et peut donc être analysé correctement.

XML est valide s'il valide une DTD ou un schéma. Cela diffère évidemment d’un cas à l’autre - un XML valide par rapport à un schéma ne sera pas valable par rapport à un autre schéma, même s’il est toujours bien formé.

Si XML n'est pas bien formé, il ne peut pas être analysé correctement. Les analyseurs syntaxiques lèveront simplement une exception ou signaleront une erreur. Ceci est générique et peu importe ce que contient votre XML. Une fois analysé, sa validité peut être vérifiée. Ce domaine ou contexte dépend et nécessite une DTD ou un schéma pour valider. Pour les documents XML simples, vous pouvez ne pas avoir de DTD ou de schéma, auquel cas vous ne pouvez pas savoir si le XML est valide - le concept ou la validité ne s'applique tout simplement pas dans ce cas. Bien sûr, cela ne signifie pas que vous ne pouvez pas l'utiliser, cela signifie simplement que vous ne pouvez pas dire si c'est valide ou non.

4
Simon Forrest

Le W3C, dans la spécification XML, a défini certaines règles à suivre lors de la création de documents XML. Les exemples de telles règles incluent avoir exactement un élément racine, avoir une balise de fin pour chaque balise de début, utiliser des guillemets simples/doubles pour les valeurs d'attributs, etc. Si un document XML respecte toutes ces règles, il est dit que le document est bien formé et que des analyseurs syntaxiques XML peuvent être utilisés pour analyser et traiter de tels documents.

Des définitions de type de document (DTD) ou des schémas XML peuvent être utilisés pour définir la structure et le contenu d'une classe spécifique de documents XML. Cela inclut les détails de la relation parent-enfant, les listes d'attributs, les informations sur le type de données, les restrictions de valeur, etc. être un document XML valide.

Tous les documents XML valides sont bien formés, mais l'inverse n'est pas toujours vrai. Les documents XML bien formés ne doivent pas nécessairement être valides.

3
harsha

Extrait de Extensible Markup Language (XML) 1.0 (Cinquième édition) - Recommandation W3C du 26 Novembre 2008 :

[Définition: un objet de données est un document XML s’il est bien formé, comme défini dans cette spécification. De plus, le document XML est valide s'il répond à certaines contraintes supplémentaires.]


Pour ceux qui préfèrent le code pseudo-codé aux paragraphes sur les paragraphes de texte ... :)

IF is_well_formed(<XML_doc>) THEN
    # It is well-formed, and can be parsed
    IF is_valid(<XML_doc>) THEN
        # Well-formed and ALSO valid. Hurray! 
        # **A valid XML doc, is a well-formed doc!**
    ELSE
        # Only well-formed, NOT valid
    END IF
ELSE
    # Not well-formed, or valid!
END IF

FUNCTION is_well_formed
    IF <does_not_contain_syntax,_spelling,_punctuation,_grammar_errors,_etc._errors> THEN
        RETURN TRUE
    ELSE 
        RETURN FALSE
    END IF
END FUNCTION 

FUNCTION is_valid
    IF <markup_of_the_XML_document_matches_"some"_defined_standard> THEN
        # Standards used to validate XML could be a DTDs or XML Schemas, referenced within the XML document
        RETURN TRUE
    ELSE 
        RETURN FALSE
    END IF
END FUNCTION

Basé sur la théorie: "bien formé" vs valide

1
Kent Pawar

J'ajouterai qu'un XML valide suppose également qu'il est bien formé, mais qu'un XML bien formé n'est pas nécessairement valide.

1
Joel Coehoorn

Si XML confirme la conformité aux règles DTD, alors c'est un XML valide . Si un document XML est conforme aux règles XML (toutes les balises Started sont fermées, il y a un élément racine, etc.), alors c'est un Bien formé XML.

1
Narasimhareddy

En plus des DTD susmentionnées, il existe deux autres méthodes de description et de validation des documents XML: XMLSchema et RelaxNG , qui peuvent être plus faciles à utiliser et prendre en charge davantage de fonctionnalités que DTD.

1
Kyle Burton

DTD est l'acronyme de Document Type Definition. Ceci est une description du contenu d'une famille de fichiers XML. Cela fait partie de la spécification XML 1.0 et permet de décrire et de vérifier qu'une instance de document donnée est conforme à l'ensemble de règles détaillant sa structure et son contenu.

La validation est le processus de vérification d'un document par rapport à une DTD (plus généralement par rapport à un ensemble de règles de construction).

Le processus de validation et la création de DTD sont les deux parties les plus difficiles du cycle de vie XML. En bref, une DTD définit tous les éléments possibles présents dans votre document, quelle est la forme formelle de votre arborescence de documents (en définissant le contenu autorisé d'un élément; un texte, une expression régulière pour la liste d'enfants autorisés ou un contenu mixte c'est-à-dire le texte et les enfants). La DTD définit également les attributs valides pour tous les éléments et les types de ces attributs.

0
Rachna Garg

Voir DTD XML sur les écoles W3 :

Un document XML dont la syntaxe est correcte s'appelle "Well Formed".

Un document XML validé par rapport à une DTD est à la fois "bien formé" et "Valide".

0
Attila

Eh bien, XML qui n'est pas bien formé, en quelque sorte par définition, n'est pas XML. Les gens se réfèrent généralement à XML valide en tant que XML adhérant à un certain schéma (XSD ou DTD).

0
Charles Graham