Voir :
Plusieurs développeurs XML n'étaient pas satisfaits des DTDs :
Les Schema XML proposent une méthode de réalisation de modèles, alternative aux DTD.
Cette spécification (ensemble de spécifications) est extrêmement prometteuse, plus moderne de conception que les DTD ; elle devrait permettre d'écrire de façon plus simple des modèles.
À la différence des DTD, qui ne définissaient que les relations entre les différents composants d'un document, les Schema peuvent typer les données et, par là-même, en documenter leur sens et, donc, leur utilisation.
Celles-ci doivent pouvoir être validées par un parser et être mises en jeu pour assister à la création d'information, surtout dans les éditeurs.
Un outil validant se basera sur la représentation en arbre d'objets typés et valués, désérialisée selon le standard Infoset (une représentation commune à tous les outils d'un document XML). Ça permet de rendre le processus de validation indépendant d'une syntaxe de codage d'un document.
Les spécifications sur les Schema sont divisées en deux parties :
Pour mieux comprendre ces deux recommandations, une introduction est aussi proposée [ recommandation XML Schema Part 0: Primer].
D'un point de vue structurel, un Schema se définit comme étant l'assemblage, sous forme d'arbre XML, d'un ensemble de composants. Il en existe 12, dont les principaux sont :
Ils permettent de typer des éléments et des attributs.
Exemple : une adresse de
livraison et une adresse de facturation relèveront toutes deux d'un même
type adresse.
Plusieurs types simples sont prédéfinis ( [ recommandation XML Schema Part 2: Datatypes]).
Une définition de "type" peut être réalisée en restriction ou en
extension d'une définition existante.
Exemple : le type adresse
précédent peut être restreint à des adresses françaises, en jouant
sur la définition de la valeur du code pays.
Une limite du mécanisme
d'extension est que l'on ne peut rajouter des éléments qu'à la
fin d'un type pré-existant et que l'on ne peut pas les modifier
Ils permettent de déclarer, comme avec les DTD, des éléments, avec leurs modèles de contenus, et des attributs.
Ils permettent de définir des modèles qui seront souvent réutilisés, soit pour définir des composants de déclaration, soit pour définir des composants de définition de types. Dans les DTD traditionnelles, ces groupes étaient formalisés par des entités paramètres, qui permettaient, par exemple, de définir tous les composants blocks (paragraphes, listes, remarques, etc.) nécessaires lors de la définition de modèles de contenus.
Un Schema est un modèle d'information défini sous forme électronique (comme l'était une DTD), mais avec des outils de modélisation plus puissants. Le Schema pourra être utilisé comme outil de validation interactif de données, lors de la création de celles-ci, dans un éditeur.