Vous êtes sur la page 1sur 74

XML / DTD et XML Schma/2014 / Dr.

Malika Charrad

1/74

XML et SMIL
Chapitre 2

DTD et XML schma


malika.charrad@gmail.com

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

Plan
1

Introduction

Les rgles de base des DTD

XML schma

Espaces de noms

2/74

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

3/74

Introduction

Introduction
Si les documents XML sont changs entre plusieurs
applications, chacune doit vrifier la validit de ce
document.
Pour viter de programmer plusieurs fois les mmes
vrifications, chaque fichier XML est accompagn dun
fichier DTD que lapplication se chargera duitliser pour
faire la validation.
Ainsi, un document XML est valide si et seulement si il est
bien form et respecte toutes les rgles dfinies dans une DTD.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

4/74

Introduction

Comment associer une DTD un document XML


Une DTD peut tre associe de trois faons un document
XML :
DTD externe : toutes les rgles respecter sont dcrites
dans un fichier spcifique ;
DTD interne : toutes les rgles sont dans le fichier XML ;
DTD mixte : externe et interne ;
Remarque :
Les rgles de DTD internes sont prioritaires sur celles des DTD
externes.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

5/74

Introduction

Comment associer une DTD un document XML


Pour associer une DTD un document XML, il faut placer
llment optionnel DOCTYPE juste derrire le prambule
< ?xml version ... ?>
< !DOCTYPE lmentRacine source emplacement1
emplacement2 [DTD interne] >
La dclaration DOCTYPE se compose des paramtres :
lmentRacine : le nom de llment racine du document XML ;
source : un de deux mots cls PUBLIC ou SYSTEM ;
emplacement1 emplacement2 : lemplacement du fichier DTD ;
DTD interne : dans le cas dune dclaration mixte ou interne,
emplacement des rgles internes.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

6/74

Introduction

Comment associer une DTD un document XML


PUBLIC : dsigne des DTD publiques disponibles sur
Internet ou normalises
SYSTEM : dsigne des DTD usage priv, disponibles
uniquement sur le systme utilis pour valider le document
XML.
Remarque :
Pour une DTD publique, deux emplacements doivent tre
prciss. Si la DTD nest pas disponible au permier
emplacement, le second sera alors utilis.
Pour une DTD de type systme, un seul emplacement doit
tre spcifi.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

7/74

Introduction

Exemple
Le document XML de cet exemple doit respecter les rgles
contenues dans le fichier "exemple4.dtd"
< ?xml version="1.0" encoding ="ISO-8859-1" ?>
< !DOCTYPE contact SYSTEM "exemple4.dtd">
<contact>
<personne>
<nom>Farhat</nom>
<prnom>Hached</prnom>
</personne>
</contact>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

8/74

Les rgles de base des DTD

Les rgles dune DTD

Les rgles dune DTD portent principalement sur les


lments et les attributs.
Une rgle scrit dans une DTD de la faon suivante :
< !mot-cl paramtre1 paramtre2...>
Les mots cls possibles sont :
ELEMENT : relatif un lment XML ;
ATTLIST : relatif un attribut dlment XML ;
ENTITY : relatif des caractres spciaux ;
NOTATION : relaif du contenu externe non XML.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

9/74

Les rgles de base des DTD


Les rgles sur les lments

Les rgles sur les lments

les lments sont les blocs fondamentaux des documents


XML. Leur contenu peut prendre des formes multiples :
dautres lments, imbriqus les uns dans les autres ;
des donnes uniquement textuelles, appeles PCDATA ;
un mlange dlments et de PCDATA.
Ces diffrents contenus sont dfinis grce aux rgles de la
forme suivante :
< !ELEMENT nom catgorie-de-contenu> ou
< !ELEMENT nom (modle de contenu)>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

10/74

Les rgles de base des DTD


Les rgles sur les lments

Les rgles sur les lments


Le paramtre nom est le nom de llment sur lequel nous
voulons appliquer la rgle.
Les catgories de contenu peuvent tre ANY ou
EMPTY :
ANY : type dlment pouvant contenir nimporte quel
lment dfini dans la DTD
EMPTY : type dlment vide. Seuls des attributs sont donc
autoriss.

(modle de contenu) peut tre :


lment : le nom dautres lments ;
#PCDATA : type dlment ne pouvant contenir que des
donnes textuelles ;
mixte : type dlment pouvant contenir du texte et/ou des
lments enfants.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

11/74

Les rgles de base des DTD


Les rgles sur les lments

Exemple de DTD

La DTD de lexemple prcdent :


< ?xml version="1.0" encoding ="ISO-8859-1" ?>
< !ELEMENT contact (personne)>
< !ELEMENT personne (nom, prenom)>
< !ELEMENT nom (#PCDATA)>
< !ELEMENT prnom (#PCDATA)>
Llment personne ne contient que des lments qui ont les
noms nom et prnom.
Les lments nom et prnom ne contiennent que des
donnes textuelles.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

12/74

Les rgles de base des DTD


Les rgles sur les lments

Les modles de contenu


Exemple de contenu de type mixte :
<exemple>
Ceci illustre un contenu mixte
<balise>Le contenu de cet lment nom est du type
#PCDATA</balise>
</exemple>
La rgle scrit alors :
< !ELEMENT exemple (#PCDATA, balise)>
#PCDATA doit se situer en premier, suivi par les noms des
lments enfants.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

13/74

Les rgles de base des DTD


Les rgles sur les lments

La cardinalit

Grce des oprateurs de cardinalit, il est possible de


prciser le nombre dlments enfants admis lors de la
description dun modle de contenu.
? : zro ou un lment enfant facultatif ;
* : zro ou plusieurs lments enfants facultatifs ;
+ : un ou plusieurs lments enfants ;
absence doprateur de cardinalit : llment
correspondant ne peut figuer quune seule fois.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

14/74

Les rgles de base des DTD


Les rgles sur les lments

Exemple
Soit la rgle :
< !ELEMENT personne (nom, prnom, prnom2 ?, adresse,
tlphone+>
Vrifier si le document XML suivant est valide au regard de
cette rgle :
<personne>
<nom>Ben Mahmoud</nom>
<prnom>Imed</prnom>
<adresse>Rue des Bois Jolis, Paris </adresse>
<tlphone>0124475869 </tlphone>
<tlphone>0123476896 </tlphone>
</personne>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

15/74

Les rgles de base des DTD


Les rgles sur les lments

Les listes de choix


Il est possible de raliser des listes de choix en utilisant "|"
comme sparateur.
Exemple :
< !ELEMENT personne ((M|Mme|Mlle), nom, prnom)>
< ?xml version="1.0" encoding ="ISO-8859-1" ?>
< !ELEMENT contact (personne*)>
< !ELEMENT personne ((M|Mme|Mlle) ?, nom, prnom))>
< !ELEMENT M EMPTY>
< !ELEMENT Mme EMPTY>
< !ELEMENT Mlle EMPTY>
< !ELEMENT nom (#PCDATA)>
< !ELEMENT prnom (#PCDATA)>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

16/74

Les rgles de base des DTD


Les rgles sur les attributs

Les rgles sur les attributs

Elles permettent de spcifier, comme pour les lments, si les


attributs sont obligatoires ou pas.
Toutes ces rgles sont de la forme :
< !ATTLIST nom-element nom-attribut type valeur-par-defaut>
valeur-par-defaut : dfinit le comportement du parseur XML en
cas dabsence dun attribut.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

17/74

Les rgles de base des DTD


Les rgles sur les attributs

Les valeurs par dfaut

Le paramtre valeur-par-defaut peut prendre lune des quatre


valeurs suivantes :
#REQUIRED : la prsence de lattribut est obligatoire ;
#IMPLIED : la prsence de lattribut est optionnelle ;
#FIXED : la prsence de lattribut est optionnelle mais, sil
est prsent, sa valeur doit tre identique la valeur
prcise derrire le paramtre #FIXED ;
une valeur qui sera utilise comme valeur par dfaut en
cas dabsence de lattribut.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

18/74

Les rgles de base des DTD


Les rgles sur les attributs

Les types dattributs


Le paramtre type dfinit si lattribut correspondant est juste
une donne textuelle ou bien une information plus complexe.
Le type CDATA
CDATA est utilis pour dfinir un attribut dont la valeur est une
donne textuelle.
< !ATTLIST nom titre CDATA #REQUIRED>
Cette rgle spcifie que llment nom doit possder un
attribut qui a pour nom titre, de type CDATA.
Exemple : la portion suivante du fichier XML est valide selon
cette rgle
<nom titre="Mlle"> Lina </nom>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

19/74

Les rgles de base des DTD


Les rgles sur les attributs

Exemple
Soient les rgles suivantes :
< !ATTLIST document version CDATA "1.0">
< !ATTLIST document version CDATA #FIXED "1.0">
Soit la portion suivante dun document XML :
<document version="1.0" >...</document>
<document version="2.0" >...</document>
Ces deux lignes sont valides selon la 1re rgle.
Seule la 1re ligne est valide selon la seconde rgle car elle
oblige, en cas de prsence de lattribut version, sa valeur
tre gale 1.0

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

20/74

Les rgles de base des DTD


Les rgles sur les attributs

Les valeurs numres


Comme pour les lments, un attribut peut accepter plusieurs
valeurs diffrentes. On parle de valeurs numres.
< !ATTLIST nom titre (Mlle | Mme | M) #REQUIRED>
Lattribut obligatoire titre, port par llment nom, peut avoir
lune des trois valeurs suivantes : "Mlle", "Mme" ou "M".
< !ATTLIST nom titre (Mlle | Mme | M) #REQUIRED
nom-pouse CDATA #REQUIRED
>
Exemple :
<nom titre="Mme" nom-pouse="Dupond"> Yves</nom>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

21/74

Les rgles de base des DTD


Les rgles sur les attributs

Relations entre lments : ID, IDREF et IDREFS


ID : Il ne peut y avoir quun unique attribut ID par lment,
et la valeur de cet attribut doit tre unique dans un
document XML. La valeur peut contenir une ou plusieurs
lettres, des chiffres, des points, des tiret haut ou bas, et un
double point. Les attributs de type ID doivent tre associs
la valeur par dfaut #REQUIRED ou #IMPLIED.
< !ATTLIST lment attribut ID #option>
IDREF : Indique que la valeur de lattribut se rfre un ID
dun autre attribut
< !ATTLIST nom-lment nom-attribut IDREF #option>
IDREFS : Indique que la valeur de lattribut de type IDREF
peut se rfrer plusieurss ID
< !ATTLIST nom-lment nom-attribut IDREFS #option>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

22/74

Les rgles de base des DTD


Les rgles sur les attributs

Exemples

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


< !ELEMENT document (personne*)>
< !ELEMENT personne (nom, prnom)>
< !ATTLIST personne IDpersonne ID #REQUIRED>
< !ELEMENT nom (#PCDATA)>
< !ELEMENT prnom (#PCDATA)>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad


Les rgles de base des DTD
Les rgles sur les attributs

Exemple valide
< ?xml version="1.0" encoding ="ISO-8859-1">
< !DOCTYPE document SYSTEM "exemple.dtd">
<document>
<personne IDpersonne="id-1">
<nom>Dupuis</nom>
<prnom>Martin</prnom>
</personne>
<personne IDpersonne="id-2">
<nom>LeBlond</nom>
<prnom>John</prnom>
</personne>
</document>

23/74

XML / DTD et XML Schma/2014 / Dr. Malika Charrad


Les rgles de base des DTD
Les rgles sur les attributs

Exemple non valide


< ?xml version="1.0" encoding ="ISO-8859-1">
< !DOCTYPE document SYSTEM "exemple.dtd">
<document>
<personne IDpersonne="id-1">
<nom>Dupuis</nom>
<prnom>Martin</prnom>
</personne>
<personne IDpersonne="id-1">
<nom>LeBlond</nom>
<prnom>Jack</prnom>
</personne>
</document>

24/74

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

25/74

Les rgles de base des DTD


Les rgles sur les attributs

Exemple (IDREF)
< ?xml version="1.0" encoding ="ISO-8859-1">
< !DOCTYPE document SYSTEM "exemple.dtd">
<document>
<personne IDpersonne="id-1">
<nom>Dupuis</nom>
<prnom>Martin</prnom>
</personne>
<personne IDpersonne="id-2">
<nom>LeBlond</nom>
<prnom>Jack</prnom>
</personne>
<livre auteur="id-1">Mes nouvelles</livre> </document>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

26/74

Les rgles de base des DTD


Les rgles sur les attributs

Exemple (IDREFS)
< ?xml version="1.0" encoding ="ISO-8859-1">
< !DOCTYPE document SYSTEM "exemple.dtd">
<document>
<personne IDpersonne="id-1">
<nom>Dupuis</nom>
<prnom>Martin</prnom>
</personne>
<personne IDpersonne="id-2">
<nom>LeBlond</nom>
<prnom>Jack</prnom>
</personne>
<livre auteur="id-1 id-2">Mes nouvelles</livre>
</document>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

27/74

Les rgles de base des DTD


Les rgles sur les attributs

Exemple (IDREFS)

La dclaration de la rgle devient : < ?xml version="1.0"


encoding ="ISO-8859-1">
< !ELEMENT document (personne*, livre*)>
< !ELEMENT personne (nom, prnom)>
< !ATTLIST personne IDpersonne ID #REQUIRED>
< !ELEMENT nom (#PCDATA)>
< !ELEMENT prnom (#PCDATA)>
< !ELEMENT livre (#PCDATA)>
< !ATTLIST livre auteur IDREFS #IMPLIED>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

28/74

Les rgles de base des DTD


Les rgles sur les attributs

Les types NMTOKEN et NMTOKENS

NMTOKEN : Indique que la valeur de lattribut est une


chane de caractres. La diffrence par rapport CDATA
est que NMTOKEN naccepte pas les espaces et les
caractres de ponctuation autre que "." et "-".
< !ATTLIST nom-lment nom-attribut NMTOKEN #option>
NMTOKENS : Identique NMTOKEN except que lattribut
peut avoir plusieurs valeurs spares par des espaces.
< !ATTLIST nom-lment nom-attribut NMTOKENS
#option>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

29/74

Les rgles de base des DTD


Les rgles sur les attributs

Exemple

Rgle
< !ATTLIST livre
anne NMTOKEN #REQUIRED
auteur NMTOKENs #REQUIRED>
Fichier XML
<livre anne="2007" auteur="Azur Loncour">...</livre>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

30/74

Les rgles de base des DTD


Les DTD internes et externes

DTD externe

Il y a 2 types de DTD :
DTD externe
DTD interne
DTD externe :
doit tre enregistre dans un fichier texte portant
lextension.dtd
La dclaration de lutilisation dune DTD externe doit se
faire avant llment racine et aprs le prologue.
< !DOCTYPE noeudracine SYSTEM "URI DTD externe">

XML / DTD et XML Schma/2014 / Dr. Malika Charrad


Les rgles de base des DTD
Les DTD internes et externes

DTD interne
< ?xml version="1.0" encoding ="ISO-8859-1">
< !DOCTYPE document [
< !ELEMENT document (personne*, livre*)>
< !ELEMENT personne (nom, prnom)>
< !ATTLIST personne IDpersonne ID #REQUIRED>
< !ELEMENT nom (#PCDATA)>
< !ELEMENT prnom (#PCDATA)>
< !ELEMENT livre (#PCDATA)>
< !ATTLIST livre auteur IDREFS #IMPLIED>
]>
<document>
<personne IDpersonne="id-1">
<nom>Dupuis</nom>
<prnom>Martin</prnom>
</personne>
<personne IDpersonne="id-2">
<nom>LeBlond</nom>
<prnom>John</prnom>
</personne>
<livre auteur="id-1 id-2">Mes nouvelles</livre>
</document>

31/74

XML / DTD et XML Schma/2014 / Dr. Malika Charrad


Les rgles de base des DTD
Les DTD internes et externes

DTD internes et externes


< ?xml version="1.0" encoding ="ISO-8859-1">
< !DOCTYPE document SYSTEM "exemple.dtd"
[
< !ELEMENT livre (#PCDATA)>
< !ATTLIST livre auteur IDREFS #IMPLIED>
]>
<document>
<personne IDpersonne="id-1">
<nom>Dupuis</nom>
<prnom>Martin</prnom>
</personne>
<personne IDpersonne="id-2">
<nom>LeBlond</nom>
<prnom>John</prnom>
</personne>
<livre auteur="id-1 id-2">Mes nouvelles</livre>
</document>

32/74

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

33/74

Les rgles de base des DTD


Les DTD internes et externes

Fichier exemple.dtd

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


< !ELEMENT document (personne*, livre*)>
< !ELEMENT personne (nom, prnom)>
< !ATTLIST personne IDpersonne ID #REQUIRED>
< !ELEMENT nom (#PCDATA)>
< !ELEMENT prnom (#PCDATA)>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

34/74

Les rgles de base des DTD


Les DTD internes et externes

Exercice
Un document XML est utilis pour pouvoir changer entre deux agendas
lctroniques les informations de leurs annuaires tlphoniques respectifs.
Malheureusement, ces agendas nutilisent pas la mme application. Ainsi,
pour viter de vrifier, dans chaque application, la conformit du fichier XML,
on utilise une DTD pour valider ces documents XML changs.
crivez la DTD, qui respecte les rgles suivantes :
Llment racine aura pour nom agenda et ne contiendra que des
lments personne.
Une personne est reprsente par llment personne qui contiendra
obligatoirement dans cet ordre :

Un lment nom pour le nom de la personne ;


Un lment prnom pour le prnom de la personne ;
Un lment adresse qui comprendra dautres lments.
Un lment tlphone pour le numro de tlphone de la
personne.
Llment adresse devra contenir dans cet ordre les lments : rue,
code-postal et ville.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

35/74

XML schma

Comparaison entre les DTD et les schmas XML


Les DTD sont simples dutilisation mais prsentent des
limitations.
Un fichier de DTD nest pas un fichier XML. Par contre, un
schma est un fichier XML.
Il est donc manipulable par les mmes outils que les
documents XML quil permet de dfinir.
De plus, il est possible de produire automatiquement la
documentation associe un schma par lapplication
dune feuille de style XSL bien choisie.
Les schmas sont trs facilement concevables par
modules.
Prsence de la notion dhritage dans les schmas.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

36/74

XML schma

Comparaison entre les DTD et les schmas XML


Un document XML ne peut dpendre que dune seule
DTD, mme si elle peut tre tendue par une DTD interne.
Il nest pas possible dajouter des DTD dorigines
diverses. Par contre, avec XML Schma il est possible
dincorporer un document XML des lments provenant
de spcifications conues indpendamment dans des
schmas.
Dans une DTD, les donnes ne sont pas "types". Par
exemple, il est impossible de forcer un lment contenir
une chaine de caractres codant une adresse de courrier
lectronique. Par contre, le format XML Schma introduit
un typage des donnes.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

37/74

XML schma

Structure gnrale dun schma XML


Comme tout document XML, un schma dbute par un
prologue et possde un lment racine :
< ?xml version="1.0" encoding ="UTF-8" ?>
<xs :schema
xmlns :xs="http ://www.w3.org/2001/XMLSchema">
< ! Dclarations de types, dlments et dattributs >
</xs :schema>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

38/74

XML schma

Conventions dcriture
< ?xml version="1.0" encoding ="UTF-8" ?>
<xs :schema
xmlns :xs="http ://www.w3.org/2001/XMLSchema"> < !
Dclarations des types simples >
< ! Dclarations des types complexes >
< ! Dclarations des attributs communs plusieurs lments
>
< ! Dclarations des lments de type simple >
< ! Dclarations des lments de type complexe >
</xs :schma>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

39/74

XML schma
Les dclarations dlments et dattributs

Dclarations dlments

Un lment se dclare laide de llment element.


Il faut spcifier le nom de llment laide de lattribut
name,
Il faut spcifier son type laide de lattribut type.
Si cet attribut nest pas renseign, alors son type de
donnes est string(une chaine de caractre).

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

40/74

XML schma
Les dclarations dlments et dattributs

Dclarations dlments

Exemple :
<xs :element name="Prnom" type ="xs :string"/>
<xs :element name="NumroDeTlphone"
type="typeNumroDeTlphone"/>
Dfinition
Les lments pouvant contenir des lments enfants ou des
attributs sont de type complexe, les autres sont de type simple.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

41/74

XML schma
Les dclarations dlments et dattributs

Dclarations dattributs

A la diffrence des lments, un attribut ne peut tre que


de type simple ; cd il ne peut contenir ni lment enfant,
ni attribut.
Un attribut se dclare de manire comparable un
lment, laide de llment attribute et des attributs
name et type.
Exemple :
<xs : attribute name="mise--jour" type="xs :date"/>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

42/74

XML schma
Les dclarations dlments et dattributs

Contraintes doccurrence

Comme dans une DTD, un attribut peut avoir un indicateur


doccurrence.
Llment attribute dun schma peut possder trois attributs
optionnels : use, default et fixed.
Quand lattribut fixed est renseign, sa valeur est la seule que
peut prendre lattribut dclar.
La valeur de use est par dfaut optional.
La valeur de lattribut default doit tre conforme au type dclar.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

43/74

XML schma
Les dclarations dlments et dattributs

Regroupements dattributs
Exemple valide :
<xs :attribute name="mise--jour" type="xs :date"
use="optional" default="2003-10-11"/>
Exemple non valide :
<xs :attribute name="mise--jour" type="xs :date"
use="optional" default="11 octobre 2003"/>
On peut rassembler des dfinitions dattributs laide de
llment attributeGroup :
<xs :attributeGroup name="attributsCommuns">
< !Dfinitions dattributs >
</xs :attributeGroup>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

44/74

XML schma
Les dclarations dlments et dattributs

Les types simples de donnes et leur utilisation

On distingue :
Les types primitifs sont des types qui ne sont pas drivs
partir dautres. Ils servent de base lensemble des autres
types.
Les types drivs sont obtenus par "drivation" directe
partir des types primitifs.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

45/74

XML schma
Les dclarations dlments et dattributs

Les types primitifs

Les types primitifs sont les suivants :


String
Boolen
float
time : un format temporel donnant une heure de la journe, de la
forme hh :mm :ss.sss. Ex : 09 :30 :00.000.
date : une date, de la forme [-] yyyy-mm-dd. Ex : 2003-10-11.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

46/74

XML schma
Les dclarations dlments et dattributs

Les types drivs des types primitifs (1)


normalizedString : driv du type string. Il sagit dune
chaine de caractres sans les tabulations, retours la
ligne ou retours chariot.
token : type driv du type normalizedString.
language : Il sagit dune chaine de caractres reprenant
les dfinitions internationales de langue. Ex : fr pour le
franais, de pour lallemand ou en/us pour langlais
amricain.
NMTOKEN : reprend le type dattribut NMTOKEN des DTD.
NMTOKENS : reprend le type dattribut NMTOKENS des
DTD.
name : chaine commenant par une lettre ou un signe de
ponctuation. Les chaines commenant par xml ou XML
sont interdites.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

47/74

XML schma
Les dclarations dlments et dattributs

Les types drivs des types primitifs (2)


NCName : une chane avec les mmes contraintes que
name, mais ne contenant pas de " :".
ID : le type dattribut ID utilis dans les DTD.
IDREF : le type dattribut IDREF utilis dans les DTD.
IDREFS : le type dattribut IDREFS utilis dans les DTD.
ENTITY : le type dattribut ENTITY utilis dans les DTD.
ENTITIES : le type dattribut ENTITIES utilis dans les
DTD.
integer
positiveInteger : entier relatif strictement suprieur 0
nonPositiveInteger : entier relatif infrieur ou gal 0
negativeInteger : entier relatif strictement infrieur 0
nonNegativeInteger : entier relatif suprieur ou gal 0

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

48/74

XML schma
Les dclarations dlments et dattributs

Utilisation de llment xs : simpleType

On dfinit un type simple laide de llment simpleType


dans le schma, en indiquant son nom grce lattribut name :
<xs : simpleType name="nomDuType">
< !- - Dfinition du type : restriction, liste ou union - ->
</xs : simpleType>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

49/74

XML schma
Les dclarations dlments et dattributs

Les restrictions
La dfinition dun nouveau type partir dun type simple
par restriction passe par lutilisation de "facettes".
Les facettes permettent de modifier les formats autoriss
pour un type donn.
Le terme de restriction, qui provient de la recommandation,
nest pas explicite car il est possible dappliquer une facette
qui permettre dtendre les formats autoriss pour un type.
On peut appliquer plusieurs facettes un mme type.
Dfinition
Une facette permet de placer une contrainte sur lensemble des
valeurs que peut prendre un type de base.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

50/74

XML schma
Les dclarations dlments et dattributs

Exemple

Par exemple, on peut crer un type simple, typeMonEntier,


limit aux valeurs comprises entre 0 et 99.
<xs : simpleType name="typeMonEntier">
<xs : restriction base="xs : nonNegativeInteger">
<xs : maxExclusive value="99"/>
</xs : restriction>
</xs : simpleType>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

51/74

XML schma
Les dclarations dlments et dattributs

Autre facettes
Il existe des facettes servant placer des contraintes sur
les nombres ou les dates, comme maxExclusive,
minExclusive, maxInclusive, minInclusive.
Les facettes autorises pour les chaines de caractres
sont : length, minLength et maxLength.
Les facettes totalDigits et fractionDigits servent spcifier
le nombre total de chiffres et le nombre de chiffres aprs la
virgule pour les entiers.
La facette enumeration sert spcifier une liste de valeurs
autorises
La facette whitespace sert spcifier la manire dont les
espaces, les retours la ligne et les rectours chariot sont
traits.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

52/74

XML schma
Les dclarations dlments et dattributs

Exemples(1)

Exemple 1 : Dfinition dun type limit aux nombres rels en


prcision simple, compris entre -56.3 et 34.7
<xs : simpleType name="typeMonNombre">
<xs : restriction base="xs : float">
<xs : maxInclusive value="34.7"/>
<xs : minInclusive value="-56.3"/>
</xs : restriction>
</xs : simpleType>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

53/74

XML schma
Les dclarations dlments et dattributs

Exemples(2)

Exemple 2 : Dfinition dun type limit aux jours du XXme


sicle
<xs : simpleType name="typeJourXXmeSicle">
<xs : restriction base="xs : date">
<xs : maxExclusive value="2001-01-01"/>
<xs : minInclusive value="1900-01-01"/>
</xs : restriction>
</xs : simpleType>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

54/74

XML schma
Les dclarations dlments et dattributs

Exemples(3)

Exemple 3 : Dfinition dun type limit aux chanes de


caractres de longueur maximale 20
<xs : simpleType name="typeChaine20">
<xs : restriction base="xs : string">
<xs : length value="20"/>
</xs : restriction>
</xs : simpleType>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

55/74

XML schma
Les dclarations dlments et dattributs

Exemples(4)

Exemple 4 : Dfinition dun type limit aux chaines de


caractres "Ahmed", "Imed" et "Wided"
<xs : simpleType name="NewTypeChaine20">
<xs : restriction base="xs : string">
<xs : enumeration value="Ahmed"/>
<xs : enumeration value="Imed"/>
<xs : enumeration value="Wided"/>
</xs : restriction>
</xs : simpleType>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

56/74

XML schma
Les dclarations dlments et dattributs

Exemples(4)

Exemple 4 : Dfinition dun type limit aux chaines de


caractres minuscules
<xs : simpleType name="TypeChaineMinuscules">
<xs : restriction base="xs : string">
<xs : pattern value="[a-z]*"/>
</xs : restriction>
</xs : simpleType>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

57/74

XML schma
Les dclarations dlments et dattributs

Exercice

Dfinissez les types simples suivants en les drivant partir


des types simples prdfinis les plus pertinents :
une heure comprise entre 2h30 du matin et 16h50 ;
un nombre rel en prcision simple, suprieur ou gal
-3476.4 et strictement infrieur 5 ;
une chaine de quatre caractres ;
une liste limite aux chaines "jpg", "gif" et "png" ;
un type de numro ISBN : cest un entier de 13 chiffres.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

58/74

XML schma
Les dclarations dlments et dattributs

Solution
Type dheure
<xs :simpleTypename="typeHeure">
<xs : restriction base="xs :time">
<xs : minInclusive value ="02 :30 :00"/>
<xs : maxInclusive value ="16 :50 :00"/>
</xs : restriction>
</xs : simpleType>
Type de nombre rel
<xs :simpleTypename="typeNombre">
<xs : restriction base="xs :float">
<xs : minExclusive value ="-3476.4"/>
<xs : maxExclusive value ="5"/>
</xs : restriction>
</xs : simpleType>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad


XML schma
Les dclarations dlments et dattributs

Solution
Chaine de quatre caractres
<xs :simpleTypename="typeChaine4">
<xs : restriction base="xs :string">
<xs : length value ="4"/>
</xs : restriction>
</xs : simpleType>
Type de chanes limite des valeurs
<xs :simpleTypename="typeImage">
<xs : restriction base="xs :string">
<xs : enumeration value ="jpg"/>
<xs : enumeration value ="gif"/>
<xs : enumeration value ="png"/>
</xs : restriction>
</xs : simpleType>

59/74

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

60/74

XML schma
Les types complexes

Introduction

Dfinition
Un type complexe est dfini laide de llment complexType.
Il permet de dfinir des squences dlments, des types de
choix ou des contraintes doccurrence.

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

61/74

XML schma
Type dlment vide contenant un ou plusieurs attributs

Type dlment vide contenant un ou plusieurs


attributs

Un lment peut tre de type complexe sil est susceptible de


possder des attributs.
Exemple : dfinir un type dlment pouvant contenir des
attributs width et height.
<xs : complexType name="typeImage">
<xs : attribute name="width" type="xs : nonNegativeInteger"/>
<xs : attribute name="height" type="xs : nonNegativeInteger" />
</xs : complexType>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

62/74

XML schma
Type dlment vide contenant un ou plusieurs attributs

Type dlment non vide contenant un ou plusieurs


attributs

Un lment peut contenir du texte aussi bien que des attributs.


Cela est possible grce lattribut mixed de llment complexType,
qui est de type boolen. Par dfaut, cet attribut vaut false, et llment
ne peut contenir de texte.
<xs : complexType name="typeLien" mixed="true">
<xs : attribute ref="href" use="required" />
<xs : attribute ref="lang"/>
<xs : attribute ref="hreflang"/>
</xs : complexType>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

63/74

XML schma
Type dlment vide contenant un ou plusieurs attributs

Type dlment non vide contenant un ou plusieurs


attributs
Remarque :
On prcise, au moment de la dfinition du type, les indicateurs
doccurrence sur les attributs.
Cette dfinition rend possible la dclaration de llment lien
ainsi :
<xs : element name="lien" type="typeLien"/>
Elle rend galement possible son utilisation :
<lien href="http ://www.pearsoneducation.fr" hreflang="fr">Pearson
Education </lien>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

64/74

XML schma
Type dlment vide contenant un ou plusieurs attributs

Utilisation des groupes dattributs


Il est possible de dfinir des types faisant appel des groupes
dattributs, dj dfinis, sans avoir les dupliquer.
<xs :attributeGroup name="attributsCommuns">
< !- - Dfintions dattributs - ->
</xs : attributeGroup>
< !- - Suite du schma (...) - ->
<xs : complexType name="type1">
<xs : attributeGroupe ref="attributsCommuns"/>
</xs : complexType>
<xs : complexType name="type2">
<xs :attributeGroupe ref="attributsCommuns"/>
</xs : complexType>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

65/74

XML schma
Squences, Choix dlments et lment ALL

Squence dlments
Dans une DTD, il est possible dindiquer quun lment doit
contenir une suite de sous-lments dans un ordre dtermin.
Lors de la dfinition du type de llment, on utilise llment
sequence :
Exemple
<xs :complexType name="typeLivre">
<xs : sequence>
<xs : element ref="titre"/>
<xs : element ref="auteur"/>
<xs : element ref="diteur"/>
<xs : element ref="description"/>
</xs : sequence>
</xs : complexType>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

66/74

XML schma
Squences, Choix dlments et lment ALL

Choix dlments
Il est possible de choisir entre le numro ISBN et les rfrences de
titre dauteur et dditeur.
Exemple
<xs :complexType name="typeLivre">
<xs : sequence>
<xs : choice>
<xs : sequence>
<xs : element ref="titre"/>
<xs : element ref="auteur"/>
<xs : element ref="diteur"/>
</xs : sequence>
<xs : element ref="ISBN"/>
</xs : choice>
<xs :element ref="description"/>
</xs : sequence>
</xs : complexType>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

67/74

XML schma
Squences, Choix dlments et lment ALL

Llment all (1)


Cet lment indique que les lments enfants doivent apparaitre une
fois et dans nimporte quel ordre.
Exemple
<xs :complexType name="typeAll">
<xs : all>
<xs : element ref="el1"/>
<xs : element ref="el2"/>
<xs : element ref="el3"/>
<xs : element ref="el4"/>
</xs : all>
</xs : complexType>

<xs : element name="elt" type="typeAll">

XML / DTD et XML Schma/2014 / Dr. Malika Charrad


XML schma
Squences, Choix dlments et lment ALL

Llment all (2)

Utilisations valides
<elt>
<elt2>(...)</elt2>
<elt4>(...)</elt4>
<elt3>(...)</elt3>
<elt1>(...)</elt1>
</elt>

68/74

XML / DTD et XML Schma/2014 / Dr. Malika Charrad


XML schma
Squences, Choix dlments et lment ALL

Utilisations non valides


<elt>
<elt2>(...)</elt2>
<elt4>(...)</elt4>
<elt3>(...)</elt3>
</elt>
<elt>
<elt2>(...)</elt2>
<elt4>(...)</elt4>
<elt3>(...)</elt3>
<elt1>(...)</elt1>
<elt2>(...)</elt2>
</elt>

69/74

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

70/74

XML schma
Squences, Choix dlments et lment ALL

Indicateurs doccurrence : minOccurs et


maxOccurs

Dans XML Schema : les attributs minOccurs et maxOccurs


indiquent resp. les nombres minimal et maximal doccurrences
dun lment.
Exemple
<xs :complexType name="typeListeElements">
<xs :element ref="elt" minOccurs="3" maxOccurs="4"/>
</xs : complexType>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

71/74

XML schma
Squences, Choix dlments et lment ALL

Cration dun type complexe partir dun type


simple
Exemple : dfinir un lment contenant une valeur simple et
possdant un attribut
<poids unit="kg">67</poids>
driver un type complexe partir du type simple
positiveInteger, laide dune extension :
Exemple
<xs : complexType name="typePoids">
<xs : simpleContent>
<xs : extension base="xs : positiveInteger">
<xs : attribute name="unit" type="xsd :string"/>
</xs : extension>
</xs : simpleContent>
</xs : complexType>

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

72/74

Espaces de noms

< ?xml version="1.0" ?>


<xs :schema
xmlns :xs="http ://www.w3.org/2001/XMLSchema">
...
...
</xs :schema>
xmlns :xs="http ://www.w3.org/2001/XMLSchema"
Indique que les lments et les attributs utilis dans le
viennent de
schma (element, complexType, string ,E)
lespace du nom "http ://www.w3.org/2001/XMLSchema"
Spcifie que les lments et les attributs qui viennent de
cet espace
xmlns :xs="http ://www.w3.org/2001/XMLSchema" du nom
doit avoir xs comme le prfixe

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

73/74

Espaces de noms

Comment lier un fichier XML un schma

Il suffit de spcifier un espace de noms grce au pseudo-attribut


xmlns, suivi de la chaine de caractres qui va servir dtiquette
pour lespace de noms, pointant vers celui-ci :
<xs :schema xmlns :xs="http ://www.w3.org/2001/XMLSchema">

XML / DTD et XML Schma/2014 / Dr. Malika Charrad

74/74

Espaces de noms

Exercice
Ecrivez un schma permettant de construire un document XML, respectant
les contraintes suivantes :
llment racine est llment annuaire
lannuaire est constitu dau moins un lment personne
Chaque lment personne possde un attribut obligatoire nom et un
attribut facultatif prnom, qui sont des chaines de caractres.
Chaque lment personne possde les lments enfants suivants :
1
2

un lment dateAnniversaire qui est de type date.


un lment idesCadeaux, qui est une chaine de
caractres.
un lment tlphone, qui possde :
un attribut numro, qui est une liste de nombres entiers
strictement positifs et strictement infrieurs 100.
un lment enfant heureDappel qui doit possder un attribut
heureDbut et un attribut heureFin. Les deux attributs sont
obligatoires.