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 :
<!-- Prologue -->
<!-- Element racine -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
.
.
</xsd:schema>
Exemple : D'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.
<!ELEMENT Carnet (contact*)>
<!ELEMENT contact (info, phone, city?)>
<!ELEMENT info (nom, prenom)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT prenom (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
<!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.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Carnet">
<xsd:complexType>
<xsd:sequence minOccurs="0">
<xsd:element name="contact" type="contactType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="contactType">
<xsd:sequence>
<xsd:element name="info">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="prenom" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="phone" type="xsd:string"/>
<xsd:element name="city" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
Attention :
Tous les exemples introduits dans ce cours utilisent l'espace de noms XML Schema qualifié avec le préfixe "xsd".