Schéma XML

Définition des règles de documents XML

Schéma XML est une spécification W3C finale que l'on peut être implémenter sans craindre de modification ultérieure.

Le but

Schéma fournit un ensemble de règles qui définissent la structure, les éléments du contenu et la sémantique de documents XML.

De quoi est constitué un schéma?

Un schéma est un document XML qui définit les règles d'autres documents XML. C'est une liste de règles et une règle définit:
- des sous-éléments,
- le type de donnée.
Une balise XML est définie par une structure "ElementType", qui contient une liste de sous-éléments.
L'en-tête du schéma doit spécifier un espace de nom.

Comment utiliser un schéma XML?

Exemple d'un document XML et son schéma. Vous aurez besoin d'un programme de validation pour parser le document XML avec le schéma.

Exemple d'un document XML:
<voitures xmlns="x-schema:schema.xml">
    <voiture> 
        <nom>Porshe</nom>                          
            <puissance>2500</puissance>
    <voiture> 
</voiture> 
Le schéma correspondant:
<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
    <ElementType nom='voitures' content='eltOnly'>
        <element type='voiture' />
    </ElementType>
    <ElementType nom='voiture' content='eltOnly'>
        <element type='nom' dt:type='string' />
        <element type='puissance' dt:type='decimal' /> 
    </ElementType> 
</Schema> 

Explications:

<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">

Déclare l'espace de nom et les types (datatypes).

<ElementType name='voitures' content='eltOnly'>

Déclare les types, conditions et sous-éléments de l'élément "voitures".

<element type='voiture' />

Ceci est équivalent à <element type='voiture'> </element>, et cela définit quels éléments sont sous-éléments de l'élément "voitures".
On peut ajouter d'autres sous-éléments comme:
<element type='van' />
<element type='camion' />
et ainsi de suite...

<ElementType name='voiture' content='eltOnly'>

Déclare un élément avec ses sous-éléments: nom, puissance...

<element type='nom' dt:type='string' />
<element type='puissance' dt:type='decimal' />

Déclare deux éléments et le type du contenu, texte ou nombre.

Schéma et DTD

DTD à le même rôle que schéma, mais avec des inconvénients:

Liens