0% ont trouvé ce document utile (0 vote)
124 vues27 pages

Chapitre 3 - XML Schema

Ce document décrit la structure d'un schéma XML. Il explique comment déclarer des éléments, des attributs, les types de données et les occurrences. Il fournit également des exemples pour illustrer ces concepts.

Transféré par

mariem belaid
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
124 vues27 pages

Chapitre 3 - XML Schema

Ce document décrit la structure d'un schéma XML. Il explique comment déclarer des éléments, des attributs, les types de données et les occurrences. Il fournit également des exemples pour illustrer ces concepts.

Transféré par

mariem belaid
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 27

Architecture Orientée Services

Chapitre 3:
(Prérequis)
XML Schema

[email protected]
Objectifs du cours

› Comprendre l’utilité du Schéma XML

› Découvrir la structure d’un Schéma XML

› Comprendre comment déclarer des éléments et des

attributs
2
XML-Schema
• Un document XML-Schema est un document :
▫ respectant la syntaxe XML,
▫ permettant de décrire la structure d’un document XML

• XML-Schema permet en effet de :


▫ spécifier la typologie des données que va contenir le document XML,
▫ gérer une quarantaine de types de données simples,
▫ gérer des types complexes,
▫ gérer les occurrences des données.
XML-Schema
› Exemple de document XML-Schema :
Le document XML :
<?xml version="1.0"?> Référence au fichier schéma XML
<entree xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c3schema.xsd">
<nom>Hamdi Aloulou</nom>
<telephone>0123456789</telephone>
<email>[email protected]
</entree>
Le document XML-Schema correspondant : : Entête
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="entree"> Définition de la balise de type complexe entree
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nom" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="telephone" type="xsd:decimal"/>
<xsd:element name="email"/> Définition de la balise de type String nom
</xsd:sequence> Définition de la balise de type décimale telephone
</xsd:complexType>
</xsd:element> Définition de la balise de email sans préciser le type
</xsd:schema>
5

XML-Schema : structure globale


• Un XML-schema se compose essentiellement de :

▫ Déclaration d’éléments

▫ Déclaration d’attributs

▫ Définitions de types.

• Chaque élément est déclaré avec un type qui peut être

▫ soit un des types prédéfinis,

▫ soit un nouveau type défini dans le schéma.


6

XML-Schema
• L'espace de noms des schémas XML est identifié par l'URL
http://www.w3.org/2001/XMLSchema
• Il est généralement associé, comme dans l'exemple précédent
au préfixe xsd ou à xs

• La structure globale d'un schéma est la suivante. Espace de


noms

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


<xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<!-- Déclarations d'éléments, d'attributs et définitions de types -->
...
</xsd:schema>
7

XML-Schema : Référence à un schéma

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


<entree xsi:noNamespaceSchemaLocation= "schema.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >

Racine de document
9

XML-Schema
Déclaration d’éléments
› Type anonyme :

<xsd:element name="element”>

<xsd:element name="element"> <xsd:element name="element">


<xsd:simpleType> <xsd:complexType>
... ...
</xsd:simpleType> </xsd:complexType>
</xsd:element> </xsd:element>
10

XML-Schema
Déclaration d’éléments

<xsd:element name="element" type="type"/>

› Exemple :
› Type prédéfinis :
– <xsd:element name="title" type="xsd:string"/>
› Type défini dans le schéma :
– <xsd:element name="bibliography" type="Bib"/>
11

XML-Schema
Déclaration d’éléments

❑ Types prédéfinis :
▫ byte, unsignedByte, hexBinary, integer, positiveInteger, int , long , negativeInteger,
unsignedInt, unsignedLong, short, unsignedShort, decimal, float, double…
▫ string, NormalizedString, token
▫ boolean, anyURI, language
▫ time, dateTime, duration, date, gMonth, gYear, gYearMonth, gDay, gMonthDay
▫ ID, IDREF, IDREFS, NMTOKEN, NMTOKENS
› Exemple : <xsd:element name="comment" type="xsd:string"/>
XML-Schema
Déclaration d’éléments

❑ Types complexes :
❑ Exemple : le type de données TypeAdresse se compose de 6 éléments
Numero, Rue1, Rue2, Ville, CP et Pays :
<xs:complexType name="TypeAdresse">
<xs:sequence>
<xs:element name="Numero" type="xs:positiveInteger"/>
<xs:element name="Rue1" type="xs:string"/>
<xs:element name="Rue2" type="xs:string"/>
<xs:element name="Ville" type="xs:string"/>
<xs:element name="CP" type="xs:decimal"/>
<xs:element name="Pays" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="adresse" type="TypeAdresse"/>

Utilisation du type défini dans le schéma


XML-Schema
Déclaration d’éléments
❑ Restriction de type existant :
❑ Exemple : Si on désire représenter un choix Oui/Non (restriction sur
l’attribut enumeration de type de données xsd:string) :

<xs:simpleType name="choixOuiNon">
<xs:restriction base="xs:string">
<xs:enumeration value="oui"/>
<xs:enumeration value="non"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="choix" type="choixOuiNon"/>
14

XML-Schema XML

<book>
Déclaration d’éléments <title>XML langage et
applications</title>
❑ Opérateur de séquence : <author>Alain Michard</author>
<year>2001</year>
❑ Exemple : <publisher>Eyrolles</publisher>
</book>

<xsd:element name="book">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="title" type="xsd:string"/>
<xsd:element name="author" type="xsd:string"/>
<xsd:element name="year" type="xsd:string"/> XML-Schema
<xsd:element name="publisher" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
15

XML-Schema
Déclaration d’éléments XML
<?xml version="1.0" encoding="UTF-8"?>
❑ Opérateur de choix : <publication xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xsi:noNamespaceSchemaLocation="c3schema4.xsd">
❑ Exemple : <book>book1</book>
</publication>

<xsd:element name="publication">
<xsd:complexType>
<xsd:choice>
<xsd:element name="book" type="xsd:string"/>
<xsd:element name="article" type="xsd:string"/>
<xsd:element name="report" type="xsd:string"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>

XML-Schema
XML-Schema
Déclaration d’éléments de type complexe
❑ Récapituler : deux façons de déclaration
1) Définition d’un élément dont le type est déjà déclaré :
<xsd:complexType name="entreeType">

</xsd:complexType>
<xsd:element name="entree“ type="entreeType"/>

2) Définition d’un élément contenant la définition du type :


<xsd:element name="entree">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="telephone" type="xsd:decimal"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
XML-Schema
Occurrence des éléments
› Nous pouvons définir le nombre d'occurrences possibles pour un élément
avec les attributs maxOccurs et minOccurs.

› maxOccurs spécifie le nombre maximum d'occurrences pour un élément

› minOccurs spécifie le nombre minimum d'occurrences pour un élément.

› La valeur par défaut pour maxOccurs et minOccurs est 1!

› maxOccurs peut avoir la valeur « unbounded » pour un nombre indéfini


d’éléments.
18
XML-Schema
Occurrence des éléments

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="entree">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nom" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="telephone" type="xsd:decimal" maxOccurs="unbounded"/>
<xsd:element name="email"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

19
Exercice 1
› Rédiger un Schema XML pour une bibliographie. Cette
bibliographie contient des livres. les informations
nécessaires pour un livre (élément livre) sont :
– son titre général (élément titre) ;
– les noms des auteurs (éléments auteur) ;
– des informations générales sur son édition (élément infosEdition)
comme par exemple
› le nom de l'éditeur (élément editeur),
› le lieu d'édition (élément lieuEdition),
› le lieu d'impression (élément lieuImpression),
› son numéro ISBN (élément ISBN) ;

20
Solution
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="biblio">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="livre" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="titre" type="xsd:string"/>
<xsd:element name="auteur" type="xsd:string" maxOccurs="unbounded"/>
<xsd:element name="infosEdition">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="editeur" type="xsd:string"/>
<xsd:element name="lieuEdition" type="xsd:string"/>
<xsd:element name="lieuImpression" type="xsd:string"/>
<xsd:element name="ISBN" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema> 21
Solution

<?xml version="1.0" encoding="UTF-8"?>


<biblio xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c3ex1.xsd">
<livre>
<titre>titre1</titre>
<auteur>auteur1</auteur>
<auteur>auteur2</auteur>
<infosEdition>
<editeur>editeur1</editeur>
<lieuEdition>lieuEdi1</lieuEdition>
<lieuImpression>lieuImp1</lieuImpression>
<ISBN>1234</ISBN>
</infosEdition>
</livre>
</biblio>

22
XML-Schema
Déclaration d’attributs

<xsd:attribute name="nom_attribut" type="type"/>

❑ Exemple :
❑ <montant devise="Euro" horsTaxe="true" />
❑ L’attribut devise est optionnel et a comme valeur par défaut « Euro » .
L’attribut horsTaxe est obligatoire et a comme valeur par défaut « true ».

<xsd:element name="montant">
<xsd:complexType>
<xsd:attribute name="devise" type="xsd:string" default="EURO"/>
<xsd:attribute name="horsTaxe" type="xsd:bolean" use="required" default="true"/>
</xsd:complexType>
</xsd:element>
Exercice 2

› Modifier le Schéma précédent

– En ajoutant un attribut optionnel « soustitre » à l'élément titre ;

– En modifiant l'élément infosEdition en lui ajoutant un attribut requis

« ISBN » et un attribut optionnel « lieuImpression »

24
Solution
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="biblio">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="livre" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="titre">
<xsd:complexType mixed="true">
<xsd:attribute name="sousTitre" type="xsd:string" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="auteur" type="xsd:string" maxOccurs="unbounded"/>
<xsd:element name="infosEdition">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="editeur" type="xsd:string"/>
<xsd:element name="lieuEdition" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="lieuImpression" type="xsd:string"/>
<xsd:attribute name="ISBN" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element> 25
</xsd:schema>
Solution

<?xml version="1.0" encoding="UTF-8"?>


<biblio xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c3ex2.xsd">
<livre>
<titre>titre1</titre>
<auteur>auteur1</auteur>
<auteur>auteur2</auteur>
<infosEdition ISBN="1234">
<editeur>editeur1</editeur>
<lieuEdition>lieuEdi1</lieuEdition>
</infosEdition>
</livre>
</biblio>

26
Exercice 3 :
› Déduir un Schema XML de ce document XML
<?xml version="1.0" encoding="ISO-8859-1" standalone="no" ?>
<cave xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation='td2.xsd'>
<appellation id="01" nom="Saint Estèphe">
<chateau id="0101">
<nom> Chateau Bellevue</nom>
<adresse> 12 Rue du Pont</adresse>
<téléphone> 0556124321</téléphone>
</chateau>
<chateau id="0102">
<nom> Chateau Le Bernadot</nom>
<adresse> 21 Avenue du Cygne</adresse>
<téléphone> 0556324231</téléphone>
</chateau>
</appellation>
</cave>
Solution
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
<xsd:element name="cave">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="appellation" type="app"

minOccurs="1" maxOccurs="unbounded" />


</xsd:sequence>
</xsd:complexType>
</xsd:element>

Ce type doit être défini dans le schéma


29

Solution
<xsd:complexType name="app">
<xsd:sequence>
<xsd:element name="chateau" minOccurs="0"
maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nom" type="xsd:string" minOccurs="1" maxOccurs="unbounded" />
<xsd:element name="adresse" type="xsd:string" />
<xsd:element name="téléphone" type="xsd:decimal" />
</xsd:sequence>
<xsd:attribute name="id" type="xsd:integer" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:integer" use="required" />
<xsd:attribute name="nom" type="xsd:string"/>
</xsd:complexType>
</xsd:schema>

Vous aimerez peut-être aussi