Technologie XML-XSD
Technologie XML-XSD
Technologie XML-XSD
• Introduction
• Objectifs des schémas
• Les types XML
• Les patterns
• Les attributs
• Groupage d’éléments
• Référence à un Schéma XML
Introduction
Un schéma d'un document définit:
les éléments possibles dans le document
les attributs associés à ces éléments
la structure du document et les types de données
Le schéma est spécifié en XML
pas de nouveau langage
balisage de déclaration
utilise un espace de nom xs: (ou xsd:)
Présente de nombreux avantage
types de données personnalisés
La notion d'héritage. Les éléments peuvent hériter du
contenu et des attributs d'un autre élément..
Le support des espaces de nom.
3
Structure de base
</xsd:schema>
4
Déclarations
d'éléments
La base d’un schéma XML:l’élément
<xs:element name="…" type="…"/>
Un élément peut avoir un type:
◦ Simple si sa valeur a un type prédéfini en XML-
SCHEMA (xs:string,xs:int,xs:decimal,xs:double…) ou
une extension de ces types
◦ Complexe s’il contient des sous éléments ou s’il
comporte un attribut
5
Les types simples
boolean
string
Chaine de Caractères • true, false 1,0
byte date
-1 - >126
• 1999-05-31
integer
-126789 – >126789 ID
positiveInteger
• "A212"
1 -> 126789
negativeInteger dateTime
-126789 -> -1 • 1999-05-31T13:20:00.000-05:00
int
-0 -> 126789675 Et beaucoup d’autres
unsignedInt • Short, long,float
0 - > 1267896754
6
Déclaration d’élément (Exemple)
</xsd:complexType>
</xsd:element>
</xsd:schema>
8
Les attributs 2/3
Les éléments à contenu complexe avec attributs
<traduction langue="allemand" dateTraduction="2003-12-01">
<traducteur>Michael</traducteur>
</traduction>
</xs:complexType>
</xs:element>
kamel.khemissi@esprit.ens.tn 9
Les attributs 3/3
L'élément attribute d'un Schema XML peut avoir trois attributs
optionnels : use,default et fixed.
Par exemple, la ligne suivante permet de rendre l'attribut maj
optionnel, avec une valeur par défaut au 11 octobre 2003
10
Les occurences
<xs:element name="biblio">
<xs:complexType>
<xs:sequence>
<xs:element name="livre" minOccurs="1"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
11
Les types complexes
Définition d'objets complexes
◦ <xs:sequence> : collection ordonnée d'éléments typés
◦ <xs:all> : collection non ordonnée d'éléments typés
◦ <xs:choice>: choix entre éléments typés
Exemple
Soit le document xml suivant, écrire le ficher xsd
correspondant
<Adresse>
<nom> …… </nom>
<rue>……….</rue>
<codep>……..</codep>
</Adresse>
12
Exemple
<xs:complexType name="Addresse">
<xs:sequence>
<xs:element name="nom" type="xs:string"/>
<xs:element name="rue" type="xs:string"/>
<xs:element name="ville" type="xs:string"/>
<xs:element name="codep" type="xs:decimal"/>
</xs:sequence>
<xs:attribute name="pays" type= "xs:string "
fixed="FR"/>
</xs:complexType>
13
Séquences d'éléments
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="prénom" type="xsd:string" />
<xsd:element name="dateDeNaissance" type="xsd:date" />
<xsd:element name="adresse" type="xsd:string" />
<xsd:element name="adresseElectronique" type="xsd:string" />
<xsd:element name="téléphone" type="numéroDeTéléphone" />
</xsd:sequence>
</xsd:complexType>
14
Choix d'élément
Si on indiquer soit l'adresse d'une personne, soit son adresse
électronique. il suffit d'utiliser un élément xsd:choice
Ce connecteur a donc les mêmes effets que l'opérateur |
dans une DTD.
<xsd:complexType name="typePersonne">
<xsd:sequence>
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="prénom" type="xsd:string" />
<xsd:element name="dateDeNaissance" type="xsd:date" />
<xsd:choice>
<xsd:element name="adresse" type="xsd:string" />
<xsd:element name="adresseElectronique" type="xsd:string" />
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
15
L'élément all
<xsd:complexType>
<xsd:all>
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="prénom" type="xsd:string" />
<xsd:element name="dateDeNaissance" type="xsd:date" />
<xsd:element name="adresse" type="xsd:string" />
<xsd:element name="adresseElectronique" type="xsd:string" />
<xsd:element name="téléphone" type="numéroDeTéléphone" />
</xsd:all>
</xsd:complexType>
16
Indicateurs d'occurences
17
Héritage de types
Définition de sous-types par héritage
◦ Par extension : ajout d'informations
◦ Par restriction : ajout de contraintes
Possibilité de contraindre la dérivation
Exemple d’extension :
<xs:complexType name="AdressePays">
<xs:complexContent>
<xs:extension base="Adresse">
<xs:sequence>
<xs:element name="pays" type="xsd:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
18
Création de type complexe à partir
de types simples
Il est possible également de créer un type complexe à partir d'un type
simple.
On peut avoir besoin de définir un élément contenant une valeur
simple, et possédant un attribut.
<poids unite="kg">67</poids>
Un tel élément ne peut pas être déclaré de type simple, car il contient
un attribut. Il faut dériver un type complexe à partir du type simple
positiveInteger
<xsd:complexType name="typePoids">
<xsd:simpleContent>
<xsd:extension base="xsd:positiveInteger">
<xsd:attribute name="unite" type="xsd:string" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
19
Les patterns
20
Réutilisation de types
Type simple avec restriction
<xsd:simpleType name="num5">
<xsd:restriction base="xsd:integer">
<xsd:pattern value="\d{5}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="monEntier">
<xsd:restriction base= "nonNegativeInteger >
<xsd:maxExclusive value="100" />
</xsd:restriction> "
</xsd:simpleType>
22
Restriction de type
23
Restriction de type
<xsd:simpleType name="typeMotLangueFrancaise">
<xsd:restriction base="xsd:string">
<xsd:length value="21" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="typeAdresseElectronique">
<xsd:restriction base="xsd:string">
<xsd:pattern value="(.)+@(.)+" />
</xsd:restriction>
</xsd:simpleType>
24
Groupage d’éléments
<xs:group name="TitreAuteurISBN">
<xs:sequence>
<xs:element name="Titre" type="xs:string"/>
<xs:element name="Auteur" type="xs:string"/>
<xs:element name="ISBN" type="num5"/>
</xs:sequence>
</xs:group>
<xs:element name="livre">
<xs:complexType>
<xs:sequence>
<xs:group ref="TitreAuteurISBN"/>
</xs:sequence>
</xs:complexType>
</xs:element>
25
Référence à un Schéma XML
26
Web Services
27