193 votes

Quelle est la différence entre le schéma XML et DTD ?

J’ai googlé cette question mais je ne comprends pas clairement ce qui est des schémas et DTD et pourquoi le schéma est plus puissant par rapport à une DTD.

Toute orientation serait très appréciée.

Merci.

149voto

Pascal Thivent Points 295221

À partir des Différences Entre les Dtd et Schéma de la section de la Conversion d'un fichier DTD dans un Schéma de l'article:

La différence essentielle entre les Dtd et XML Schema est que le XML Schéma utilisent une syntaxe XML, alors que Dtd ont une syntaxe unique tenue plus de SGML Dtd. Bien que les Dtd sont souvent critiqué en raison de ce besoin pour apprendre une nouvelle syntaxe, de la syntaxe lui-même est assez laconique. Le contraire est vrai pour les schémas XML, qui sont verbeux, mais également l'utilisation des balises et XML, de sorte que les auteurs de XML doit trouver la syntaxe de XML Schema moins intimidant.

L'objectif de la Dtd a été de conserver un niveau de de la compatibilité avec SGML pour les applications qui veulent convertir SGML Dtd en XML Dtd. Cependant, en accord avec l'un des les objectifs de XML, "laconisme de balisage XML est de minime importance," il n'y a pas de réelle préoccupation avec le maintien de la syntaxe bref.

[...]

Donc, quelles sont les autres différences qui peut être particulièrement important lorsque nous sommes à la conversion d'une DTD? Jetons un coup d'oeil.

En tapant

La différence la plus significative entre les Dtd et schémas XML est la capacité à créer et à utiliser les types de données dans le Schéma en conjonction avec d'élément et d'attribut déclarations. En fait, c'est une différence importante que la moitié de la Recommandation du Schéma XML est consacré à datatyping et XML Schema. Nous couvrons les types de données en détail dans la Partie III de ce livre, "XML Schema Datatypes."

[...]

Contraintes D'Occurrence

Un autre domaine où les Dtd et Schéma diffèrent considérablement avec l'apparition de contraintes. Si vous vous rappelez de nos précédents exemples dans le Chapitre 2, "Schéma de Structure" (ou de votre propre travail avec les Dtd), il y a trois symboles que vous pouvez utiliser pour limiter le nombre d'occurrences d'un élément: *, + et ?.

[...]

Les énumérations

Donc, nous allons dire que nous avions un élément, et nous voulions être en mesure de définir un attribut de taille pour le t-shirt, qui permettait aux utilisateurs de choisir une taille: petite, moyenne ou grande. Notre DTD devrait ressembler à ceci:

<!ELEMENT item (shirt)>
<!ELEMENT shirt (#PCDATA)>
<!ATTLIST shirt
    size_value (small | medium | large)>

[...]

Mais que faire si nous voulions size être un élément? Nous ne pouvons pas le faire avec une DTD. Les dtd ne fournissent pas pour les énumérations dans un texte de l'élément de contenu. Toutefois, en raison de types de données avec le Schéma, lorsque nous avons déclaré l'énumération dans l'exemple précédent, nous avons créé un simpleType appelés size_values qui nous pouvons maintenant utiliser avec un élément:

<xs:element name="size" type="size_value">

[...]

98voto

tanuja nanda Points 221

Les différences entre une Définition de Schéma XML (XSD) et de la Définition de Type de Document (DTD) comprennent:

  • Les schémas XML sont écrits en XML alors que les DTD sont dérivé de SGML de la syntaxe.
  • Les schémas XML définit les types de données pour les éléments et attributs tandis que les DTD ne prend pas en charge les types de données.
  • Les schémas XML permet une prise en charge pour les espaces de noms alors que les DTD ne prend pas en charge.
  • Les schémas XML définit pas. et l'ordre des éléments d'enfant tandis que la DTD n'est pas définit.
  • Les schémas XML peuvent être manipulés votre propre avec DOM XML, mais il n'est pas possible dans le cas de la DTD.
  • à l'aide de schémas XML de l'utilisateur n'a pas besoin d'apprendre une nouvelle langue, mais travailler avec le DTD son difficile pour un utilisateur.
  • Schéma XML permet de sécuriser les données à la communication.e expéditeur peut décrire les données d'une manière que le récepteur aura compris, mais dans le cas de la DTD de données peut être mal compris par le récepteur.
  • Les schémas XML sont extensibles, tandis que la DTD n'est pas extensible.

19voto

troelskn Points 51966

DTD est antérieure à XML et n’est donc pas valide XML lui-même. C’est probablement la principale raison pour l’invention de XSD.

9voto

jk. Points 5780

Une différence est également que, dans une DTD, le modèle de contenu d'un élément est complètement déterminé par son nom, indépendamment de l'endroit où il apparaît dans le document. Donc, dire, vous voulez avoir un name des enfants de l'élément de votre person élément qui a lui-même des éléments d'enfant first et last. Alors, si vous voulez avoir un name élément enfant pour city élément dans le même document, qui aurait également besoin d'avoir des éléments d'enfant first et last. En revanche, le Schéma XML permet de déclarer l'enfant de types d'éléments, localement, dans ce cas, vous pouvez déclarer l' name éléments d'enfant pour les deux person et city séparément, en leur donnant un contenu approprié modèles dans ces contextes.

L'autre différence majeure est la prise en charge des espaces de noms. Depuis les Dtd sont une partie de l'original spécification XML (et héritées de SGML), ils ne sont pas de l'espace de noms courant du tout parce que les espaces de noms XML ont été précisées plus tard. Vous pouvez utiliser des Dtd en combinaison avec des espaces de noms, mais il nécessite quelques contorsions, comme l'a obligé à définir les préfixes dans la DTD et en utilisant seulement les préfixes, au lieu d'être en mesure d'utiliser arbitraire de préfixes.

Pour moi, d'autres différences sont le plus souvent superficielle. Type de soutien pourrait facilement être ajoutés à la Dtd, et la syntaxe est juste la syntaxe. (Je trouve le Schéma XML syntaxe horrible et ne veut plus jamais la main-d'entretenir un Schéma XML, je ne dirais pas que sur les Dtd ou schémas RELAX NG; si j'ai besoin d'un Schéma XML pour une raison quelconque, j'ai l'habitude d'écrire un RELAX NG un et convertir il avec trang.)

7voto

doro Points 513

XML DTD

Une DTD vise à définir la structure d’un document XML. Il définit la structure avec une liste d’éléments juridiques :

XML Schema

XML Schema permet aux auteurs de schéma spécifier que les données de la grandeur de cet élément doivent être numérique ou, encore plus précisément, un entier. Dans l’exemple suivant, j’ai utilisé string :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X