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, même s’il ne peut pas le sauvegarder. Quelle est la différence s’il y en a?

Il y a une différence, oui.

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

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

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 en premier lieu dans le fichier avec les atsortingbuts appropriés.

En d’autres termes, la validité se réfère à la sémantique, le bien-être à la syntaxe.

Vous pouvez donc avoir du XML bien formé invalide.

XML bien formé vs valide

Bien formé signifie qu’un object textuel répond aux exigences du W3C pour être XML .

Valable signifie qu’un XML bien formé répond à des exigences supplémentaires données par un schéma spécifié.


Définitions officielles

Conformément à la recommandation du W3C pour XML :

[Définition: un object de données est un document XML s’il est bien formé , tel que défini dans la présente spécification. De plus, le document XML est valide s’il répond à certaines contraintes supplémentaires.]


Observations:

  • Un document mal formé n’est pas XML. ( XML bien formé est couramment utilisé mais techniquement redondant.)
  • Être valide implique d’être bien formé.
  • Être bien formé ne signifie pas être valide.
  • Bien que la recommandation du W3C pour XML définisse la validité comme étant contre une DTD, l’utilisation conventionnelle permet d’appliquer le terme à la conformité aux schémas XML spécifiés via XSD , RELAX NG , Schematron ou d’autres méthodes.

Exemples de causes d’un document …

Pas bien formé :

  • Un élément n’a pas de balise de fermeture (et ne se ferme pas automatiquement).
  • Les éléments se chevauchent sans imbrication correcte:
  • Une valeur d’atsortingbut ne contient pas de devis de clôture qui correspond au devis d’ouverture.
  • < ou & sont utilisés dans le contenu plutôt que dans &lt ou & .
  • Plusieurs éléments racine existent.
  • Plusieurs déclarations XML existent ou une déclaration XML apparaît en haut du document.

Non valide :

  • Un élément ou un atsortingbut est manquant mais requirejs par le schéma XML.
  • Un élément ou un atsortingbut est utilisé mais non dé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 atsortingbut 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, les deux-points ne doivent être utilisés que dans les noms à des fins d'espace de noms:

Remarque:

La recommandation Namespaces in XML [ Noms XML ] atsortingbue une signification aux noms contenant des caractères deux-points. Par conséquent, les auteurs ne doivent 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 caractère de nom.

Par conséquent, un autre terme, bien formé , est défini dans la recommandation W3C Namespaces in XML 1.0 qui implique toutes les règles XML pour le bon formage, plus celles régissant les espaces de noms et les préfixes d'espace de noms.

Dans le langage courant, le terme bien formé est souvent utilisé lorsque l’ espace de noms bien formé serait plus précis. Cependant, il s’agit d’une manière technique mineure de conséquences moins pratiques que la distinction entre XML bien formé et valide, décrite dans cette réponse.

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

Une autre façon de l’exprimer est que le XML bien formé est correct du sharepoint vue lexical (il peut être analysé), tandis que le XML valide est grammaticalement correct (il peut être adapté à un vocabulaire et à une grammaire connus).

Un document XML ne peut pas être valide jusqu’à ce qu’il soit bien formé. Tous les documents XML respectent la même norme en matière de forme (une RFC publiée par le W3). Un document XML peut être valide sur certains schémas et invalide sur d’autres. Il existe un certain nombre de langages de schéma, dont beaucoup sont eux-mêmes basés sur XML.

XML bien formé est un XML qui répond aux exigences syntaxiques du langage. Ne manquant aucune balise de fermeture, toutes les balises singleton utilisent au lieu de , et vos balises de fermeture doivent être dans le bon ordre.

XML valide est XML qui utilise une DTD et respecte toutes ses exigences. Donc, si vous utilisez un atsortingbut de manière incorrecte, vous ne respectez pas la DTD et n’êtes pas valide.

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

XML est bien formé s’il répond aux exigences de tous les documents XML définis par les normes – par exemple, un nœud racine unique, avec des nœuds correctement nesteds, tous les nœuds ayant une balise de fermeture (ou utilisant le raccourci de nœud vide d’une barre oblique) l’équerre de fermeture), les atsortingbuts étant 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 est validé par rapport à une DTD ou à un schéma. Cela diffère évidemment d’un cas à l’autre – le XML valide contre un schéma ne sera pas valide contre 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 parsingurs lanceront 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 dépend du contexte et nécessite une DTD ou un schéma pour valider. Pour les documents XML simples, vous ne pouvez 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.

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 la présence exacte d’un élément racine, ayant une balise de fin pour chaque balise de début, utilisant des guillemets simples / doubles pour les valeurs d’atsortingbut, etc. Si un document XML suit toutes ces règles, il est dit qu’il s’agit d’un document bien formé et que des parsingurs XML peuvent être utilisés pour parsingr et traiter ces documents.

Les définitions de type de document (DTD) ou les 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’atsortingbuts, les informations de type de données, les ressortingctions de valeur, etc. En plus des règles bien formées, si un document XML suit également les règles spécifiées dans le DTD / Schéma ê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.

J’appendai que le XML valide implique aussi qu’il est bien formé, mais que le XML bien formé n’est pas nécessairement valide.

Outre les DTD susmentionnées, XMLSchema et RelaxNG sont deux autres façons de décrire et de valider les documents XML, qui peuvent tous deux être plus faciles à utiliser et prendre en charge plus de fonctionnalités que la DTD.

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

Tiré du langage de balisage extensible (XML) 1.0 (cinquième édition) – Recommandation du W3C du 26 novembre 2008 :

[Définition: un object de données est un document XML s’il est bien formé, tel que défini dans la présente spécification. De plus, le document XML est valide s’il répond à certaines contraintes supplémentaires.]


Pour ceux qui préfèrent le pseudo-code aux paragraphes sur les paragraphes de texte … 🙂

 IF is_well_formed() THEN # It is well-formed, and can be parsed IF is_valid() 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  THEN RETURN TRUE ELSE RETURN FALSE END IF END FUNCTION FUNCTION is_valid IF  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: “Well Formed” vs. Valid

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 consiste à vérifier un document par rapport à une DTD (plus généralement à 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 résumé, une DTD définit tous les éléments possibles de votre document, quelle est la forme formelle de votre arbre de document (en définissant le contenu autorisé d’un élément, soit du texte, une expression régulière pour la liste autorisée des enfants, soit du contenu mixte). c’est-à-dire à la fois du texte et des enfants). La DTD définit également les atsortingbuts valides pour tous les éléments et les types de ces atsortingbuts.

Eh bien, le XML qui n’est pas bien formé, par définition, n’est pas XML. Poeple se réfère généralement à XML valide en tant que XML qui adhère à un certain schéma (XSD ou DTD).

Voir XML DTD sur les écoles W3 :

Un document XML avec une syntaxe correcte est appelé “Well Formed”.

Un document XML validé par rapport à une DTD est à la fois “Well Formed” et “Valid”.