XML Schema Definition (XSD): Structure and Functionality

Page 1 sur 29Lecteur de document UniversityLib

XML Schema Definition (XSD): Structure and Functionality

Markup Languages - XML/XSD · course

Voir tous les documents en développement web

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