Exemples de spécification d'éléments XML
Stratégies d'organisation d'un schéma XML
Il existe trois manières d'organiser un schéma XML :
Définition du type de chaque élément (autre que ceux ayant un type XSD prédéfini) en utilisant un type anonyme défini comme contenu de la définition de l'élément.
Définition des types complexes nommés (types simples aussi redéfinis) et les utiliser dans la définition des éléments.
Définition d'éléments en suivant la stratégie 1 et/ou la stratégie 2 et privilégier le référencement.
Exemples
Définition directe
1
<xsd:element name="infos">
2
<xsd:complexType>
3
<xsd:sequence>
4
<xsd:element name="author" type="xsd:string"/>
5
<xsd:element name="version" type="xsd:string"/>
6
<xsd:element name="date" type="xsd:string"/>
7
</xsd:sequence>
8
</xsd:complexType>
9
</xsd:element>
Référencement
1
<xsd:element name="author" type="xsd:string"/>
2
<xsd:element name="version" type="xs:string"/>
3
<xsd:element name="date" type="xsd:string"/>
4
<xsd:element name="infos">
5
<xsd:complexType>
6
<xsd:sequence>
7
<xsd:element ref="author" />
8
<xsd:element ref="version" />
9
<xsd:element ref="date" />
10
</xsd:sequence>
11
</xsd:complexType>
12
</xsd:element>
Séquence d'éléments, groupe et choix
1
<xsd:element name="personne" type="typePersonne"/>
2
<xsd:complexType name="typePersonne">
3
<xsd:sequence>
4
<xsd:group ref="civilite"/>
5
<xsd:element name="dateDeNaissance" type="xsd:date"/>
6
<xsd:choice>
7
<xsd:element name="adresse" type="xsd:string"/>
8
<xsd:element name="email" type="xsd:string"/>
9
</xsd:choice>
10
<xsd:element name="telephone" type="numeroDeTelephone"/>
11
</sequence>
12
</xsd:complexType>
13
<xsd:group name="civilite">
14
<xsd:sequence>
15
<xsd:element name="nom" type="xsd:string"/>
16
<xsd:element name="prenom" type="xsd:string"/>
17
</xsd:sequence>
18
</xsd:group>
Cas d'attribut
1
2
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
3
<xsd:element name="contacts" type="typeContacts"/>
4
<xsd:element name="remarque" type="xsd:string"/>
5
<xsd:complexType name="typeContacts">
6
<!-- content declaration-->
7
<xsd:attribute name="maj" type="xsd:date"/>
8
</xsd:complexType>
9
</xsd:schema>
Groupe d'attributs
1
2
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
3
<xsd:element name="contacts" type="typeContacts"/>
4
<xsd:element name="remarque" type="xsd:string "/>
5
<xsd:complexType name="typeContacts ">
6
<!-- content declaration here-->
7
<xsd:attributeGroup ref="InfosMaj"/>
8
</xsd:complexType>
9
<xsd:attributeGroup name="InfosMaj">
10
<xsd:attribute name="maj" type="xsd:date"/>
11
<xsd:attribute name="auteur" type="xsd:string"/>
12
</xsd:attributeGroup>
13
</xsd:schema>
Constructeur All
1
<xsd:complexType name="typePersonne">
2
<xsd:all>
3
<xsd:element name="nom" type="xsd:string"/>
4
<xsd:element name="prenom" type="xsd:string"/>
5
<xsd:element name="dateDeNaissance" type="xsd:date"/>
6
<xsd:element name="adresse" type="xsd:string"/>
7
<xsd:element name="email" type="xsd:string"/>
8
<xsd:element name="telephone" type="numeroDeTelephone"/>
9
</xsd:all>
10
</xsd:complexType>
En utilisant le constructeur All, l'ordre d'apparitition des sous-éléments d'un élément XML de type "typePersonne" n'est pas important.