Sie sind auf Seite 1von 30

Universit Ibn Tofal

Ecole Nationale des Sciences Appliques

XML (eXtensible Markup Language)

Chapitre 3: XML Schma


Pr: OUMAIRA ILHAM
DTD et XML Schma
1

Plan du Chapitre
1. Limites des DTD
2. Structure dun schma xml
3. Dclaration des lments
4. Dclaration des attributs

Limites des DTD

Une DTD ne permet pas de typer les donnes

les DTD ne sont pas au format XML. Cela signifie qu'il est
ncessaire d'utiliser un outil spcial pour "parser" un tel
fichier, diffrent de celui utilis pour l'dition du fichier XML

Une DTD ne peut prendre en compte quun seul espace de


nom (Namespace). en pratique, cela implique qu'il n'est pas

possible, dans un fichier XML dfini par une DTD, d'importer


des dfinitions de balises dfinies par ailleurs
3

XML-SCHEMA

Les documents XML-Schema sont des documents :


respectant la syntaxe XML,
permettant de dcrire la structure dun document XML dune faon
beaucoup plus complte que les DTD.
XML-Schema permet en effet de :
spcifier la typologie des donnes que va contenir le document XML
dcrit par le XML-Schema,
grer une quarantaine de types de donnes simples,
grer des types complexes,
grer les occurrences des donnes.

Structure de base

Comme tout document XML, un Schema XML commence par un prologue, et


a un lment racine.

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


<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
<!-- dclarations d'lments, d'attributs et de types ici -->
</xsd:schema>

tout lment d'un schma doit commencer par le prfixe xsd.

xsd utilise des espaces de noms pour distinguer les lments appartenant
XSD (le langage) et les lments et attributs dfinis par un schma donn
(par le programmeur)
xmlns:xsd="http://www.w3.org/2001/XMLSchema". Cela signifie que dans le
document, tous les lments commenant par xsd sont rfrencs cette
5
URL

Exemple: film.xml

Exemple: films.xsd

Dclaration des lments

Un lment XML est dclar par la balise element de XML


schma qui a de nombreux attributs.

Les deux principaux attributs sont:


- name : Le nom de llment (de la balise associe).
- type : Le type qui peut tre simple ou complexe.
Exemple de base
<xsd:element name="code_postal" type="xsd:decimal"/>

Dclarations d'lments

XML Schema distingue deux types de donnes :

Elment de type Simple (Simple type) : Llment ne contient ni attributs ni


lments enfants. Il en existe de nombreux, prdfinis, mais il est
galement possible d'en "driver" de nouveaux

Elments de type complexe (Complex type): llment peut contenir des


lment-enfants ou possder des attributs
Il y a quatre sortes dlments complexes :

lments vides
lments qui contiennent dautres lments
lments qui contiennent seulement du texte
lments qui contiennent dautres lments et du texte

Exemple de dclaration

10

Elment Simple

<xsd:element name = "LeNomDeMonElement" type =


"LeTypeDeContenuDeCetElement">
Exemple

<nom>bella</nom>
<age>14</age>
<date_naissance>1968-0327</date_naissance>

<xsd:element name= " nom"


type="xsd:string"/>
<xsd:element name="age"
type="xsd:integer"/>
<xsd:element
name="date_naissance"
type="xsd:date"/>

Document XML
Schma associ

11

Types simple prdfinis :


byte,

unsignedByte,
hexBinary,
integer,
positiveInteger, negativeInteger, int, unsignedInt,
long, unsignedLong, short, unsignedShort, decimal,
float, double

string, NormalizedString, token


boolean, anyURI, language
time, dateTime, duration, date, gMonth, gYear,
gYearMonth, gDay, gMonthDay
ID, IDREF, IDREFS, ENTITY, ENTITIES, NOTATIN,
NMTOKEN, NMTOKENS

types simples

SimpleType permet de dfinir des lments ou des


attributs non structurs : drivs dune chane, dun entier

etc
Types simples prdfinis au sens de la norme XML
Schmas datatypes: string, integer, boolean ...
<xsd:element name="code_postal " type="xsd:integer"/>
Types simples dfinis par drivation d'un autre type
simple, au moyen de llment <xsd:simpleType ...>

13

types simples
Drivation par restriction

La drivation par restriction restreint lensemble des


valeurs d'un type pr existant.

La restriction est dfinie par des contraintes de facettes


du type de base: valeur min, valeur max ...

Exemple :
<xsd:simpleType name= "ChiffresOctaux">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0" />
<xsd:maxInclusive value= 7" />
</xsd:restriction>
</xsd:simpleType>
14

Types simples: drivation par restriction.


<xsd:simpleType name= "Mois">
<xsd:restriction base="xsd:string">
<xsd:enumeration value= "Janvier"/>
<xsd:enumeration value="Fvrier"/>
<xsd:enumeration value="Mars"/>
</xsd:restriction>
</xsd:simpleType>

15

types simples
Drivation par restriction
Exemple : le type de donnes string comprend 6 attributs
optionnels : pattern, enumeration, length, minlength,
maxlength, whitespace. Si on dsire reprsenter un choix
Oui/Non (restriction sur lattribut enumeration) :

types simples
Drivation par restriction
Consiste numrer toutes les valeurs possibles d'un type,

<xsd:simpleType name= "Mois">


<xsd:restriction base="xsd:string">
<xsd:enumeration value= "Janvier"/>
<xsd:enumeration value="Fvrier"/>
<xsd:enumeration value="Mars"/>
<!-- ... -->
</xsd:restriction>
</xsd:simpleType>

17

Les contraintes de facettes


lenght : la longueur dune donne.
minLenght: la longueur minimum.
maxLenght: la longueur maximum.
pattern: dfini par une expression rgulire.
enumeration: un ensemble discret de valeurs.
whitespace: contraintes de normalisation des chanes
relativement aux espaces (preserve, replace, collapse).
maxInclusive: une valeur max comprise.
maxExclusive: une valeur max exclue.
minInclusive: une valeur min comprise.
maxInclusive: une valeur min exclue.
totalDigits: le nombre total de chiffres.
fractionDigits: le nombre de chiffres dans la partie fractionnaire.

18

Types complexes

Dclars au moyen de l'lment <xsd:complexType name="...

Ils peuvent contenir dautres lments, des attributs.

Trois faons de composer des lments dans un type complexe:


sequence,
choice,

all.
19

Types complexes: Sequence

Un type sequence est dfini par une suite de sous-lments qui


doivent tre prsents dans l'ordre donn.

Le nombre d'occurences de chaque sous-lment est dfini par


les attributs minOccurs et maxOccurs.

<xsd:element name="etudiant">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="prnom" type="xsd:string" />
<xsd:element name="dateDeNaissance" type="xsd:date" />
<xsd:element name="adresse" type="xsd:string" />
<xsd:element name="adresseElectronique" type="xsd:string" />
<xsd:element name="tlphone" type="numroDeTlphone" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>

20

Types complexes: Choice

Un seul des lments lists doit tre prsent.


Le nombre d'occurences possible est dtermin par les
attributs minOccurs et maxOccurs de llment.
<xsd:complexType name="typePersonne">
<sequence>
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="prnom" type="xsd:string" />
<xsd:element name="dateDeNaissance" type="xsd:date" />
<xsd:choice>
<xsd:element name="adresse" type="xsd:string" />
<xsd:element name="adresseElectronique" type="xsd:string" />
</xsd:choice>
</sequence>
<xsd:element name="tlphone" type="numroDeTlphone" />
</xsd:complexType>

21

Types complexes: All


Cet lment est une nouveaut par rapport aux DTD. Il indique que les lments
enfants doivent apparatre une fois (ou pas du tout), mais dans n'importe quel
ordre. Cet lment xsd:all doit tre un enfant direct de l'lment
xsd:complexType.
<xsd:complexType>
<xsd:all>
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="prnom" type="xsd:string" />
<xsd:element name="dateDeNaissance" type="xsd:date" />
<xsd:element name="adresse" type="xsd:string" />
<xsd:element name="adresseElectronique" type="xsd:string" />
<xsd:element name="tlphone" type="numroDeTlphone" />
</xsd:all>
</xsd:complexType>

22

Dclaration des attributs


Un attribut est une valeur nomme et type associe un
lment.
Le type dun attribut dfini en XML schma est
obligatoirement simple.
<xsd:complexType name="TypeRapport">
<xsd:attribute name= "Date_creation" type="xsd:date"/>
...
</xsd:complexType>
<xsd:element name="Rapport" type="TypeRapport"/>

23

Autres attributs

L'lment attribute de XML Schema peut avoir deux attributs


optionnels : use et value.
On peut ainsi dfinir des contraintes de prsence et de
valeur.
Selon ces deux attributs, la valeur peut:
tre obligatoire ou non
tre dfinie ou non par dfaut.
Exemple:
<xsd:attribute
name=
"Date_peremption"
type="xsd:date" use="default" value= "2005-12-31"/>

24

Valeurs possibles pour use


Use = required : Lattribut doit apparatre et prendre la valeur
fixe si elle est dfinie.
Use= prohibited : Lattribut ne doit pas apparatre.
Use = optional : Lattribut peut apparatre et prendre une valeur
quelconque.
Use= default : Si lattribut une valeur dfinie il la prend sinon il
prend la valeur par dfaut.
Use= fixed : La valeur de lattribut est obligatoirement la valeur
dfinie.
Exemple :
<xsd:attribute name= "Date_creation" type="xsd:date"
25
use="required"/>

Contraintes d'occurence

Dclaration d'lments
Le nombre d'occurences est contrl par les attributs
minOccurs et maxOccurs
Valeurs possibles :
minOccurs : entier positif ou nul
maxOccurs : entier positif ou nul, unbounded
minOccurs maxOccurs

Valeurs par dfaut des deux attributs : 1 (une occurence


obligatoire si les deux attributs sont omis)

Dclarations d'attributs
L'occurence est contrle par l'attribut use
Valeurs possibles : required, optional, prohibited
26

Indicateurs d'occurrences
DTD

Valeur de minOccurs

Valeur de maxOccurs

unbounded

rien

(pas ncessaire,
dfaut)

valeur

par

unbounded

(pas ncessaire,
dfaut)

valeur

par

(pas ncessaire,
dfaut)

valeur

par

Xml schema plus vari car minOccurs et maxOccurs sont fixable par
lutilisateur nimporte quelle valeur souhaite

27

(pas ncessaire,
dfaut)

valeur

par

Lier un document xml son schma


Pour associer un schma un fichier XML on peut utiliser
l'attribut noNamespaceSchemaLocation d'une balise xsi qui
fait rfrence aux schmas du W3C. Il est conseill d'attacher
cette balise xsi la balise racine du document. Par exemple, si
on veut associer le schma meslivres.xsd au document
livres.xml dont la balise racine est lesLivres on crira comme
dbut de fichier livres.xml
<?xml version="1.0"?>
<lesLivres
xsi:noNamespaceSchemaLocation="meslivres.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

28

Rsum
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<!-- Dclarations de types simples -->


<!-- Dclarations de types simples drivs-->
<!-- Dclarations des types complexes -->
</xsd:schema>

29

Conclusion :
DTD versus XML-SCHEMA
La DTD permet de dfinir facilement et rapidement
des grammaires simples.
XML-Schema permet de dfinir de manire plus
formelle et complte une grammaire mais cest au
prix dune complexit accrue.
Un document XML-Schema respecte la syntaxe XML.
Un document XML-Schema est gnralement plus
volumineux et plus difficile lire quune DTD (pour
un oprateur humain).

Das könnte Ihnen auch gefallen