Cours Définir la grammaire pour une instance de document XML
3 Validation d’un document XML avec les DTD ou XMLSchéma
3.7 Déclaration d’éléments simples avec les XMLSchéma
La déclaration d'un élément en XMLSchéma se fait avec la balise <xsd:element>. La syntaxe de déclaration d'un élément est la suivante:
<xsd:element name="NOM_ELEMENT" type="TYPE_ELEMENT" />.
En fonction de la nature de l'élément (simple ou complexe), nous pouvons avoir plusieurs cas.
1. Pour un élément simple sans restrection:
<xsd:element name="remarque" type="xsd:string" />: ici, on déclare un élément qui a pour nom remarque et dont le type est "chaîne de caractère".
2. Pour un élément simple avec restriction, nous pouvons avoir plusieurs cas:
2. a): élément dont les valeurs sont fixées sur une intervalle.
Exemple: si on veut déclarer un élément "note" dont les valeurs sont comprises entre 0 et 20, on fait:
<xsd:element name="note">
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="20"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
2.b) Type énuméré: élément dont les valeurs possibles sont précisées
Exemple: si on veut déclarer un élément "réponse" dont les seules valeurs possibles sont "vrai" ou "faux"
<xsd:element name="reponse">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="vrai"/>
<xsd:enumeration value="faux"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
2.c) Type énuméré avec patern
Exemple: pour déclarer un élément "année" dont les valeurs possibles sont 1999, 2000, 2001 ou 2002
<xsd:element name="annee">
<xsd:simpleType >
<xsd:restriction base="xs:integer">
<xsd:pattern value="1999"/>
<xsd:pattern value="2000"/>
<xsd:pattern value="2001"/>
<xsd:pattern value="2002"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
On peut aussi:
<xsd:element name="annee">
<xsd:simpleType >
<xsd:restriction base="xs:integer">
<xsd:pattern value="1999|2000|2001|2002"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
On peut aussi:
<xsd:element name="annee">
<xsd:simpleType >
<xsd:restriction base="xs:integer">
<xsd:pattern value="1999|200[0-2]"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
2. d) On peut aussi faire des restrictions sur la longueur des éléments. Par exemple si on veut fixer la taille d'un élément "password" à 5, on peut:
<xsd:element name="password">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:length value="5"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
2. e) On peut fixer la longueur d'un élément entre deux valeurs. Par exemple, si on veut que la longueur de l'élément "password" soit comprise entre 5 et 12, on peut:
<xsd:elementname="password">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="5"/>
<xsd:maxLength value="12"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>