Structure d'un schéma XML

Un schéma XML est un document XML avec une extension ".xsd".

Rappel

Un schéma XML est un document XML :

  • l'élément racine de l'arbre des éléments est  l'élément " <xsd :schema>" ou "<xs :schema>" ou "<schema>" selon l'espace de noms associé.

  • Ses éléments de haut niveau servent essentiellement à spécifier :

    • les éléments possibles dans un document XML,

    • les attributs associés à ces éléments,

    • la structure du document et les types de données.

Structure générale d'un schéma XML

La structure générale d'un schéma XML est comme suit :

1
<!-- Prologue -->
2
<?xml version="1.0" encoding="UTF-8" ?>
3
<!-- Element racine -->
4
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
5
.
6
.
7
</xsd:schema>

ExempleD'une DTD à un schéma XML

Soit la DTD suivante. Elle servira de base pour proposer un schéma XML pour les documents devant être valides selon cette DTD.

1
<!ELEMENT Carnet (contact*)>
2
<!ELEMENT contact (info, phone, city?)>
3
<!ELEMENT info (nom, prenom)>
4
<!ELEMENT nom (#PCDATA)>
5
<!ELEMENT prenom (#PCDATA)>
6
<!ELEMENT phone (#PCDATA)>
7
<!ELEMENT city (#PCDATA)>

La DTD précédente sert comme base pour comprendre comment les éléments spécifiés peuvent être réécrits dans le formalisme du langage XML Schema. Ce passage illustre le contenu d'un schéma XML et servira comme base pour introduire les concepts d'un schéma XML.

1
<?xml version="1.0"?>
2
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
3
   <xsd:element name="Carnet">
4
      <xsd:complexType>
5
          <xsd:sequence minOccurs="0">
6
                 <xsd:element name="contact" type="contactType"/>
7
          </xsd:sequence>
8
      </xsd:complexType>
9
   </xsd:element>
10
   <xsd:complexType name="contactType">
11
        <xsd:sequence>
12
            <xsd:element name="info">
13
                 <xsd:complexType>
14
                      <xsd:sequence>
15
                           <xsd:element name="nom" type="xsd:string"/>
16
                           <xsd:element name="prenom" type="xsd:string"/>
17
                      </xsd:sequence>
18
                 </xsd:complexType>
19
            <xsd:element name="phone" type="xsd:string"/>
20
            <xsd:element name="city" type="xsd:string" minOccurs="0"/>
21
      </xsd:sequence>
22
    </xsd:complexType>
23
</xsd:schema>

Attention

Tous les exemples introduits dans ce cours utilisent l'espace de noms XML Schema qualifié avec le préfixe "xsd".