Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Technologie XML-XSD

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 27

Insuffisance des DTD

 Pas de types de données à part du texte


(#PCDATA)
 Expression de cardinalités limitée (‘?’,‘*’ et‘+’)
 Syntaxe spécifique (pas XML)
◦ difficile à interpréter
◦ difficile à traduire en schéma objets
 Propositions de compléments
◦ XML-schema duW3C
XML Schéma

• 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

 Comme tout document XML, un Schema XML


commence par un prologue, et a un élément racine.
 <?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
<!-- déclarations d'éléments, d'attributs et de types
ici -->

</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)

 Un élément,dans un schéma,se déclare avec la balise <xsd:element>.Par


exemple

<?xml version="1.0" encoding="ISO-8859-1"?>


<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
<xsd:element name="contacts" type="typeContacts"></xsd:element>
<xsd:element name="remarque" type="xsd:string"></xsd:element>
</xsd:schema>

 contacts est du type typeContacts,type complexe


 Remarque du type String, type simple
 Chaque élément déclaré est associé à un type de
données via l'attribut type. Les éléments pouvant
contenir des élément‐enfants ou possède des attributs
sont dits de type complexe,
7
Les attributs 1/3
 Les éléments à contenu simple avec attributs
<contacts maj="25-11-2007">Ali …</contacts>

<?xml version="1.0" encoding="ISO-8859-1"?>


<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
<xsd:element name="contacts" type="typeContacts" />
<xsd:element name="remarque" type="xsd:string">
<xsd:complexType name="typeContacts">

<!-- déclarations du modèle de contenu ici -->

<xsd:attribute name="maj" type="xsd:date" />

</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:element name="traduction" type=« Typetraduction »>


<xs:complexType name=«Typetraduction »>

// déclaration des sous elements (simple ou complexe)

// déclaration des attributs

</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

<xsd:attribute name="maj" type="xsd:date" use="optional" default="2003-10-11" />

DTD Attribut use Attribut default Commentaire


#REQUIRED required -
"val"
required val
#REQUIRED
#IMPLIED optional -
"val"
optional Val
#IMPLIED

10
Les occurences

 Une bibliothèque contient au moins un livre

<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

 Dans une DTD, nous pouvons déclarer un élément


comme pouvant contenir une suite de sous-éléments
dans un ordre déterminé
 On utilise l'élément xsd:sequence, qui reproduit
l'opérateur , du langage DTD

<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

 Cet élément indique que les éléments enfants doivent


apparaître une fois (ou pas du tout), et dans n'importe
quel ordre.

<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

 Contraintes sur type simple prédéfini


 Utilisation d'expression régulières
Similaires à celles de Per
 Exemple de restriction
<xs:simpleType name="num5">
<xs:restriction base="xs:string">
<xs:pattern value="\d{5}"/>
</xs:restriction>
</xs:simpleType>
 Autres facettes de restriction
xs:mininclusive,xs:maxexclusive,xs:enumeration,xs:length…

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>

 Type complexe (séquence)


<xsd:element name="livre">
<xs:complexType>
<xs:sequence>
<xs:element name="Titre " type="xs:string />
" type="xs:string"/>
<xs:element name="Auteur"
<xs:element name="ISBN" type="num5"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Restriction de type

<xsd:simpleType name="monEntier">
<xsd:restriction base= "nonNegativeInteger >
<xsd:maxExclusive value="100" />
</xsd:restriction> "
</xsd:simpleType>

22
Restriction de type

<xsd:attribute name="jour" type="typeJourSemaine" use="required" />


<xsd:simpleType name="typeJourSemaine">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="lundi" />
<xsd:enumeration value="mardi" />
<xsd:enumeration value="mercredi" />
<xsd:enumeration value="jeudi" />
<xsd:enumeration value="vendredi" />
<xsd:enumeration value="samedi" />
<xsd:enumeration value="dimanche" />
</xsd:restriction>
</xsd:simpleType>

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

 Référence sans espace de noms

 Référence avec espace de noms

26
Web Services

 Contexte & définition


 Architecture orientée services
 Protocoles XML sous-jacents
◦ Invocation (SOAP)
◦ Description (WSDL)
◦ Découverte (UDDI)
 Composition de services
 Plate-formes opérationnelles

27

Vous aimerez peut-être aussi