Y a-t-il une différence entre 'XML valide' et 'xml bien formé'?

Je n'étais pas au courant d'une différence, mais un collègue dit qu'il y en a, bien qu'il ne puisse pas le sauvegarder. Quelle est la différence le cas échéant?

74
demandé sur shA.t 2008-09-25 20:53:08

14 réponses

Il y a une différence, Oui.

XML qui adhère à la norme XML est considéré comme bien formé, tandis que xml qui adhère à un DTD est considéré comme valide.

76
répondu Kilhoffer 2018-05-16 14:09:24

XML valide est XML qui réussit la validation par rapport à une DTD.

XML bien formé est XML qui a toutes les balises fermées dans le bon ordre et, s'il a une déclaration, il a la première chose dans le fichier avec les attributs appropriés.

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

Vous pouvez donc avoir un XML bien formé invalide.

26
répondu Vinko Vrsalovic 2008-09-25 16:54:58

XML bien formé vs valide

Bien formé signifie qu'un objet textuel répond à la W3C exigences pour étant XML.

Valide signifie que XML bien formé répond à des exigences supplémentaires donnés par un schéma spécifié.


Définitions Officielles

Selon la recommandation W3C pour XML :

[définition: un objet de données est un document XML s'il est bien formé, tel que défini dans la présente spécification. En outre, l' Document XML est valide si elle répond à certaines contraintes.]


Observations:

  • Un document qui n'est pas bien formé n'est pas XML. (XML bien formé est couramment utilisé mais techniquement redondant.)
  • être valide implique être bien formé.
  • être bien formé ne signifie pas être valide.
  • bien que le Recommandation du W3C pour le XML définit validité à l'encontre d'une DTD, l'utilisation conventionnelle permet le terme à employer pour assurer la conformité des schémas XML spécifié via XSD, RELAX NG, Schematron, ou d'autres méthodes.

Exemples de ce qui provoque un document à être...

Pas bien formé:

  • un élément n'a pas de balise de fermeture (et n'est pas à fermeture automatique).
  • les éléments se chevauchent sans imbrication: <a><b></a></b>
  • une valeur d'attribut manque un guillemet de fermeture qui correspond à guillemet d'ouverture.
  • < ou & sont utilisés dans le contenu plutôt que &lt ou &amp;.
  • plusieurs éléments racines existent.
  • plusieurs déclarations XML existent, ou une déclaration XML apparaît autre qu'en haut du document.

Invalide:

  • un élément ou un attribut est manquant mais requis par le schéma XML.
  • un élément ou attribut est utilisé mais indéfini par le schéma XML.
  • Le contenu d'un élément ne correspond pas au contenu spécifié par le schéma XML.
  • la valeur d'un attribut ne correspond pas au type spécifié par le schéma XML.

Espace De Noms-Bien Formé

Techniquement, les caractères deux-points sont autorisés dans les noms de composants en XML. Cependant, deux-points devrait être utilisé uniquement dans les noms à des fins d'espace de noms:

Remarque:

Les espaces de noms dans la recommandation XML [ noms XML] attribue un signification des noms contenant du côlon caractères. Par conséquent, les auteurs ne doit pas utiliser les deux points dans les noms XML sauf à des fins d'espace de noms, mais les processeurs XML doivent accepter les deux-points comme un caractère de nom.

Par conséquent, un autre terme, espace de noms-bien formé, est défini dans les espaces de noms dans la recommandation XML 1.0 W3C {[13] } qui implique toutes les règles XML pour la bonne forme plus {[10] } celles régissant les espaces de noms et les préfixes d'espaces de noms.

Familièrement, le terme bien formé est souvent utilisé lorsque espace de bien-formé serait plus précis. Cependant, il s'agit d'une manière technique mineure de conséquence moins pratique que la distinction entre XML bien formé et XML valide décrite dans cette réponse.

25
répondu kjhughes 2016-09-28 17:52:43

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

Une Autre façon de le dire est que XML bien formé est lexicalement correct (il peut être analysé), tandis que XML valide est grammaticalement correct (il peut être associé à un vocabulaire et de la grammaire).

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

15
répondu harpo 2017-01-20 15:54:17

XML bien formé est XML qui répond aux exigences syntaxiques du langage. Ne manquant aucune balise de fermeture, ayant toutes vos balises singleton utiliser <whatever /> au lieu de simplement <whatever>, et ayant vos balises de fermeture dans le bon ordre.

XML valide est XML qui utilise une DTD et est conforme à toutes ses exigences. Donc, si vous utilisez un attribut incorrectement, vous violez la DTD et n'êtes pas valide.

Tout XML valide est bien formé, mais tout XML bien formé n'est pas valide.

6
répondu ZachPruckowski 2008-09-25 17:04:27

XML est bien formé si répond aux exigences pour tous les documents XML définis par les normes - donc des choses comme avoir un seul nœud racine, avoir des nœuds correctement imbriqués, tous les nœuds ayant une balise de fermeture (ou en utilisant le raccourci de nœud vide d'une barre oblique avant le support d'angle de fermeture), les attributs étant Ê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 doit être validé par rapport à une DTD ou un schéma. De toute évidence, cela diffère d'un cas à l'autre - XML qui est valide contre un schéma ne sera pas valide contre un autre schéma, même s'il est encore bien formé.

Si XML n'est pas bien formé, il ne peut pas être correctement analysé - les analyseurs vont simplement lancer une exception ou Signaler une erreur. C'est générique et peu importe ce que contient votre XML. Ce n'est qu'une fois qu'il est analysé que sa validité peut être vérifiée. Ce domaine ou contexte dépend et nécessite une DTD ou un schéma à valider. Pour les documents XML simples, vous peut 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
répondu Simon Forrest 2008-09-25 17:04:44

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'attribut, et ainsi de suite. Si un document XML suit toutes ces règles, il est dit être un document bien formé et les analyseurs XML peuvent être utilisés pour analyser et traiter ces documents.

Les définitions de type de Document (DTD) ou les schémas XML peuvent être utilisé 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 de type de données, les restrictions de valeur, etc. En plus des règles de bonne forme, si un document XML suit également les règles spécifiées dans le DTD/Schéma associé, il est considéré comme 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 n'ont pas nécessairement pour être valide.

3
répondu harsha 2011-08-14 03:34:28

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

1
répondu Joel Coehoorn 2008-09-25 16:57:15

En plus des DTD susmentionnées, il existe 2 autres façons de décrire et de valider les documents XML: XMLSchema et RelaxNG, qui peuvent être plus faciles à utiliser et prendre en charge plus de fonctionnalités que DTD.

1
répondu Kyle Burton 2008-09-25 17:05:22

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

1
répondu Narasimhareddy 2010-06-07 11:18:06

Extrait de Extensible Markup Language (XML) 1.0 (cinquième édition) - recommandation du W3C 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. En outre, le document XML est valide si elle répond à certaines contraintes.]


pour ceux qui préfèrent le code psuedo aux paragraphes sur les paragraphes du 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
répondu Kent Pawar 2013-12-12 15:47:17

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'un document est conforme à l'ensemble des 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 construction de DTD sont les deux plus parties difficiles du cycle de vie XML. Brièvement, une DTD définit tous les éléments possibles à trouver dans votre document, Quelle est la forme formelle de votre arborescence de documents (en définissant le Contenu autorisé d'un élément; soit du texte, une expression régulière pour la liste des enfants autorisés, soit du contenu mixte, c'est-à-dire à la fois du texte et des enfants). La DTD définit également les attributs valides pour tous les éléments et les types de ces attributs.

0
répondu Rachna Garg 2011-01-27 09:55:30

Eh bien, XML qui n'est pas bien formé, en quelque sorte par définition, N'est pas XML. Poeple se réfère généralement à XML valide comme XML qui adhère à un certain schéma (XSD ou DTD).

0
répondu Charles Graham 2016-11-16 19:40:28

Voir XML DTD sur les écoles W3:

Un document XML avec une syntaxe correcte est appelé "bien formé".

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

0
répondu Attila 2018-05-16 12:25:01