W3C XML Schema

Comparaison avec les DTD

DTD faisant également partie de la recommandation W3C, XML Schema aurait été conçu afin de pallier à un certain nombre de lacunes observées dans les DTD.

XML vs. SGML

La différence essentielle entre W3C XML Schema et DTD est d'ordre syntaxique. En effet, les XSD utilisent une syntaxe XML avec un élément racine xsd:schema. En revanche, la syntaxe des DTD est une syntaxe héritée de SGML et comme nous l'avons vu dans les rappels sur le XML, la syntaxe relativement différente.

Les types de données

Les DTD manquent également de précision dans le typage des données. On retrouve principalement cette lacune au niveau des contenus textuels et des contenus mixtes.

Par exemple, le seul type de données possible pour les contenu textuel des éléments est #PCDATA qui autorise toutes les chaînes de caractères. Il est donc impossible de lui imposer des contraintes.

W3C XML Schema, quant à lui, possède un grand nombre de types de données prédéfinis (string, integer, date, ...). De plus, comme nous l'avons vu dans ce cours, il est possible de personnaliser des types de données à l'aide des restrictions.

Pour les contenus mixtes, les DTD sont encore plus limitées. En effet, il est uniquement possible d'exprimer que le contenu est mixte, sans pouvoir y ajouter de contraintes.

W3C XML Schema comble cette lacune en permettant d'avoir des contenus mixtes aussi précis que les autres contenus.

Des éléments de même nom avec des contenus différents

W3C XML Schema permet d'avoir plusieurs éléments avec des noms identiques mais avec des types de données et donc des contenus différents.

Dans une DTD, un élément a une seule déclaration qui décrit ses contenus possibles pour toutes ses occurrences dans un document.

Les namespace

Les DTD proviennent de SGML et sont antérieures aux espaces de noms. C'est pourquoi elles ne les prennent pas en compte.

A l'inverse, les XSD prennent en compte les espaces de noms. W3C XML Schema déclare d'abord un namespace cible, puis les éléments et les attributs sont déclarés avec leur nom local dans le schéma. Ainsi, un document comprenant des éléments et des attributs provenant de différents namespaces peut encore être validé avec les différents schémas pour ces namespaces.

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Perrine Ravaud, 2013 (Contributions : Stéphane Crozat, les étudiants de NF29) Paternité - Partage des Conditions Initiales à l'IdentiqueRéalisé avec Scenari (nouvelle fenêtre)