Question

Je ne savais pas qu'il y avait une différence, mais un collègue a répondu par l'affirmative, bien qu'il ne puisse pas la confirmer. Quelle est la différence le cas échéant?

Était-ce utile?

La solution

Il y a une différence, oui.

Le code XML qui adhère à la norme XML est considéré comme étant bien formé, tandis que le xml qui adhère à un < une href = "https://www.w3schools.com/xml/xml_dtd.asp" rel = "noreferrer"> la DTD est considérée comme valide.

Autres conseils

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.

Vous pouvez donc avoir du XML bien formé non valide.

XML bien formé vs valide

Bien formé signifie qu'un objet textuel répond à la Exigences du W3C pour être XML .

Valide signifie que du 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 objet de données est un document XML s'il est    bien formé , comme défini dans cette spécification. De plus, le   Le document XML est valide s'il est conforme. certaines contraintes supplémentaires.]

Observations:

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

Exemples de facteurs à l'origine d'un document ...

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 correcte: <a><b></a></b>
  • Il manque à un attribut de fermeture un attribut de fermeture correspondant à la devis d'ouverture.
  • < ou & sont utilisés dans le contenu plutôt que &lt ou &amp;.
  • Il existe plusieurs éléments racines.
  • Il existe plusieurs déclarations XML ou une déclaration XML apparaît autrement 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 un attribut 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 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 XML. Cependant, les deux-points devraient . strong> être utilisé uniquement dans les noms d'espaces de noms:

  

Remarque:

     

Les espaces de noms dans la recommandation XML [ Noms XML ] attribuent un   signifiant aux noms contenant des caractères de deux points. 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 nom de nom.

Par conséquent, un autre terme, espace de noms bien formé , est défini dans les espaces de noms dans XML 1.0, recommandation du W3C. qui implique toutes les règles XML pour plus ainsi que pour les espaces de noms qui le régissent et les préfixes d'espace de nom.

De manière familière, le terme bien formé est souvent utilisé lorsque un espace de noms bien formé serait plus précis. Cependant, ceci est un minou technique de conséquence moins pratique que la distinction entre XML bien formé et valide décrite dans cette réponse.

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 correct lexical (il peut être analysé), alors qu'un XML valide est grammaticalement correct (il peut être mis en correspondance 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.

Un XML bien formé est un XML qui répond aux exigences syntaxiques du langage. Ne manquez aucune balise de fermeture, utilisez toutes les balises singleton <whatever /> au lieu de <whatever> et maintenez 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 le XML valide est bien formé, mais tous les 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 - des choses comme avoir un seul nœud racine, des nœuds correctement imbriqués, tous les nœuds ayant une balise de fermeture (ou en utilisant le raccourci de nœud vide de une barre oblique avant 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 selon les cas: un XML valide par rapport à un schéma ne sera pas valable par rapport à un autre, 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. C'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 s'il est valide ou non.

Dans la spécification XML, le W3C a défini certaines règles à respecter 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, etc. Si un document XML respecte toutes ces règles, il est considéré comme un document bien formé et des analyseurs syntaxiques XML peuvent être utilisés pour analyser et traiter de tels 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'attributs, les informations sur le type de données, les restrictions de valeur, etc. En plus des règles de bonne formabilité, si un document XML respecte également les règles spécifiées dans la DTD / schéma associé, il est dit: ê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'ajouterai qu'un code XML valide implique également qu'il est bien formé, mais qu'un code XML bien formé n'est pas nécessairement valide.

En plus des DTD susmentionnées, il existe 2 autres moyens de décrire et de valider les documents XML: XMLSchema et RelaxNG , qui peuvent être plus faciles à utiliser et plus compatibles caractéristiques que DTD.

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

Extrait de Langage de balisage extensible (XML) 1.0 (cinquième édition) - W3C Recommandation 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   si elle respecte certaines contraintes supplémentaires.]

Pour ceux qui préfèrent le code pseudo-codé aux paragraphes après 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

Sur la base de la théorie: " Well Formed " Valide

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 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 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; soit du texte, une expression régulière pour la liste des 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.

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

Voir la 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 " Well Formed " et   " valide ".

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top