XSD
XML Schema Definition
Objectifs
Définition d'un vocabulaire et d'une grammaire XML.
Apprendre le langage XSD
XML
2
18/10/2020
1
Plan
• L’objectif de XSD • Types simples en XSD • Types complexes en XSD • Héritage • Contraintes d’intégrité • Les espaces de noms XML
XML
3
Introduction
Application « A »
Application « B »
<XML>
<produit>
<id> 123</id>
<produit>
<XML>
<product>
<ID> 123</ID> <name>shoes</name>
<product>
XML
4
18/10/2020
2
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
Présentation de XSD
• alternative au DTD • recommandations W3C • Issu de XML
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
18/10/2020
3
Exemple d’une définition DTD
Contenu XML
DTD associé
<bibliotheque> <livre>
<titre>The Game</titre> <auteur>Agatha</auteur> <ref>Policier-C-15</ref>
<!ELEMENT bibiliotheque (livre+)> <!ELEMENT livre (titre, auteur+, ref)> <!ELEMENT titre (#PCDATA)> <!ELEMENT auteur (#PCDATA)> <!ELEMENT ref (#PCDATA)>
</livre> <livre>
<titre>RESTEasy</titre> <auteur>Arthur</auteur> <auteur>Martin</auteur> <ref>Informatique-A-1</ref>
</livre>
</bibliotheque>
XML
DTD vs XSD
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
Nombre d’occurrence plus précis
*, + et ?
[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
XML
7
8
18/10/2020
4
18/10/2020
Vers un document XML valide
XML
XSD
<produit quantite= "80">
<id> 123</id>
<produit>
Document XML bien formé Respect de la syntaxe XML
Document XML valide Respect des règles XSD
9
XML
XML
Vers un document XML valide
Un document XML est valide si et seulement s’il est bien formé
Valide
Respect des règles XSD
Bien formé Respect de la syntaxe XML
10
5
Structure d’un schema XML
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
Fichier XSD
<?xml version="1.0" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
…
</xs:schema>
XML
11
Déclaration des éléments
<xs:element name="theName" type="theType" />
Valeur par défaut
<xs:element name="firstName" type="xs:string" default="Mickael" />
Valeur fixée
L’attribut default de l’élément firstName précise une valeur au cas où elle serait absente
<xs:element name="firstName" type="xs:string" fixed="Mickael" />
XML
L’attribut fixed de l’élément firstName précise une valeur et ne peut être modifiée
12
18/10/2020
6
Déclaration des attributs
<xs:attribute name="theName" type="theType" use="required" />
(required ou optional)
Valeur par défaut
<xs:attribute name="remark" type="xs:string" default="Remarque à préciser" />
Valeur fixée
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" />
XML
L’attribut fixed de l’attribut remark précise une valeur et ne peut être modifiée
13
Les types de données 1/2
Les attributs sont de types simples Les éléments sont de: o Types simples
un élément de type simple ne peut comporter ni attributs, ni de sous éléments
o Types complexes
un élément de type complexe permet d’exprimer des sous éléments et permet également d’y associer des attributs
XML
14
18/10/2020
7
Les types de données 2/2
Eléments de type simple
Eléments de type complexe
<film/>
<film type="action " />
<film>Gladiator</film>
XML
<film type= "action ">
Gladiator
</film>
<film>
<annee>2000</annee> <realisateur>R.Scott</realisateur>
</film>
<film type= "action " >
<annee>2000</annee> <realisateur>R.Scott</realisateur>
Publicité
</film>
15
Les types simples 1/8
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…
XML
16
18/10/2020
8
Les types simples: restriction
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
XML
Les types simples: restriction
Les types simples dérivés
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
XML
17
18
18/10/2020
9
Les types simples: restriction
Les types simples dérivés
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>
XML
Nouveau Type simple
Type simple de départ
19
Les principales facettes
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.
XML
20
18/10/2020
10
Les types simples: restriction
Les principales facettes
Facette length
<xs:element name=" password" type ="passwordType" />
<xs:simpleType name ="passwordType" > <xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
Facette minLength, maxLength
<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>
21
XML
Les types simples: restriction
Les principales facettes
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>
XML
22
18/10/2020
11
Les types simples: restriction
Les principales facettes
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>
XML
23
Les types simples: restriction
Les principales facettes Facette enumeration
<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é" />
Trois valeurs sont autorisées
</xs:restriction> </xs:simpleType>
XML
24
18/10/2020
12
18/10/2020
Les types simples: restriction
Les principales facettes
Facette pattern
<xs:element name="email" type ="emailType" /> <xs:simpleType name="emailType"> <xs:restriction base="xs:string">
<xs:pattern value= " [a-z]*@[a-z]* " />
Toutes les chaînes de type caractères emailType doivent respecter ce pattern
de
</xs:restriction> </xs:simpleType>
[a-z]*
([a-z][A-Z])+
male|female
[a-zA-Z0-9]{8}
XML
0 ou plusieurs lettre(s)
1 ou plusieurs paires de lettres min et maj sToP, Stop,STOP,stop
Liste de choix
8 caractères (chiffre, lettre min, lettre maj)
25
Les types simples: extension list
Liste de valeurs d’un même type simple
Fichier XSD
<xs:element name="FootballTeams" type="FootballTeamsType" />
<xs:simpleType name=" FootballTeamsType " >
<xs:list itemType="xs:string" />
</xs:simpleType>
Fichier XML
<?xml version ="1.0" ?> <FootballTeams>EST CA ESS CSS ST CAB</FootballTeams>
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.
26
XML
13
Les types simples: extension union(1/2)
Union de types simples (Exemple) Fichier XSD
<xs:element name="jeansSize" type ="sizeType" />
<xs:simpleType name="sizeType" >
<xs:union memberTypes ="xs: positiveInteger xs:string" />
</xs:simpleType>
Fichier XML
Publicité
<?xml version ="1.0"?> <jeanSize>40</jeanSize> <jeanSize>medium</jeanSize>
L’élément xs:union définit un nouveau type simple dont les valeurs sont celles des types listés dans l’attribut memberTypes
27
XML
Les types complexes 1/8
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>
XML
28
18/10/2020
14
Les types complexes 2/8
Eléments vides qui ne contiennent que des attributs
<child remark="He's too much" old="3" sexe="homme"/>
<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>
XML
29
Les types complexes 3/8
Eléments qui peuvent contenir des sous éléments
<person>
<name>…</name> <firstName>…</firstName> <old>…</old> <email>…</email>
</person>
sequence exprime que les sous éléments doivent apparaître dans l’ordre spécifié
XML
<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>
30
18/10/2020
15
18/10/2020
Les types complexes 4/8
Eléments qui peuvent contenir des sous éléments
Indicateurs d’ordre
XSD permet d'exprimer trois sortes d'indicateurs d'ordre:
• sequence • all • choice
all tous les sous éléments peuvent apparaître dans n'importe quel ordre
<xs:complexType name= "personType">
<person>
<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" />
<name>…</name> <email>… </email> <old>…</old> <firstName>…</firstName>
</person>
</xs:all>
</xs:complexType>
XML
31
Les types complexes 5/8
Eléments qui peuvent contenir des sous éléments
Indicateurs d’ordre
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" />
<personne>
<nom>…</nom> <prenom>…</prenom> <age>…</age> <adresse>…</adresse>
</person>
</xs:choice> <xs:sequence> </xs:complexType>
XML
32
16
Les types complexes 6/8
Eléments qui peuvent contenir des sous éléments
Indicateurs d’occurence
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"
old est un élément optionnel
</xs:sequence> </xs:complexType>
XML
maxOccurs="unbounded"/>
33
Les types complexes 7/8
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>
XML
34
18/10/2020
17
Les types complexes 8/8
Eléments qui peuvent contenir des sous éléments et des attributs
<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>
XML
35
L’héritage par extension
Héritage d’un élément simple
Possibilité de définir un nouveau type sur la base d'un type simple existant
Utilisation de la balise <xs:simpleContent>
<poids>67</poids>
extension
<poids unite=“kg“ >67</poids>
<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>
XML
36
18/10/2020
18
L’héritage par extension
Héritage d’un élément complexe
Possibilité de définir un nouveau type complexe sur la base d'un type complexe existant
Type complexe existant
<adress>
<receiver></receiver> <street></street> <city></city>
</address>
Nouveau type complexe
<adressUS>
<receiver></receiver> <street></street> <city></city> <state></state> <zip></zip>
</adressUS>
XML
37
L’héritage par extension
Héritage d’un élément complexe
Utilisation de la balise <xs:complexContent>
Le type addressType définit trois sous éléments en séquence
<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>
Le type usAddressType propose une extension avec deux nouveaux sous éléments en séquence
XML
<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>
Publicité
</xs:complexContent> </xs:complexType>
38
18/10/2020
19
L’héritage par restriction
Héritage d’un élément simple
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>
<poids unite=“kg“ >67</poids>
Restriction: poidsBebe <10
<poidsBebe unite =“kg“ >3</poidBebe>
XML
L’héritage par restriction
Héritage d’un élément simple
<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
39
40
18/10/2020
20
L’héritage par restriction
Héritage d’un élément complexe
Possibilité de définir un nouveau type complexe en réduisant les valeurs d'un type complexe existant
Type complexe existant
<adress>
<receiver></receiver> <street></street> <city></city>
</address>
Nouveau type complexe
<adressUS>
<street></street> <city></city>
</adressUS>
XML
41
L’héritage par restriction
Héritage d’un élément complexe
Utilisation de la balise <xs:complexContent>
Le type addressType définit trois sous éléments en séquence
<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>
Le type usAddressType propose une restriction en éliminant le sous élément "receiver"
XML
<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>
42
18/10/2020
21
Types d’héritage
Restriction
<complexType>
<complexContent>
Extension
<complexType>
<complexContent>
<restriction base="type"> allowed element content allowed attributes
<extension base="type">
extra element content extra attributes
</restriction> </complexContent>
</complexType>
</extension> </complexContent>
</complexType>
<complexType>
<simpleContent>
<complexType>
<simpleContent>
<restriction base="type">
<extension base="type">
facet restrictions allowed attributes
</restriction>
</simpleContent>
</complexType>
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
18/10/2020
22
Contraintes d’intégrité
Contrainte d’existence
<salle nom="St André des Arts">
<xs:element name="salle" type="salleType">
<seance ref_film="f12"> 14:30 </seance> <seance ref_film="f23"> 17:00 </seance>
</salle>
<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
Espace de noms XML 1/6
Problème
<employe>
<id>E0000001</id> <nom>Smith</nom> <prenom>John </prenom>
</employe>
<departement>
<id>D001</id> <nom>Marketing</nom>
</departement>
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>
XML
Confusion sur le sens des éléments id et nom
46
18/10/2020
23
Espace de noms XML 2/6
Objectif
Distinguer les éléments et les attributs de différentes documents XML qui ont le même nom
Solution Utiliser les espaces de noms XML
<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>
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>
47
XML
Publicité
Espace de noms XML 3/6
Déclaration des espaces de noms
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.
URI: http://employe.com Préfixe: emp
URI: http://departement.com Préfixe: dep
XML
employe
id nom
departement
id nom
48
18/10/2020
24
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
<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>
XML
49
Espace de noms XML 5/6
Déclaration des espaces de noms
<emp:employe xmlns:emp="http://emloye.com">
<dep:departement xmlns:dep="http://departement.com">
<emp:id>E0000001</emp:id> <emp:nom>Smith</emp:nom> <emp:prenom>John </emp:prenom>
</emp:employe>
<dep:id>D001</dep:id> <dep:nom>Marketing</dep:nom>
</dep:departement>
Fusion des 2 documents
<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>
XML
50
18/10/2020
25
Espace de noms XML 6/6
Déclaration des espaces de noms
Espace de nom pour XSL
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
…
</xsl:stylesheet >
Espace de nom pour XSD
<?xml version="1.0" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
…
</xs:schema>
XML
51
Espace de noms XSD 1/4
XML Schema Namespace http://www.w3.org/2001/XMLSchema
schema element complexType string integer boolean
Les éléments et les types appartenant au XML Schema Namespace sont utilisés pour écrire un document XSD
Document XML Schema
<?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>
Les nouveaux types et élément déclarés dans le document XSD appartiennent à un nouveau espace de nom: c’est le tragetNamespace
Target Namespace http://www.departement.org
departement id nom departemenType
Le targetNamesapce est utilisé par le fichier XML pour la validation
Document XML
XML
<departement>
<id>D001</id> <nom>Marketing</nom>
</departement>
52
18/10/2020
26
Espace de noms XSD 2/4
Espaces de noms XSD
Fichier XSD
<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
xmlns:dep
espace de nommage des éléments et types XSD
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
53
XML
Espace de noms XSD 3/4
Association d’un fichier XML à un fichier XSD
XML Schema
XSD
XML Schema Instance
XML Schema Instance
XML Schema Instance
XML
XML
XML
XML
54
18/10/2020
27
Espace de noms XSD 4/4
Association d’un fichier XML à un fichier XSD
Fichier XML
<departement xmlns="http://www.departement.org"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.departement.org departement.xsd">
xmlns
xmlns:xsi
Espace de noms des éléments utilisés dans le fichier XML
Il s’agit d’une instance de schema XSD
xsi:schemaLocation Localiser le document XSD
XML
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
55
56
18/10/2020
28
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
XML
57
18/10/2020
29