SlideShare une entreprise Scribd logo
XSD
XML Schema Definition
Objectifs
Définition d'un vocabulaire et d'une grammaire XML.
Apprendre le langage XSD
2
XML
• L’objectif de XSD
• Types simples en XSD
• Types complexes en XSD
• Héritage
• Contraintes d’intégrité
• Les espaces de noms XML
Plan
3
XML
Introduction
Application « A » Application « B »
<produit>
<id> 123</id>
<produit>
<XML> <XML>
<product>
<ID> 123</ID>
<name>shoes</name>
<product>
XML
4
Introduction
But :Définir la structure d’un document XML pour que
tous les intermédiaires suivent le même modèle grâce
aux schemas XSD (XML Schema Definition).
Un schéma XML définit:
Les éléments permis dans le document
 Les attributs associés à ces éléments
 La structure du document et les types de données
XML
5
• alternative au DTD
• recommandations W3C
• Issu de XML
Présentation de XSD
Tous les outils (validateurs, parseurs, processeurs, ...) mais
également les langages (XSLT, XPath, ...) qui permettent de travailler
les documents XML sont utilisables sur des XSD.
XML
6
<bibliotheque>
<livre>
<titre>The Game</titre>
<auteur>Agatha</auteur>
<ref>Policier-C-15</ref>
</livre>
<livre>
<titre>RESTEasy</titre>
<auteur>Arthur</auteur>
<auteur>Martin</auteur>
<ref>Informatique-A-1</ref>
</livre>
</bibliotheque>
<!ELEMENT bibiliotheque (livre+)>
<!ELEMENT livre (titre, auteur+, ref)>
<!ELEMENT titre (#PCDATA)>
<!ELEMENT auteur (#PCDATA)>
<!ELEMENT ref (#PCDATA)>
Contenu XML DTD associé
Exemple d’une définition DTD
XML
7
DTD XSD
Nouveau langage
Syntaxe particulière
Langage issu de XML
Syntaxe XML
Types de données limités
PCDATA , CDATA
Types de données plus riches
integer, byte, string, float, …
Nombre d'occurrence très
général
*, + et ?
Nombre d’occurrence plus
précis
[1,100] , ]2,100]
Aucune contrainte sur le
contenu des éléments/attributs
Définition des contraintes sur le
contenu des éléments/attributs
mot de passe de longueur 8
email contenant le caractère @
Extensible
DTD vs XSD
XML
8
<produit quantite= "80">
<id> 123</id>
<produit>
XML
Document XML bien formé
XSD
Document XML valide
Respect de la syntaxe XML Respect des règles XSD
Vers un document XML valide
XML
9
Bien formé
Valide
Un document XML est valide si et seulement s’il est bien formé
Vers un document XML valide
Respect de la syntaxe XML
Respect des règles XSD
XML
10
 Un document schema XML est défini dans un fichier dont l’extension
est *.xsd
 Comme tout document XML, un schéma XML commence par la
prologue XML et a un élément racine
 L’élément <xs:schema> est la racine de tout document Schema
XML
<?xml version="1.0" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
…
</xs:schema>
Structure d’un schema XML
Fichier XSD
XML
11
Déclaration des éléments
<xs:element name="theName" type="theType" />
Valeur fixée
<xs:element name="firstName" type="xs:string" default="Mickael" />
Valeur par défaut
<xs:element name="firstName" type="xs:string" fixed="Mickael" />
L’attribut default de l’élément firstName
précise une valeur au cas où elle serait
absente
L’attribut fixed de l’élément firstName
précise une valeur et ne peut être modifiée
XML
12
Déclaration des attributs
<xs:attribute name="theName" type="theType" use="required" />
(required ou optional)
<xs:attribute name="remark" type="xs:string" default="Remarque à préciser" />
Valeur fixée
Valeur par défaut
L’attribut default de l’attribut remark précise une valeur
au cas où elle serait absente
<xs:attribute name="remark" type="xs:string" fixed="Remarque à préciser" />
L’attribut fixed de l’attribut remark précise une valeur et
ne peut être modifiée
XML
13
Les types de données 1/2
 Les attributs sont de types simples
 Les éléments sont de:
oTypes simples
oTypes complexes
un élément de type simple ne peut comporter ni attributs,
ni de sous éléments
un élément de type complexe permet d’exprimer des
sous éléments et permet également d’y associer des
attributs
XML
14
Eléments de type simple Eléments de type complexe
<film/>
<film>Gladiator</film>
<film type="action " />
<film>
<annee>2000</annee>
<realisateur>R.Scott</realisateur>
</film>
<film type= "action ">
Gladiator
</film>
<film type= "action " >
<annee>2000</annee>
<realisateur>R.Scott</realisateur>
</film>
Les types de données 2/2
XML
15
Les principaux types simples prédéfinis
• xs:int
• xs:boolean
• xs:string
• xs:long
• xs:float
• xs:positiveInteger : 1, 2, …
• xs:negativeInteger : …, -2, -1
• xs:nonNegativeInteger : 0, 1, 2, …
• xs:nonPositiveInteger : …, -2, -1, 0
• xs:unsignedLong : 0, 1, … 18446744073709…
Les types simples 1/8
XML
16
Les types simples dérivés
 On peut créer de nouveaux types simples en dérivant des types simples
existants (prédéfinis ou dérivés)
 Un nouveau type simple peut être défini par restriction ou extension
Exemple:
o L’age est un entier compris entre 1 et 100
o L’email est une chaîne de caractères qui doit contenir le caractère @
Type simple Restriction Nouveau type simple
Les types simples: restriction
XML
17
 Les restrictions sur les types simples permettent de dériver de
nouveaux types à partir de types existants
 Les restrictions passent par l’utilisation des facettes
 Une facette permet de définir des contraintes sur le nouveau type à
créer
Les types simples dérivés
Les types simples: restriction
XML
18
La création de nouveaux types simples est réalisée avec la balise
<xs:simpleType>
<xs:simpleType name="newType" >
...
</xs:simpleType>
 La restriction est exprimée avec la balise <xs:restriction>
<xs:simpleType name="newType" >
<xs:restriction base="type" >
...
</xs:restriction>
</xs:simpleType>
Les types simples dérivés
Nouveau
Type simple
Type simple
de départ
Les types simples: restriction
XML
19
 length: permet de définir le nombre exact de caractères d'une chaîne.
maxLength: permet de définir le nombre maximum de caractères d'une chaîne.
 minLength: permet de définir le nombre minimum de caractères d'une chaîne.
 totalDigits: permet de définir le nombre exact de chiffres qui composent un nombre.
 maxExlusive: permet de définir une valeur maximale exclusive.
 maxInclusive: permet de définir une valeur maximale inclusive.
 minExlusive: permet de définir une valeur minimale exclusive.
 maxInclusive: permet de définir une valeur minimale inclusive.
enumeration: permet d’énumérer la liste des valeurs possibles.
 pattern: définit la séquence exacte de caractères pouvant être acceptés.
 whiteSpace: permet de gérer les espaces blanc.
Les principales facettes
XML
20
 Facette length
 Facette minLength, maxLength
<xs:element name=" password" type ="passwordType" />
<xs:simpleType name ="passwordType" >
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="password" type="passwordType" />
<xs:simpleType name =" passwordType" >
<xs:restriction base="xs:string">
<xs:minLength value="5"/>
<xs:maxLength value="8"/>
</xs:restriction>
</xs:simpleType>
Les principales facettes
Les types simples: restriction
XML
21
 Facette totalDigits
<xs:element name=" zip" type ="zipType" />
<xs:simpleType name ="zipType" >
<xs:restriction base="xs:positiveInteger">
<xs:totalDigits value="4"/>
</xs:restriction>
</xs:simpleType>
Les principales facettes
Les types simples: restriction
XML
22
 Facette minLInclusive, minExclusive, maxInclusive, maxExclusive
<xs:element name=" age" type ="ageType" />
<xs:simpleType name="ageType">
<xs:restriction base="xs:int">
<xs:minInclusive value="1" />
<xs:maxInclusive value="100" />
</xs:restriction>
</xs:simpleType>
Les principales facettes
Les types simples: restriction
XML
23
<xs:element name=" sexe" type ="sexeType" />
<xs:simpleType name="sexeType" >
<xs:restriction base="xs:string">
<xs:enumeration value="homme" />
<xs:enumeration value="femme" />
<xs:enumeration value="indéterminé" />
</xs:restriction>
</xs:simpleType>
 Facette enumeration
Trois
valeurs sont
autorisées
Les principales facettes
Les types simples: restriction
XML
24
 Facette pattern
<xs:element name="email" type ="emailType" />
<xs:simpleType name="emailType">
<xs:restriction base="xs:string">
<xs:pattern value= " [a-z]*@[a-z]* " />
</xs:restriction>
</xs:simpleType>
Toutes les chaînes de
caractères de type
emailType doivent
respecter ce pattern
[a-z]* 0 ou plusieurs lettre(s)
([a-z][A-Z])+ 1 ou plusieurs paires de
lettres min et maj
sToP, Stop,STOP,stop
male|female Liste de choix
[a-zA-Z0-9]{8} 8 caractères (chiffre, lettre
min, lettre maj)
Les principales facettes
Les types simples: restriction
XML
25
 L’élément xs:list définit une liste de valeurs d’un même type simple.
Le type simple de base est donné dans l’attribut itemType.
 Il ne s’agit pas de listes générales comme dans certains langages de
programmation.
Il s’agit uniquement de listes de valeurs séparées par des espaces.
Liste de valeurs d’un même type simple
Les types simples: extension list
XML
<xs:element name="FootballTeams" type="FootballTeamsType" />
<xs:simpleType name=" FootballTeamsType " >
<xs:list itemType="xs:string" />
</xs:simpleType>
Fichier XSD
<?xml version ="1.0" ?>
<FootballTeams>EST CA ESS CSS ST CAB</FootballTeams>
Fichier XML
26
Union de types simples (Exemple)
Les types simples: extension union(1/2)
XML
<xs:element name="jeansSize" type ="sizeType" />
<xs:simpleType name="sizeType" >
<xs:union memberTypes ="xs: positiveInteger xs:string" />
</xs:simpleType>
Fichier XSD
 L’élément xs:union définit un nouveau type simple dont les valeurs sont celles
des types listés dans l’attribut memberTypes
<?xml version ="1.0"?>
<jeanSize>40</jeanSize>
<jeanSize>medium</jeanSize>
Fichier XML
27
 Un élément de type complexe peut contenir d'autres éléments
et / ou des attributs
 Quatre combinaisons d'éléments complexes sont à distinguer
o Eléments vides qui ne contiennent que des attributs
o Eléments de type simple qui contiennent des attributs
o Eléments qui peuvent contenir des sous éléments
o Eléments qui contiennent des attributs et des sous éléments
 La création d'un éléments de type complexe est réalisée avec la balise
<xs:complexType>
<xs:complexType name="newType" >
...
</xs:complexType>
Les types complexes 1/8
XML
28
Eléments vides qui ne contiennent que des attributs
<xs:element name="child" type ="childType" />
<xs:complexType name ="childType" >
<xs:attribute name="remark" type="xs:string" use="required" />
<xs:attribute name="old" type= "xs:int" />
<xs:attribute name="sexe" type="xs:string" />
</xs:complexType>
<child remark="He's too much" old="3" sexe="homme"/>
Les types complexes 2/8
XML
29
Eléments qui peuvent contenir des sous éléments
<person>
<name>…</name>
<firstName>…</firstName>
<old>…</old>
<email>…</email>
</person>
<xs:element name="person" type="personType " />
<xs:complexType name="personType " >
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="firstName" type="xs:string" />
<xs:element name="old" type="ageType" />
<xs:element name="email" type="emailType" />
</xs:sequence>
</xs:complexType>
sequence exprime que les
sous éléments doivent
apparaître dans l’ordre
spécifié
Les types complexes 3/8
XML
30
 XSD permet d'exprimer trois sortes d'indicateurs d'ordre:
<xs:complexType name= "personType">
<xs:all>
<xs:element name="name" type="xs:string" />
<xs:element name="firstName" type="xs:string" />
<xs:element name="old" type="ageType" />
<xs:element name="email" type=“emailType" />
</xs:all>
</xs:complexType>
<person>
<name>…</name>
<email>… </email>
<old>…</old>
<firstName>…</firstName>
</person>
 all tous les sous éléments peuvent apparaître dans n'importe quel ordre
Indicateurs d’ordre
• sequence
• all
• choice
Eléments qui peuvent contenir des sous éléments
Les types complexes 4/8
XML
31
choice exprime qu'un seul élément parmi tous les sous éléments peut
apparaître
<xs:complexType name= "personneType">
<xs:sequence>
<xs:element name="nom" type="xs:string" />
<xs:element name=“prenom" type="xs:string" />
<xs:element name=“age" type="ageType" />
<xs:choice>
<xs:element name=“adresse" type= “xs:string" />
<xs:element name=“adresseElectronique" type= “xs:string" />
</xs:choice>
<xs:sequence>
</xs:complexType>
<personne>
<nom>…</nom>
<prenom>…</prenom>
<age>…</age>
<adresse>…</adresse>
</person>
Indicateurs d’ordre
Eléments qui peuvent contenir des sous éléments
Les types complexes 5/8
XML
32
 maxOccurs : précise le nombre d'occurrence maximum
 minOccurs : précise le nombre d'occurrence minimum
 Si les valeurs de maxOccurs ou minOccurs ne sont pas explicitement
précisées, la valeur par défaut est de 1
 Pour définir une valeur infinie, fixer la valeur à unbounded
<xs:complexType name= "personType">
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="firstName" type="xs:string" />
<xs:element name="old" type="ageType" minOccurs="0" />
<xs:element name="email" type= " emailType" minOccurs="2"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
old est un élément
optionnel
Indicateurs d’occurence
Eléments qui peuvent contenir des sous éléments
Les types complexes 6/8
XML
33
Eléments qui peuvent contenir des sous éléments
 Même si on a un seul élément fils, on doit utiliser un indicateur d’ordre
<xs:complexType name= "personType">
<xs:sequence>
<xs:element name="name" type="xs:string" />
</xs:sequence>
</xs:complexType>
Les types complexes 7/8
XML
34
<xs:complexType name= "personType">
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="firstName" type="xs:string" />
<xs:element name="old" type="ageType" />
<xs:element name="email" type= "emailType" />
</xs:sequence>
<xs:attribute name="id" type="xs:int" />
</xs:complexType>
<person id ="139" >
<name>…</name>
<firstName>…</firstName>
<old>…</old>
<email>…</email>
</person>
Eléments qui peuvent contenir des sous éléments et des
attributs
Les types complexes 8/8
XML
35
Héritage d’un élément simple
L’héritage par extension
<poids>67</poids>
extension
<xs:element name ="poids" type ="poidsType" />
<xs:complexType name ="poidsType" >
<xs:simpleContent>
<xs:extension base="xs:integer">
<attribute name="unite" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<poids unite=“kg“ >67</poids>
 Possibilité de définir un nouveau type sur la base d'un type simple existant
 Utilisation de la balise <xs:simpleContent>
XML
36
 Possibilité de définir un nouveau type complexe sur la base d'un
type complexe existant
Héritage d’un élément complexe
<adress>
<receiver></receiver>
<street></street>
<city></city>
</address>
<adressUS>
<receiver></receiver>
<street></street>
<city></city>
<state></state>
<zip></zip>
</adressUS>
Type
complexe
existant
Nouveau type
complexe
L’héritage par extension
XML
37
 Utilisation de la balise <xs:complexContent>
<xs:complexType name="addressType">
<xs:sequence>
<xs:element name="receiver" type="xs:string" />
<xs:element name="street" type="xs:string" />
<xs:element name="city" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="usAddressType">
<xs:complexContent>
<xs:extension base="addressType">
<xs:sequence>
<xs:element name="state" type="xs:string" />
<xs:element name="zip" type="xs:string" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Le type addressType
définit trois sous
éléments en
séquence
Le type
usAddressType
propose une
extension
avec deux nouveaux
sous éléments en
séquence
Héritage d’un élément complexe
L’héritage par extension
XML
38
Héritage d’un élément simple
L’héritage par restriction
Restriction: poidsBebe <10
<poidsBebe unite =“kg“ >3</poidBebe>
<poids unite=“kg“ >67</poids>
 Possibilité de définir un nouveau type sur la base d'un type simple existant
en réduisant l’espace des valeurs possibles.
 Utilisation de la balise <xs:simpleContent>
XML
39
Héritage d’un élément simple
L’héritage par restriction
<xs:element name ="poidsBebe" type ="poidsBebeType" />
<xs:complexType name ="poidsBebeType" >
<xs:simpleContent>
<xs:restriction base=" poidsType ">
<xs:minInclusive value="2"/>
<xs:maxExclusive value="10"/>
</xs:restriction>
</xs:simpleContent>
</xs:complexType>
XML
40
 Possibilité de définir un nouveau type complexe en réduisant les
valeurs d'un type complexe existant
Héritage d’un élément complexe
<adress>
<receiver></receiver>
<street></street>
<city></city>
</address>
<adressUS>
<street></street>
<city></city>
</adressUS>
Type
complexe
existant
Nouveau type
complexe
L’héritage par restriction
XML
41
 Utilisation de la balise <xs:complexContent>
<xs:complexType name="addressType">
<xs:sequence>
<xs:element name="receiver" type="xs:string" />
<xs:element name="street" type="xs:string" />
<xs:element name="city" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="usAddressType">
<xs:complexContent>
<xs:restriction base="addressType">
<xs:sequence>
<xs:element name="street" type="xs:string" />
<xs:element name="city" type="xs:string" />
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
Le type addressType
définit trois sous
éléments en
séquence
Le type
usAddressType
propose une
restriction en
éliminant le sous
élément "receiver"
Héritage d’un élément complexe
L’héritage par restriction
XML
42
Types d’héritage
Restriction Extension
<complexType>
<complexContent>
<restriction base="type">
allowed element content
allowed attributes
</restriction>
</complexContent>
</complexType>
<complexType>
<complexContent>
<extension base="type">
extra element content
extra attributes
</extension>
</complexContent>
</complexType>
<complexType>
<simpleContent>
<restriction base="type">
facet restrictions
allowed attributes
</restriction>
</simpleContent>
</complexType>
<complexType>
<simpleContent>
<extension base="type">
extra attributes
</extension>
</simpleContent>
</complexType>
XML 43
Contraintes d’intégrité
Contrainte d’unicité
<cinema>
<film id="f23"> Gladiator </film>
<film id="f12"> Avatar </film>
</cinema>
<xs:element name="cinema" type="cinemaType">
<xs:key name="film.id">
<xs:selector xpath="film"/>
<xs:field xpath="@id"/>
</xs:key>
</xs:element>
Deux éléments film dans le même élément cinema ne peuvent pas
avoir la même valeur d’attribut « id »
Similaire à la déclaration d’une valeur unique
La valeur qui détermine l’unicité doit toujours exister et ne peut pas
être nulle.
Cette valeur peut être constituée de plusieurs champs: il suffit pour
cela de mettre plusieurs éléments xs:field dans l’élément xs:key.
La contrainte définie peut être donnée par des éléments et pas
seulement par des attributs.
XML
44
Contraintes d’intégrité
Contrainte d’existence
<salle nom="St André des Arts">
<seance ref_film="f12"> 14:30 </seance>
<seance ref_film="f23"> 17:00 </seance>
</salle>
<xs:element name="salle" type="salleType">
<xs:keyRef name="refFilm" refer="film.id">
<xs:selector xpath="seance"/>
<xs:field xpath="@ref_film"/>
</ xs:keyRef >
</xs:element>
L’attribut ref_film de seance est une clé étrangère définie dans l’élément salle
ref_film fait référence à une clé définie nommée film.id
Une contrainte d’existence spécifie que dans le contenu d’un élément donné, il
doit exister un élément ayant une propriété fixée.
XML
45
Fusion des 2 documents
<entreprise>
<departement>
<id>D001</id>
<nom>Marketing</nom>
<employe>
<id>E0000001</id>
<nom>Smith</nom>
<prenom>John </prenom>
</employe>
</departement>
</entreprise>
Confusion sur le
sens des éléments
id et nom
<employe>
<id>E0000001</id>
<nom>Smith</nom>
<prenom>John </prenom>
</employe>
<departement>
<id>D001</id>
<nom>Marketing</nom>
</departement>
Espace de noms XML 1/6
Problème
XML
46
Distinguer les éléments et les attributs de différentes documents
XML qui ont le même nom
Objectif
Solution Utiliser les espaces de noms XML
Fusion des 2 documents
<dep:departement>
<dep:id>D001</dep:id>
<dep:nom>Marketing</dep:nom>
<emp:employe>
<emp:id>E0000001</emp:id>
<emp:nom>Smith</emp:nom>
<emp:prenom>John </emp:prenom>
</emp:employe>
</dep:departement>
<emp:employe>
<emp:id>E0000001</emp:id>
<emp:nom>Smith</emp:nom>
<emp:prenom>John </emp:prenom>
</emp:employe>
<dep:departement>
<dep:id>D001</dep:id>
<dep:nom>Marketing</dep:nom>
</dep:departement>
Espace de noms XML 2/6
XML
47
Un espace de nom associe un préfixe à un URI
L’URI (Uniform Resource Identifier) sert à identifier un espace de noms
Le préfixe est une chaîne utilisée pour référencer l’espace de nom dans
un fichier XML.
employe
id
nom
departement
id
nom
URI: http://employe.com
Préfixe: emp
URI: http://departement.com
Préfixe: dep
Espace de noms XML 3/6
Déclaration des espaces de noms
XML
48
<element xmlns:prefix="URI">
<emp:employe xmlns:emp="http://emloye.com">
<emp:id>E0000001</emp:id>
<emp:nom>Smith</emp:nom>
<emp:prenom>John </emp:prenom>
</emp:employe>
<dep:departement xmlns:dep="http://departement.com">
<dep:id>D001</dep:id>
<dep:nom>Marketing</dep:nom>
</dep:departement>
Espace de noms XML 4/6
Déclaration des espaces de noms
La déclaration de l'espace de noms se fait au moyen de l'attribut xmlns
XML
49
<emp:employe xmlns:emp="http://emloye.com">
<emp:id>E0000001</emp:id>
<emp:nom>Smith</emp:nom>
<emp:prenom>John </emp:prenom>
</emp:employe>
<dep:departement xmlns:dep="http://departement.com">
<dep:id>D001</dep:id>
<dep:nom>Marketing</dep:nom>
</dep:departement>
<entreprise xmlns:dep="http://departement.com"
xmlns:emp="http://emloye.com" >
<dep:departement>
<dep:id>D001</dep:id>
<dep:nom>Marketing</dep:nom>
<emp:employe>
<emp:id>E0000001</emp:id>
<emp:nom>Smith</emp:nom>
<emp:prenom>John </emp:prenom>
</emp:employe>
</dep:departement>
</entreprise>
Fusion des 2 documents
Espace de noms XML 5/6
Déclaration des espaces de noms
XML
50
Espace de nom pour XSL
Espace de nom pour XSD
<?xml version="1.0" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
…
</xs:schema>
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
…
</xsl:stylesheet >
Déclaration des espaces de noms
Espace de noms XML 6/6
XML
51
schema
element
complexType
string
integer
boolean
XML Schema Namespace
http://www.w3.org/2001/XMLSchema
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www. departement.org"
targetNamespace="http://www. departement.org">
<xs:element name="departement" type="depType"/>
<xs:complexType name="depType">
<xs:sequence>
<xs:element name="id" type="xs:integer"/>
<xs:element name="nom" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
departement
id
nom
departemenType
Document
XML Schema
Target Namespace
http://www.departement.org
<departement>
<id>D001</id>
<nom>Marketing</nom>
</departement>
Document XML
Les éléments et les types appartenant au XML Schema Namespace sont
utilisés pour écrire un document XSD
Les nouveaux types et élément déclarés dans le document XSD
appartiennent à un nouveau espace de nom: c’est le tragetNamespace
Le targetNamesapce est utilisé par le fichier
XML pour la validation
Espace de noms XSD 1/4
XML
52
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:dep="http://www.departement.org"
targetNamespace="http://www.departement.org"
elementFormDefault="qualified">
<xs:complexType name="depType" >
<xs:sequence>
<xs:element name="id" type="xs:integer"/>
<xs:element name="nom" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="departement" type=" dep:depType "/>
</xs:schema>
xmlns:xs espace de nommage des éléments et types XSD
xmlns:dep espace de nommage des nouveaux types définis par le
programmeur
targetNamespace espace de nommage du schema XSD cible
C’est l’espace de noms qui sera référé par le fichier XML
Fichier XSD
Espace de noms XSD 2/4
Espaces de noms XSD
XML
53
XSD
XML XML XML
XML Schema
XML Schema Instance XML Schema Instance XML Schema Instance
Espace de noms XSD 3/4
Association d’un fichier XML à un fichier XSD
XML
54
xmlns Espace de noms des éléments utilisés dans le fichier XML
xmlns:xsi Il s’agit d’une instance de schema XSD
xsi:schemaLocation Localiser le document XSD
<departement xmlns="http://www.departement.org"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.departement.org departement.xsd">
Fichier XML
Espace de noms XSD 4/4
Association d’un fichier XML à un fichier XSD
XML
55
En résumé
• XSD est un langage permettant la définition de la
structure d’un document XML
• XSD offre une richesse de types
 Types simples, types complexes
 Restriction, extension
• L’association d’un fichier XML à un fichier XSD passe
par l’utilisation des espaces de noms.
XML
56
Références
• http://www.liafa.jussieu.fr/~carton/Enseignement/XML/Cours
/Schemas/
• http://www.grappa.univ-
lille3.fr/~torre/Enseignement/Cours/XML/xmlschema.php
• http://www.teluq.ca/inf6450/mod1/chapitre4.xml
57
XML

Contenu connexe

Dernier

COUPROD Une méthode nationale commune à l’ensemble des filières herbivores
COUPROD Une méthode nationale commune à l’ensemble des filières herbivoresCOUPROD Une méthode nationale commune à l’ensemble des filières herbivores
COUPROD Une méthode nationale commune à l’ensemble des filières herbivores
Institut de l'Elevage - Idele
 
Reconquête de l’engraissement du chevreau à la ferme
Reconquête de l’engraissement du chevreau à la fermeReconquête de l’engraissement du chevreau à la ferme
Reconquête de l’engraissement du chevreau à la ferme
Institut de l'Elevage - Idele
 
JTC 2024 - Approche collective de la santé
JTC 2024 - Approche collective de la santéJTC 2024 - Approche collective de la santé
JTC 2024 - Approche collective de la santé
Institut de l'Elevage - Idele
 
Leviers d’adaptation au changement climatique, qualité du lait et des produit...
Leviers d’adaptation au changement climatique, qualité du lait et des produit...Leviers d’adaptation au changement climatique, qualité du lait et des produit...
Leviers d’adaptation au changement climatique, qualité du lait et des produit...
Institut de l'Elevage - Idele
 
Accompagner les éleveurs dans l'analyse de leurs coûts de production
Accompagner les éleveurs dans l'analyse de leurs coûts de productionAccompagner les éleveurs dans l'analyse de leurs coûts de production
Accompagner les éleveurs dans l'analyse de leurs coûts de production
Institut de l'Elevage - Idele
 
JTC 2024 - Atelier APaChe-Pâturage des arbres par les chèvres
JTC 2024 - Atelier APaChe-Pâturage des arbres par les chèvresJTC 2024 - Atelier APaChe-Pâturage des arbres par les chèvres
JTC 2024 - Atelier APaChe-Pâturage des arbres par les chèvres
Institut de l'Elevage - Idele
 
BeeBOP diaporama webinaire : Et si l’IA permettait de compléter l’observatio...
BeeBOP diaporama webinaire : Et si l’IA permettait de compléter l’observatio...BeeBOP diaporama webinaire : Et si l’IA permettait de compléter l’observatio...
BeeBOP diaporama webinaire : Et si l’IA permettait de compléter l’observatio...
Institut de l'Elevage - Idele
 
1er webinaire INOSYS Réseaux d’élevage Ovins Viande
1er webinaire INOSYS Réseaux d’élevage Ovins Viande1er webinaire INOSYS Réseaux d’élevage Ovins Viande
1er webinaire INOSYS Réseaux d’élevage Ovins Viande
Institut de l'Elevage - Idele
 
Accompagner les porteurs de projets en transformation fermière
Accompagner les porteurs de projets en transformation fermièreAccompagner les porteurs de projets en transformation fermière
Accompagner les porteurs de projets en transformation fermière
Institut de l'Elevage - Idele
 
RAPPORT DE STAGE sur CHANTIER BTP (by BR Engineering ) (1) (1).pdf
RAPPORT DE STAGE  sur CHANTIER  BTP (by BR Engineering ) (1) (1).pdfRAPPORT DE STAGE  sur CHANTIER  BTP (by BR Engineering ) (1) (1).pdf
RAPPORT DE STAGE sur CHANTIER BTP (by BR Engineering ) (1) (1).pdf
fatima413951
 

Dernier (10)

COUPROD Une méthode nationale commune à l’ensemble des filières herbivores
COUPROD Une méthode nationale commune à l’ensemble des filières herbivoresCOUPROD Une méthode nationale commune à l’ensemble des filières herbivores
COUPROD Une méthode nationale commune à l’ensemble des filières herbivores
 
Reconquête de l’engraissement du chevreau à la ferme
Reconquête de l’engraissement du chevreau à la fermeReconquête de l’engraissement du chevreau à la ferme
Reconquête de l’engraissement du chevreau à la ferme
 
JTC 2024 - Approche collective de la santé
JTC 2024 - Approche collective de la santéJTC 2024 - Approche collective de la santé
JTC 2024 - Approche collective de la santé
 
Leviers d’adaptation au changement climatique, qualité du lait et des produit...
Leviers d’adaptation au changement climatique, qualité du lait et des produit...Leviers d’adaptation au changement climatique, qualité du lait et des produit...
Leviers d’adaptation au changement climatique, qualité du lait et des produit...
 
Accompagner les éleveurs dans l'analyse de leurs coûts de production
Accompagner les éleveurs dans l'analyse de leurs coûts de productionAccompagner les éleveurs dans l'analyse de leurs coûts de production
Accompagner les éleveurs dans l'analyse de leurs coûts de production
 
JTC 2024 - Atelier APaChe-Pâturage des arbres par les chèvres
JTC 2024 - Atelier APaChe-Pâturage des arbres par les chèvresJTC 2024 - Atelier APaChe-Pâturage des arbres par les chèvres
JTC 2024 - Atelier APaChe-Pâturage des arbres par les chèvres
 
BeeBOP diaporama webinaire : Et si l’IA permettait de compléter l’observatio...
BeeBOP diaporama webinaire : Et si l’IA permettait de compléter l’observatio...BeeBOP diaporama webinaire : Et si l’IA permettait de compléter l’observatio...
BeeBOP diaporama webinaire : Et si l’IA permettait de compléter l’observatio...
 
1er webinaire INOSYS Réseaux d’élevage Ovins Viande
1er webinaire INOSYS Réseaux d’élevage Ovins Viande1er webinaire INOSYS Réseaux d’élevage Ovins Viande
1er webinaire INOSYS Réseaux d’élevage Ovins Viande
 
Accompagner les porteurs de projets en transformation fermière
Accompagner les porteurs de projets en transformation fermièreAccompagner les porteurs de projets en transformation fermière
Accompagner les porteurs de projets en transformation fermière
 
RAPPORT DE STAGE sur CHANTIER BTP (by BR Engineering ) (1) (1).pdf
RAPPORT DE STAGE  sur CHANTIER  BTP (by BR Engineering ) (1) (1).pdfRAPPORT DE STAGE  sur CHANTIER  BTP (by BR Engineering ) (1) (1).pdf
RAPPORT DE STAGE sur CHANTIER BTP (by BR Engineering ) (1) (1).pdf
 

En vedette

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
Marius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
Expeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
Pixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
Skeleton Technologies
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
SpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
Christy Abraham Joy
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
Vit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
MindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson36
 

En vedette (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

chapXSD espace de noms.pdf

  • 2. Objectifs Définition d'un vocabulaire et d'une grammaire XML. Apprendre le langage XSD 2 XML
  • 3. • L’objectif de XSD • Types simples en XSD • Types complexes en XSD • Héritage • Contraintes d’intégrité • Les espaces de noms XML Plan 3 XML
  • 4. Introduction Application « A » Application « B » <produit> <id> 123</id> <produit> <XML> <XML> <product> <ID> 123</ID> <name>shoes</name> <product> XML 4
  • 5. Introduction But :Définir la structure d’un document XML pour que tous les intermédiaires suivent le même modèle grâce aux schemas XSD (XML Schema Definition). Un schéma XML définit: Les éléments permis dans le document  Les attributs associés à ces éléments  La structure du document et les types de données XML 5
  • 6. • alternative au DTD • recommandations W3C • Issu de XML Présentation de XSD Tous les outils (validateurs, parseurs, processeurs, ...) mais également les langages (XSLT, XPath, ...) qui permettent de travailler les documents XML sont utilisables sur des XSD. XML 6
  • 7. <bibliotheque> <livre> <titre>The Game</titre> <auteur>Agatha</auteur> <ref>Policier-C-15</ref> </livre> <livre> <titre>RESTEasy</titre> <auteur>Arthur</auteur> <auteur>Martin</auteur> <ref>Informatique-A-1</ref> </livre> </bibliotheque> <!ELEMENT bibiliotheque (livre+)> <!ELEMENT livre (titre, auteur+, ref)> <!ELEMENT titre (#PCDATA)> <!ELEMENT auteur (#PCDATA)> <!ELEMENT ref (#PCDATA)> Contenu XML DTD associé Exemple d’une définition DTD XML 7
  • 8. DTD XSD Nouveau langage Syntaxe particulière Langage issu de XML Syntaxe XML Types de données limités PCDATA , CDATA Types de données plus riches integer, byte, string, float, … Nombre d'occurrence très général *, + et ? Nombre d’occurrence plus précis [1,100] , ]2,100] Aucune contrainte sur le contenu des éléments/attributs Définition des contraintes sur le contenu des éléments/attributs mot de passe de longueur 8 email contenant le caractère @ Extensible DTD vs XSD XML 8
  • 9. <produit quantite= "80"> <id> 123</id> <produit> XML Document XML bien formé XSD Document XML valide Respect de la syntaxe XML Respect des règles XSD Vers un document XML valide XML 9
  • 10. Bien formé Valide Un document XML est valide si et seulement s’il est bien formé Vers un document XML valide Respect de la syntaxe XML Respect des règles XSD XML 10
  • 11.  Un document schema XML est défini dans un fichier dont l’extension est *.xsd  Comme tout document XML, un schéma XML commence par la prologue XML et a un élément racine  L’élément <xs:schema> est la racine de tout document Schema XML <?xml version="1.0" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> … </xs:schema> Structure d’un schema XML Fichier XSD XML 11
  • 12. Déclaration des éléments <xs:element name="theName" type="theType" /> Valeur fixée <xs:element name="firstName" type="xs:string" default="Mickael" /> Valeur par défaut <xs:element name="firstName" type="xs:string" fixed="Mickael" /> L’attribut default de l’élément firstName précise une valeur au cas où elle serait absente L’attribut fixed de l’élément firstName précise une valeur et ne peut être modifiée XML 12
  • 13. Déclaration des attributs <xs:attribute name="theName" type="theType" use="required" /> (required ou optional) <xs:attribute name="remark" type="xs:string" default="Remarque à préciser" /> Valeur fixée Valeur par défaut L’attribut default de l’attribut remark précise une valeur au cas où elle serait absente <xs:attribute name="remark" type="xs:string" fixed="Remarque à préciser" /> L’attribut fixed de l’attribut remark précise une valeur et ne peut être modifiée XML 13
  • 14. Les types de données 1/2  Les attributs sont de types simples  Les éléments sont de: oTypes simples oTypes complexes un élément de type simple ne peut comporter ni attributs, ni de sous éléments un élément de type complexe permet d’exprimer des sous éléments et permet également d’y associer des attributs XML 14
  • 15. Eléments de type simple Eléments de type complexe <film/> <film>Gladiator</film> <film type="action " /> <film> <annee>2000</annee> <realisateur>R.Scott</realisateur> </film> <film type= "action "> Gladiator </film> <film type= "action " > <annee>2000</annee> <realisateur>R.Scott</realisateur> </film> Les types de données 2/2 XML 15
  • 16. Les principaux types simples prédéfinis • xs:int • xs:boolean • xs:string • xs:long • xs:float • xs:positiveInteger : 1, 2, … • xs:negativeInteger : …, -2, -1 • xs:nonNegativeInteger : 0, 1, 2, … • xs:nonPositiveInteger : …, -2, -1, 0 • xs:unsignedLong : 0, 1, … 18446744073709… Les types simples 1/8 XML 16
  • 17. Les types simples dérivés  On peut créer de nouveaux types simples en dérivant des types simples existants (prédéfinis ou dérivés)  Un nouveau type simple peut être défini par restriction ou extension Exemple: o L’age est un entier compris entre 1 et 100 o L’email est une chaîne de caractères qui doit contenir le caractère @ Type simple Restriction Nouveau type simple Les types simples: restriction XML 17
  • 18.  Les restrictions sur les types simples permettent de dériver de nouveaux types à partir de types existants  Les restrictions passent par l’utilisation des facettes  Une facette permet de définir des contraintes sur le nouveau type à créer Les types simples dérivés Les types simples: restriction XML 18
  • 19. La création de nouveaux types simples est réalisée avec la balise <xs:simpleType> <xs:simpleType name="newType" > ... </xs:simpleType>  La restriction est exprimée avec la balise <xs:restriction> <xs:simpleType name="newType" > <xs:restriction base="type" > ... </xs:restriction> </xs:simpleType> Les types simples dérivés Nouveau Type simple Type simple de départ Les types simples: restriction XML 19
  • 20.  length: permet de définir le nombre exact de caractères d'une chaîne. maxLength: permet de définir le nombre maximum de caractères d'une chaîne.  minLength: permet de définir le nombre minimum de caractères d'une chaîne.  totalDigits: permet de définir le nombre exact de chiffres qui composent un nombre.  maxExlusive: permet de définir une valeur maximale exclusive.  maxInclusive: permet de définir une valeur maximale inclusive.  minExlusive: permet de définir une valeur minimale exclusive.  maxInclusive: permet de définir une valeur minimale inclusive. enumeration: permet d’énumérer la liste des valeurs possibles.  pattern: définit la séquence exacte de caractères pouvant être acceptés.  whiteSpace: permet de gérer les espaces blanc. Les principales facettes XML 20
  • 21.  Facette length  Facette minLength, maxLength <xs:element name=" password" type ="passwordType" /> <xs:simpleType name ="passwordType" > <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> <xs:element name="password" type="passwordType" /> <xs:simpleType name =" passwordType" > <xs:restriction base="xs:string"> <xs:minLength value="5"/> <xs:maxLength value="8"/> </xs:restriction> </xs:simpleType> Les principales facettes Les types simples: restriction XML 21
  • 22.  Facette totalDigits <xs:element name=" zip" type ="zipType" /> <xs:simpleType name ="zipType" > <xs:restriction base="xs:positiveInteger"> <xs:totalDigits value="4"/> </xs:restriction> </xs:simpleType> Les principales facettes Les types simples: restriction XML 22
  • 23.  Facette minLInclusive, minExclusive, maxInclusive, maxExclusive <xs:element name=" age" type ="ageType" /> <xs:simpleType name="ageType"> <xs:restriction base="xs:int"> <xs:minInclusive value="1" /> <xs:maxInclusive value="100" /> </xs:restriction> </xs:simpleType> Les principales facettes Les types simples: restriction XML 23
  • 24. <xs:element name=" sexe" type ="sexeType" /> <xs:simpleType name="sexeType" > <xs:restriction base="xs:string"> <xs:enumeration value="homme" /> <xs:enumeration value="femme" /> <xs:enumeration value="indéterminé" /> </xs:restriction> </xs:simpleType>  Facette enumeration Trois valeurs sont autorisées Les principales facettes Les types simples: restriction XML 24
  • 25.  Facette pattern <xs:element name="email" type ="emailType" /> <xs:simpleType name="emailType"> <xs:restriction base="xs:string"> <xs:pattern value= " [a-z]*@[a-z]* " /> </xs:restriction> </xs:simpleType> Toutes les chaînes de caractères de type emailType doivent respecter ce pattern [a-z]* 0 ou plusieurs lettre(s) ([a-z][A-Z])+ 1 ou plusieurs paires de lettres min et maj sToP, Stop,STOP,stop male|female Liste de choix [a-zA-Z0-9]{8} 8 caractères (chiffre, lettre min, lettre maj) Les principales facettes Les types simples: restriction XML 25
  • 26.  L’élément xs:list définit une liste de valeurs d’un même type simple. Le type simple de base est donné dans l’attribut itemType.  Il ne s’agit pas de listes générales comme dans certains langages de programmation. Il s’agit uniquement de listes de valeurs séparées par des espaces. Liste de valeurs d’un même type simple Les types simples: extension list XML <xs:element name="FootballTeams" type="FootballTeamsType" /> <xs:simpleType name=" FootballTeamsType " > <xs:list itemType="xs:string" /> </xs:simpleType> Fichier XSD <?xml version ="1.0" ?> <FootballTeams>EST CA ESS CSS ST CAB</FootballTeams> Fichier XML 26
  • 27. Union de types simples (Exemple) Les types simples: extension union(1/2) XML <xs:element name="jeansSize" type ="sizeType" /> <xs:simpleType name="sizeType" > <xs:union memberTypes ="xs: positiveInteger xs:string" /> </xs:simpleType> Fichier XSD  L’élément xs:union définit un nouveau type simple dont les valeurs sont celles des types listés dans l’attribut memberTypes <?xml version ="1.0"?> <jeanSize>40</jeanSize> <jeanSize>medium</jeanSize> Fichier XML 27
  • 28.  Un élément de type complexe peut contenir d'autres éléments et / ou des attributs  Quatre combinaisons d'éléments complexes sont à distinguer o Eléments vides qui ne contiennent que des attributs o Eléments de type simple qui contiennent des attributs o Eléments qui peuvent contenir des sous éléments o Eléments qui contiennent des attributs et des sous éléments  La création d'un éléments de type complexe est réalisée avec la balise <xs:complexType> <xs:complexType name="newType" > ... </xs:complexType> Les types complexes 1/8 XML 28
  • 29. Eléments vides qui ne contiennent que des attributs <xs:element name="child" type ="childType" /> <xs:complexType name ="childType" > <xs:attribute name="remark" type="xs:string" use="required" /> <xs:attribute name="old" type= "xs:int" /> <xs:attribute name="sexe" type="xs:string" /> </xs:complexType> <child remark="He's too much" old="3" sexe="homme"/> Les types complexes 2/8 XML 29
  • 30. Eléments qui peuvent contenir des sous éléments <person> <name>…</name> <firstName>…</firstName> <old>…</old> <email>…</email> </person> <xs:element name="person" type="personType " /> <xs:complexType name="personType " > <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="firstName" type="xs:string" /> <xs:element name="old" type="ageType" /> <xs:element name="email" type="emailType" /> </xs:sequence> </xs:complexType> sequence exprime que les sous éléments doivent apparaître dans l’ordre spécifié Les types complexes 3/8 XML 30
  • 31.  XSD permet d'exprimer trois sortes d'indicateurs d'ordre: <xs:complexType name= "personType"> <xs:all> <xs:element name="name" type="xs:string" /> <xs:element name="firstName" type="xs:string" /> <xs:element name="old" type="ageType" /> <xs:element name="email" type=“emailType" /> </xs:all> </xs:complexType> <person> <name>…</name> <email>… </email> <old>…</old> <firstName>…</firstName> </person>  all tous les sous éléments peuvent apparaître dans n'importe quel ordre Indicateurs d’ordre • sequence • all • choice Eléments qui peuvent contenir des sous éléments Les types complexes 4/8 XML 31
  • 32. choice exprime qu'un seul élément parmi tous les sous éléments peut apparaître <xs:complexType name= "personneType"> <xs:sequence> <xs:element name="nom" type="xs:string" /> <xs:element name=“prenom" type="xs:string" /> <xs:element name=“age" type="ageType" /> <xs:choice> <xs:element name=“adresse" type= “xs:string" /> <xs:element name=“adresseElectronique" type= “xs:string" /> </xs:choice> <xs:sequence> </xs:complexType> <personne> <nom>…</nom> <prenom>…</prenom> <age>…</age> <adresse>…</adresse> </person> Indicateurs d’ordre Eléments qui peuvent contenir des sous éléments Les types complexes 5/8 XML 32
  • 33.  maxOccurs : précise le nombre d'occurrence maximum  minOccurs : précise le nombre d'occurrence minimum  Si les valeurs de maxOccurs ou minOccurs ne sont pas explicitement précisées, la valeur par défaut est de 1  Pour définir une valeur infinie, fixer la valeur à unbounded <xs:complexType name= "personType"> <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="firstName" type="xs:string" /> <xs:element name="old" type="ageType" minOccurs="0" /> <xs:element name="email" type= " emailType" minOccurs="2" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> old est un élément optionnel Indicateurs d’occurence Eléments qui peuvent contenir des sous éléments Les types complexes 6/8 XML 33
  • 34. Eléments qui peuvent contenir des sous éléments  Même si on a un seul élément fils, on doit utiliser un indicateur d’ordre <xs:complexType name= "personType"> <xs:sequence> <xs:element name="name" type="xs:string" /> </xs:sequence> </xs:complexType> Les types complexes 7/8 XML 34
  • 35. <xs:complexType name= "personType"> <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="firstName" type="xs:string" /> <xs:element name="old" type="ageType" /> <xs:element name="email" type= "emailType" /> </xs:sequence> <xs:attribute name="id" type="xs:int" /> </xs:complexType> <person id ="139" > <name>…</name> <firstName>…</firstName> <old>…</old> <email>…</email> </person> Eléments qui peuvent contenir des sous éléments et des attributs Les types complexes 8/8 XML 35
  • 36. Héritage d’un élément simple L’héritage par extension <poids>67</poids> extension <xs:element name ="poids" type ="poidsType" /> <xs:complexType name ="poidsType" > <xs:simpleContent> <xs:extension base="xs:integer"> <attribute name="unite" type="xs:string" /> </xs:extension> </xs:simpleContent> </xs:complexType> <poids unite=“kg“ >67</poids>  Possibilité de définir un nouveau type sur la base d'un type simple existant  Utilisation de la balise <xs:simpleContent> XML 36
  • 37.  Possibilité de définir un nouveau type complexe sur la base d'un type complexe existant Héritage d’un élément complexe <adress> <receiver></receiver> <street></street> <city></city> </address> <adressUS> <receiver></receiver> <street></street> <city></city> <state></state> <zip></zip> </adressUS> Type complexe existant Nouveau type complexe L’héritage par extension XML 37
  • 38.  Utilisation de la balise <xs:complexContent> <xs:complexType name="addressType"> <xs:sequence> <xs:element name="receiver" type="xs:string" /> <xs:element name="street" type="xs:string" /> <xs:element name="city" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:complexType name="usAddressType"> <xs:complexContent> <xs:extension base="addressType"> <xs:sequence> <xs:element name="state" type="xs:string" /> <xs:element name="zip" type="xs:string" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> Le type addressType définit trois sous éléments en séquence Le type usAddressType propose une extension avec deux nouveaux sous éléments en séquence Héritage d’un élément complexe L’héritage par extension XML 38
  • 39. Héritage d’un élément simple L’héritage par restriction Restriction: poidsBebe <10 <poidsBebe unite =“kg“ >3</poidBebe> <poids unite=“kg“ >67</poids>  Possibilité de définir un nouveau type sur la base d'un type simple existant en réduisant l’espace des valeurs possibles.  Utilisation de la balise <xs:simpleContent> XML 39
  • 40. Héritage d’un élément simple L’héritage par restriction <xs:element name ="poidsBebe" type ="poidsBebeType" /> <xs:complexType name ="poidsBebeType" > <xs:simpleContent> <xs:restriction base=" poidsType "> <xs:minInclusive value="2"/> <xs:maxExclusive value="10"/> </xs:restriction> </xs:simpleContent> </xs:complexType> XML 40
  • 41.  Possibilité de définir un nouveau type complexe en réduisant les valeurs d'un type complexe existant Héritage d’un élément complexe <adress> <receiver></receiver> <street></street> <city></city> </address> <adressUS> <street></street> <city></city> </adressUS> Type complexe existant Nouveau type complexe L’héritage par restriction XML 41
  • 42.  Utilisation de la balise <xs:complexContent> <xs:complexType name="addressType"> <xs:sequence> <xs:element name="receiver" type="xs:string" /> <xs:element name="street" type="xs:string" /> <xs:element name="city" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:complexType name="usAddressType"> <xs:complexContent> <xs:restriction base="addressType"> <xs:sequence> <xs:element name="street" type="xs:string" /> <xs:element name="city" type="xs:string" /> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> Le type addressType définit trois sous éléments en séquence Le type usAddressType propose une restriction en éliminant le sous élément "receiver" Héritage d’un élément complexe L’héritage par restriction XML 42
  • 43. Types d’héritage Restriction Extension <complexType> <complexContent> <restriction base="type"> allowed element content allowed attributes </restriction> </complexContent> </complexType> <complexType> <complexContent> <extension base="type"> extra element content extra attributes </extension> </complexContent> </complexType> <complexType> <simpleContent> <restriction base="type"> facet restrictions allowed attributes </restriction> </simpleContent> </complexType> <complexType> <simpleContent> <extension base="type"> extra attributes </extension> </simpleContent> </complexType> XML 43
  • 44. Contraintes d’intégrité Contrainte d’unicité <cinema> <film id="f23"> Gladiator </film> <film id="f12"> Avatar </film> </cinema> <xs:element name="cinema" type="cinemaType"> <xs:key name="film.id"> <xs:selector xpath="film"/> <xs:field xpath="@id"/> </xs:key> </xs:element> Deux éléments film dans le même élément cinema ne peuvent pas avoir la même valeur d’attribut « id » Similaire à la déclaration d’une valeur unique La valeur qui détermine l’unicité doit toujours exister et ne peut pas être nulle. Cette valeur peut être constituée de plusieurs champs: il suffit pour cela de mettre plusieurs éléments xs:field dans l’élément xs:key. La contrainte définie peut être donnée par des éléments et pas seulement par des attributs. XML 44
  • 45. Contraintes d’intégrité Contrainte d’existence <salle nom="St André des Arts"> <seance ref_film="f12"> 14:30 </seance> <seance ref_film="f23"> 17:00 </seance> </salle> <xs:element name="salle" type="salleType"> <xs:keyRef name="refFilm" refer="film.id"> <xs:selector xpath="seance"/> <xs:field xpath="@ref_film"/> </ xs:keyRef > </xs:element> L’attribut ref_film de seance est une clé étrangère définie dans l’élément salle ref_film fait référence à une clé définie nommée film.id Une contrainte d’existence spécifie que dans le contenu d’un élément donné, il doit exister un élément ayant une propriété fixée. XML 45
  • 46. Fusion des 2 documents <entreprise> <departement> <id>D001</id> <nom>Marketing</nom> <employe> <id>E0000001</id> <nom>Smith</nom> <prenom>John </prenom> </employe> </departement> </entreprise> Confusion sur le sens des éléments id et nom <employe> <id>E0000001</id> <nom>Smith</nom> <prenom>John </prenom> </employe> <departement> <id>D001</id> <nom>Marketing</nom> </departement> Espace de noms XML 1/6 Problème XML 46
  • 47. Distinguer les éléments et les attributs de différentes documents XML qui ont le même nom Objectif Solution Utiliser les espaces de noms XML Fusion des 2 documents <dep:departement> <dep:id>D001</dep:id> <dep:nom>Marketing</dep:nom> <emp:employe> <emp:id>E0000001</emp:id> <emp:nom>Smith</emp:nom> <emp:prenom>John </emp:prenom> </emp:employe> </dep:departement> <emp:employe> <emp:id>E0000001</emp:id> <emp:nom>Smith</emp:nom> <emp:prenom>John </emp:prenom> </emp:employe> <dep:departement> <dep:id>D001</dep:id> <dep:nom>Marketing</dep:nom> </dep:departement> Espace de noms XML 2/6 XML 47
  • 48. Un espace de nom associe un préfixe à un URI L’URI (Uniform Resource Identifier) sert à identifier un espace de noms Le préfixe est une chaîne utilisée pour référencer l’espace de nom dans un fichier XML. employe id nom departement id nom URI: http://employe.com Préfixe: emp URI: http://departement.com Préfixe: dep Espace de noms XML 3/6 Déclaration des espaces de noms XML 48
  • 49. <element xmlns:prefix="URI"> <emp:employe xmlns:emp="http://emloye.com"> <emp:id>E0000001</emp:id> <emp:nom>Smith</emp:nom> <emp:prenom>John </emp:prenom> </emp:employe> <dep:departement xmlns:dep="http://departement.com"> <dep:id>D001</dep:id> <dep:nom>Marketing</dep:nom> </dep:departement> Espace de noms XML 4/6 Déclaration des espaces de noms La déclaration de l'espace de noms se fait au moyen de l'attribut xmlns XML 49
  • 50. <emp:employe xmlns:emp="http://emloye.com"> <emp:id>E0000001</emp:id> <emp:nom>Smith</emp:nom> <emp:prenom>John </emp:prenom> </emp:employe> <dep:departement xmlns:dep="http://departement.com"> <dep:id>D001</dep:id> <dep:nom>Marketing</dep:nom> </dep:departement> <entreprise xmlns:dep="http://departement.com" xmlns:emp="http://emloye.com" > <dep:departement> <dep:id>D001</dep:id> <dep:nom>Marketing</dep:nom> <emp:employe> <emp:id>E0000001</emp:id> <emp:nom>Smith</emp:nom> <emp:prenom>John </emp:prenom> </emp:employe> </dep:departement> </entreprise> Fusion des 2 documents Espace de noms XML 5/6 Déclaration des espaces de noms XML 50
  • 51. Espace de nom pour XSL Espace de nom pour XSD <?xml version="1.0" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> … </xs:schema> <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> … </xsl:stylesheet > Déclaration des espaces de noms Espace de noms XML 6/6 XML 51
  • 52. schema element complexType string integer boolean XML Schema Namespace http://www.w3.org/2001/XMLSchema <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www. departement.org" targetNamespace="http://www. departement.org"> <xs:element name="departement" type="depType"/> <xs:complexType name="depType"> <xs:sequence> <xs:element name="id" type="xs:integer"/> <xs:element name="nom" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:schema> departement id nom departemenType Document XML Schema Target Namespace http://www.departement.org <departement> <id>D001</id> <nom>Marketing</nom> </departement> Document XML Les éléments et les types appartenant au XML Schema Namespace sont utilisés pour écrire un document XSD Les nouveaux types et élément déclarés dans le document XSD appartiennent à un nouveau espace de nom: c’est le tragetNamespace Le targetNamesapce est utilisé par le fichier XML pour la validation Espace de noms XSD 1/4 XML 52
  • 53. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dep="http://www.departement.org" targetNamespace="http://www.departement.org" elementFormDefault="qualified"> <xs:complexType name="depType" > <xs:sequence> <xs:element name="id" type="xs:integer"/> <xs:element name="nom" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:element name="departement" type=" dep:depType "/> </xs:schema> xmlns:xs espace de nommage des éléments et types XSD xmlns:dep espace de nommage des nouveaux types définis par le programmeur targetNamespace espace de nommage du schema XSD cible C’est l’espace de noms qui sera référé par le fichier XML Fichier XSD Espace de noms XSD 2/4 Espaces de noms XSD XML 53
  • 54. XSD XML XML XML XML Schema XML Schema Instance XML Schema Instance XML Schema Instance Espace de noms XSD 3/4 Association d’un fichier XML à un fichier XSD XML 54
  • 55. xmlns Espace de noms des éléments utilisés dans le fichier XML xmlns:xsi Il s’agit d’une instance de schema XSD xsi:schemaLocation Localiser le document XSD <departement xmlns="http://www.departement.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.departement.org departement.xsd"> Fichier XML Espace de noms XSD 4/4 Association d’un fichier XML à un fichier XSD XML 55
  • 56. En résumé • XSD est un langage permettant la définition de la structure d’un document XML • XSD offre une richesse de types  Types simples, types complexes  Restriction, extension • L’association d’un fichier XML à un fichier XSD passe par l’utilisation des espaces de noms. XML 56