You are on page 1of 126

Technologie XML

(eXtensible Markup Language)


Adil KENZI

Plan du cours
Introduction
Structure des documents XML
Validation des documents XML
Validation par DTD
Validation par un schma W3C

Publication de documents XML


Le format pour le Web : XHTML
Lutilisation des feuilles de style CSS
Le langage de requte XPath
Le format XSLT (eXtensible Style language Transformation)
Programmation XML
La technologie DOM (Document Object Model)
La technologie SAX (Simple API for XML)

AU 2010/2011

Historique
SGML: Standard Generalized Markup

Language (ISO 8879), 1974

Description de la structure dun type de document

Les documents de ce type respecte la structure

DSSSL: Document Style Semantics and

Specification Language

Feuille de style est associ un type de document

SPDL: Standard Page Description Langage

Formatage des documents SGML +(DSSSL)

AU 2010/2011

Historique des langages du Web


Diffusion du Web (1990)
Faciliter laccs linformation
Naissance de HTML

Web volue et HTML montre ses limites


Utiliser la technologie pour dautres fins
Naissance de XML (1997)

Janvier 1998, adoption de la premire version

de XML par le W3C

AU 2010/2011

Besoin du XML
Le traitement et le stockage de lensemble

des informations de lentreprise durant toutes


les tapes de production
Formalisme pour les informations;
Une reprsentation unique afin dtre bien
exploites;

Echange et traitement automatique de

donnes

AU 2010/2011

Besoin du XML
Structure et validation des documents

Afin dadapter un document une structure bien


dfinie, exemple base donne (relationnelle);

Transformation et adaptation

Besoin de transformer les donnes dun fichier vers


une reprsentation bien dfinie, et selon les
contraintes de lentreprise;

AU 2010/2011

XML
XML : eXtensible Markup Language permet de

dcrire les informations de faon :


les prsenter
les transmettre
les transformer

Le domaine d'application de XML :


Echange de documents
Commerce lectronique
Interoprabilit de systmes d'information
htrognes.
AU 2010/2011

HTML Vs XML
Exemple code HTML: les donnes sur un

ordinateur
<BODY>
<UL>
<LI> Toshiba Satellite</LI>
<LI> A 100</LI>
<LI> AMD sempron 3 Ghz</LI>
<LI> 3 Mo </LI>
<LI> 250 Go</LI>
</UL>

</BODY>

AU 2010/2011

HTML Vs XML
Document XML

..
<constructeur> Toshiba Satellite</constructeur>
<modele proc= > A 100 </modele>
<processeur> AMD sempron 3 Ghz </processeur >
<ram> </ram>
<ddr> 250 Go</dde>

Lisibilit: donnes auto-documentes


Sparation entre linformation et la prsentation
Traitement par dautres applications
AU 2010/2011

Comparaison entre XML et HTML


HTML possde un jeu de balises fixes;
XML n'a pas de balises prdfinies mais nous

permet de dfinir nos propres balises;


HTML mlange le contenu et la prsentation
amliorations possibles cependant avec CSS);
Des liens trop simples;
XML ne dcrit que du contenu pur;
Pour la prsentation on pourra utiliser du XSL ou
gnrer du HTML+CSS grce des outils comme
XSLT;

AU 2010/2011

10

Aperu gnral
Que signifie XML ?
eXtensible: une infinit de balises;
Markup: identifier les # lments dun

document au moyen de balises;


Language: respecter un certain nombre de

rgles.

XML est un standard de cration de

langages;
XML dcrit la structure et la smantique,

pas laspect;
AU 2010/2011

11

XML est une collection de spcifications


XML est en fait une collection de spcifications et de

"vocabulaires" associs, bass sur la mme syntaxe. Les


trois parties les plus importantes sont les suivantes :
XML 1.0 Recommendation : c'est la spcification de base du langage

extensible de balisage XML qui dcrit en dtail la syntaxe du mtalanguage;


XML Linking Language (XLink) et Xpointer: ces deux documents du

W3C dcrivent diffrentes faons, assez complexes, d'exprimer les


schmas de relations entre documents et sections de documents;
Extensible Style Language (XSL): XSL dcrit comment les

documents XML peuvent tre prsents sur diffrents priphriques


d'affichage et plus gnralement ces documents peuvent tre
transforms.

AU 2010/2011

12

Cycle de vie dun document XML


Schma I
XML
DTD
XML
Documen
t

XSL
CSS

XML
schma

Structure

transform

Applicatio
n

HTML

Navigateu
r

Text/PDF

Utilisation

API

Transformation
AU 2010/2011

Rsultats
13

Quelques Editeurs XML


Unditeur XMLest un diteur delangage balisesavec
des fonctionnalits ajoutes pour faciliter l'ditionXML
XMLSpy(http://www.altova.com)
Stylus Studio
EditiX(http://www.editix.com)
XMLCooktop
Gratuit

XMLNotepad 2007
Plateforme Windows
gratuit

AU 2010/2011

14

Structure dun document XML

15

Exemple simple
<?xml version="1.0" encoding="ISO-8859-1"?> Prologue
<! Fiche technique -->
Commentaire
<laptop constructeur= " Toshiba">
<serie ref = " Satellite ">
</serie>
< description>
Les lments
Toshiba professional series
AMD prossesor 2Ghz
4Go memory
</description>
</laptop>
AU 2010/2011

16

Composantes dun document XML


Partie I
Prologue: Une dclaration dun document
XML
Commentaires (facultatif)
Les diffrents lments du document
Partie II
Dfinition optionnelle de type de document
Instructions de traitements: fournissent de
linformation une application XML
Rfrences aux entits
AU 2010/2011

17

Le prologue: entte
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
Version="1.0" : version de la spcification XML utilise.
Il existe aussi la version 1.1, mais la version 1.0 est la plus
utilise;

Le jeu de caractres employ (encoding), afin de permettre

lanalyseur (parser) du fichier XML de mieux interprter le


jeu des caractre;
Encoding="UTF-8": le jeu de caractres utilis

Standalone: indiquant la prsence de dclaration externes

(DTD par exemple) ncessaires au traitement du document.


Avec standalone="yes" vous mentionnez que la DTD se trouve

dans le fichier actuel


Avec standalone="no" vous fates savoir que la DTD se trouve

dans un fichier spar.


AU 2010/2011

18

Les nuds lments


Sont le contenu du document, identifis par un nom;
Composantes de base dun document XML
grent la structuration des donnes dun document XML, un peu la

manire des rpertoires qui servent lorganisation des fichiers.


Un nom XML valide est compos de chiffres, lettres, tirets, blancs
souligns, deux points et un point. Un nom XML doit commencer par une
lettre ou un blanc soulign
Pour dcrire ce que contiennent les lments, on parle de modle de
contenu. On trouve :
Rien : il ny pas de contenu, llment est vide.
Du texte
Un ou plusieurs lments : on peut les qualifier dlments

fils, llment les contenant tant appel un lment parent


Un mlange de textes et dlments : cest une forme plus
rare qui peut rvler une erreur de structuration.

AU 2010/2011

19

Les nuds lments


Exemple :
<?xml version="1.0" encoding="ISO-8859-1"?>
<cours>
<intervenant>
Phileas
</intervenant>
<separateur/>
<chapitre>
Formation XML
<para>Un paragraphe</para>
<para>Autre paragraphe</para>
</chapitre>
</cours>

cours : lment racine contenant trois lments fils : intervenant,

separateur et
chapitre ;
intervenant : lment contenant du texte ;
separateur : lment sans contenu ;
chapitre : lment contenant du texte et des lments fils para ;
para : lment contenant du texte.
AU 2010/2011

20

Les balises
Servent dcrire un lment:
<nom>Windows</nom>

Toute balise rencontre est analyse:


Contrairement HTML qui ignore les balises
non valides;
Les balises XML sont sensibles la Casse:
Contrairement HTML.

AU 2010/2011

21

Attributs
Contient des informations sur llment;
= paires nom/valeur associes un lment:
<ram UNITE="Mo" >256 </ram>

Un lment peut avoir plusieurs attributs:


<auteur NE="1910" MORT="2000 ">

les valeurs dattributs:


Un nombre, une chane de caractres, une
adresse,
Attributs prdfinis: xml:lang, xml:space

AU 2010/2011

22

Choix entre attributs et lments


Cas avec attributs
<personne nom="brillant" prenom="alexandre"/>
Cas sans attributs
<personne>
<nom>
brillant
</nom>
<prenom>
alexandre
</prenom>
</personne>

Difficile dutiliser un attribut la place dun lment

:
Cas avec lments :
<carnet>
<personne>
</personne>
<personne>
</personne>
</carnet>

AU 2010/2011

23

Commentaires
Ce sont les mmes quen HTML. Ils se

positionnent nimporte o aprs le prologue et


peuvent figurer sur plusieurs lignes
<! Ordinateur en promotion 20% -->

AU 2010/2011

24

Les rgles syntaxiques du langage


XML
R1: le document doit commencer par une
dclaration XML;
R2: attention la capitalisation des noms et des
attributs;
R3: les valeurs des attributs doivent tre quottes "
" ;
R4: les balises non vides doivent tre apparies;
R5: les balises vides doivent tre fermes;
R6: les lments ne doivent pas se chevaucher;
R7: un lment principal doit enfermer tous les
autres;
R8: ne pas utiliser les caractres < et & seuls.
AU 2010/2011

25

Document bien form et


valide
Il existe deux types de document XML

Bien form: respecte les rgles syntaxiques

du langage XML
Valide: bien form + conforme une

grammaire (DTD ou schma)

AU 2010/2011

26

Exercice I
Cration dun livre en XML
On souhaite crire un livre en utilisant le formalisme XML. Le
livre est structur en sections (au moins 2), en chapitres (au
moins 2) et en paragraphes (au moins 2).
Le livre doit contenir la liste des auteurs (avec nom et prnom).
Tous les lments doivent possder un titre, sauf le paragraphe
qui contient du texte.
Proposez une structuration XML de ce document (avec 2 auteurs,
2 sections, 2 chapitres par section et 2 paragraphes par
chapitre).
Vrifiez, laide de lditeur ou navigateur, que votre document
est bien form.
Attention : ne pas utiliser dattributs

AU 2010/2011

27

Exercice 2 : Utilisation des attributs


Conception de livre2.xml partir de

livre1.xml
On souhaite complter la structure du
document XML de lexercice prcdent par les
attributs nom et prenom pour les auteurs et
titre pour le livre, les sections et les chapitres.
Analysez la structure du nouveau document.
Y a-t-il des simplifications possibles ?
Vrifiez que votre document est bien form.

AU 2010/2011

28

Exercice 3
L'objectif de l'exercice est de proposer un format XML

permettant de stocker des articles quelconques.


Un article est constitu d'un titre, d'un texte et d'une
bibliographie ;
le texte lui-mme est une succession de paragraphes, chaque
paragraphe pouvant contenir :
des mots ou expressions importants et devant donc tre

diffrencis du reste du paragraphe ;


des rfrences bibliographiques ;

une entre dans la bibliographie peut dcrire soit un site web,

soit un ouvrage ;
un site web est dcrit par un nom et une url ;
pour un ouvrage, on trouve le titre, les auteurs, la date de
parution et l'diteur.
AU 2010/2011

29

Section CDATA: section


littrale
CDATA signifie "Character data" = donnes

textuelles
Intrt: Insrer du texte non interprt par le
processeur XML
Exemple de codes XML
La syntaxe:
<! [CDATA [
Texte non analys,
]]>

NB: on ne peut pas imbriquer deux sections


CDATA
AU 2010/2011

30

Les entits du document


Les units de stockage pour les composants du

document sont des entits.


Llment racine et ses sous-lments peuvent

contenir des rfrences dautres entits.


Le processeur XML regroupe toutes les entits

formant le document pour un traitement de


lensemble.

AU 2010/2011

31

Dfinition du type de
document
Sert lier une grammaire de type DTD (Document Type

Definition) votre document XML. Elle est introduite avant la


premire balise (racine) de votre document sous cette
forme :

<!DOCTYPE racine SYSTEM "URI vers la DTD">


racine est le premier lment (la premire balise). URI peut
tre absolue ou relative au document.
<!DOCTYPE laptop SYSTEM "fiche.dtd">

AU 2010/2011

32

Les entits du document


Entits se subdivisent en deux catgories:
Analysables: contiennent un texte XML bien
form
Non-analysables: contiennent du texte nonXML ou des donnes binaires.
Ils sont de deux types:
Internes : dfinies dans lentit document elle-

mme
Externes: elles dpendent dune source de
donnes externe au document XML

AU 2010/2011

33

Entits internes
Entit interne correspond une version

abrge dun texte long ou difficile saisir


<!ENTITY nom "texte associ" >

Exemple: <!ENTITY email "NOM@ufr.ac.ma" >

La rfrence se fait par le prfixe & et en

rajoutant la fin du nom un point-virgule :


&email;
Entits prdfinies: lt, gt, amp, apos et quot
reprsentent respectivement les caractres <,
>, &, ", '.

AU 2010/2011

34

Entit interne: Exemple


<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE livre [
<!ENTITY auteur "Nom et prnom de ltudiant">
]>
<livre>
<auteur>
Cours ralis par &auteur;
</auteur>
</livre>

AU 2010/2011

35

Entits externes
Entits externes sont dfinies lintrieur de

la DTD au moyen de la dclaration <!


ENTITY.>
<!ENTITY nom SYSTEM "URI">

Exemple:
<!DOCTYPE parc-machine [
<!ENTITY lab01 SYSTEM "http://www.ufr.ma/lab01.xml"
>
]>

Une rfrence lentit lab01 permet

linclusion du fichier lab01.xml dans le


document principal.

AU 2010/2011

36

Entits externes:
Exemple
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE livre [
<!ENTITY auteur "Nom et prnom de ltudiant">
<!ENTITY chap1 SYSTEM "chapitre1.xml">
]>
<livre>
<auteur>
Cours ralis par &auteur;
</auteur>
&chap1;
</livre>

AU 2010/2011

37

Entits prdfinies
lt: caractre '<'
gt: caractre '>'
amp: caractre ''
quot: caractre '"' (guillement double)
apos: caractre "'" (quillement simple ou

apostrophe)

AU 2010/2011

38

Les instructions de
traitement
Des informations supplmentaire nont pas

de rle li aux donnes ou la structuration


de votre document;
Des informations qui visent les applications
afin de mieux traiter les donnes du
document XML;
Pas demplacement exig dans le document;
Exemple:
<?xml-stylesheet type="text/xsl" href= "display.xsl"?>
NB : Encadre des caractres <? et ?>

AU 2010/2011

39

Rfrence la feuille de
style
<?xml-stylesheet type="text/xsl"
href="comp.xsl"?>

La feuille de style XSL est rfrence par le

URL en utilisant lattribut href;


Un processeur XSL sur le client ou le serveur

reoit les documents XML et XSL en entre et


gnre le document de sortie (HTML, XML
modifi,).
AU 2010/2011

40

Exercice: entits
prdfinies
Utilisation des entits prdfinies
On se propose de crer un nouveau document
livre2bis.xml reprenant lexercice prcdent
(livre2.xml). Placez dans 2 paragraphes un bloc
de texte contenant lextrait suivant :
<paragraphe> a &gt; b </paragraphe>
Pour le premier paragraphe, employez les
entits prdfinies.
Pour le deuxime paragraphe, employez une
section CDATA.
AU 2010/2011

41

Exercice : (entits internes et


externes)
Reprendre lexemple du livre
Utiliser une entit interne pour lauteur
Utiliser une entit externe pour les

paragraphes

AU 2010/2011

42

Espaces de noms
Problme: des noms dlments ou des noms

dattributs identiques ambiguts


Les espaces de noms (namespaces)

permettent:
De mlanger du vocabulaire XML provenant de

plusieurs grammaires
Didentifier de manire unique les balises XML

Recommandation: www.w3.org/TR/REC-

xmlnames

AU 2010/2011

43

Espaces de noms
La dfinition dun espace de noms peut se

faire dans nimporte quelle balise ouvrante


dlments dun document XML
Syntaxe: xmlns:prefixe= URI
Exemple : xmlns:reseau=

"http://www.ufr.com/xml/reseau"

AU 2010/2011

44

Espaces de noms: Par


dfaut
Un premier usage consiste utiliser simplement lespace de

noms par dfaut. Ce dernier est prcis par un pseudoattribut xmlns;


Lespace de noms par dfaut sapplique llment o se

situe sa dclaration et tout son contenu.

<livre xmlns="http://www.ensa.ac.ma">
<section>
...
</section>
</livre>

AU 2010/2011

45

Lespace de noms
explicite
Pour plus de souplesse dans les documents

de grande taille, lutilisation de plusieurs


espaces de nom est courante, on peut
utiliser un prfixe
Un prfixe est un raccourci vers lURL de
lespace de nom.
<es:livre
xmlns:es="http://www.hhhh.ac.ma">
</es:resultat>
AU 2010/2011

46

Suppression dun espace de noms


Aucun espace de noms nest utilis lorsquil

ny a pas despace de noms par dfaut ni de


prfixe.
Exemple :
<p:element xmlns:p="http://www.masociete.com">
<autreelement/>
</p:element>

Llment element est dans lespace de noms

http://www.masociete.com alors que


llment autreelement, qui nest pas prfix, na pas
despace de noms.

AU 2010/2011

47

Suppression dun espace de noms


Pour supprimer laction dun espace de noms il suffit dutiliser la valeur

vide "", ce qui revient ne pas avoir despace de noms.


Exemple :
<element xmlns="http://www.masociete.com">
<autreelement xmlns="">
.. Aucun d'espace de noms
</autreelement>
<encoreunelement>
... Espace de nom par dfaut
</encoreunelement>
</element>

Llment element est dans lespace de noms

http://www.masociete.com
llment autreelement nest plus dans un espace de noms.
Llment encoreunelement se trouve galement dans lespace
de noms http://www.masociete.com, de par lespace de noms de son
parent.

AU 2010/2011

48

Exercice: Espaces de
nom
Il sagit de crer un document livre3.xml sur la

base de livre1.xml en respectant les points


suivants :
Mettez tous les lments dans lespace de

noms http://www.masociete.com sans utiliser


despace de noms par dfaut.
Mettez la deuxime section dans un espace de
noms http://www.monentreprise.com.
Mettez le dernier paragraphe du dernier
chapitre de la dernire section sans espace de
noms.
AU 2010/2011

49

DTD: Document Type


Definition

AU 2010/2011

50

Principe
Une dclaration de type de document

dfinit:
Le nom des types dlments, leur contenu et

dans quel ordre dautres lments peuvent y


apparatre;
Les attributs ventuels et leur valeurs par
dfaut;
Le nom des entits qui peuvent tre utilises.

DTD peut tre interne ou externe;


Les documents XML valides doivent respecter

les rgles donnes dans la DTD;


Dans une DTD, tout ce qui nest pas
expressment autoris est interdit;
AU 2010/2011

51

Consignes avant
lutilisation
La DTD est un texte simple quon peut crer

par nimporte quel diteur de texte;


Bien qu'ils ressemblent un peu cryptique au

premier lieu, ils demeurent faciles une fois


que vous vous habituez eux;

AU 2010/2011

52

Dclaration dune DTD


Dclaration de type de document:
<!DOCTYPE ElementRacine
Et se termine par

>

Cette dclaration contient la DTD (DTD interne)


ou une adresse URL (DTD externe)
DTD interne:
<!DOCTYPE parc-machine [
<! declarations -- >
]>
AU 2010/2011

53

Elments de document
Toujours dans une DOCTYPE on dclare un

type de document avec le mot cl ELEMENT:


<!ELEMENT nom dlment (les fils+nombre ou le
type)>
Exemple:
<!ELEMENT livre (auteur+)>

AU 2010/2011

54

Les lments fils


Lors de la dfinition dun lment fils, il est

possible de spcifier le nombre dapparition


du fils par lajout dun modificateur (modifier)
aprs le nom du fils. Si le modificateur nest
pas mentionn, cela signifie que le fils va
apparaitre une et une seule fois. Les autres
options sont dcrits dans le tableau suivant :
Modificateur

Description

Rien

Une seule fois

Zero ou une seule fois

Une ou plusieurs fois

Zero ou plusieurs fois


AU 2010/2011

55

Les lments fils


La dclaration des lments fils est similaire

que les lments parents, et ils ont le mme


niveau dans la DOCTYPE:
<!ELEMENT titre (titre_ principal)>
Le sous lment fils titre doit avoir un seul fils
qui est titre principal.

AU 2010/2011

56

Les lments fils II


<!ELEMENT auteur (nom, prnom)>
Llment auteur contient deux sous lments
qui apparaitront une seule fois

AU 2010/2011

57

Les lments fils III


<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
Parfois, les lments contiennent que du

texte. Il est dclar dans la DTD comme


#PCDATA.
PCDATA est Character DATA, du texte analys
par le moteur XML.

AU 2010/2011

58

Ordre des lments


<!ELEMENT chapitre (titre, paragraphe)>
On peut indiquer lordre de lapparition des

lments fils. En prcisant dans les


parenthse lordre par les virgules.
Dans lexemple, cest le titre qui doit
apparaitre le premier, suivi de deux
paragraphes.

AU 2010/2011

59

Le choix des lments


<!ELEMENT auteur (nom|prenom)>
Dans le cas o il y a un choix dlment, le

caractre | signifie que lun des lments peut


apparaitre, ou les deux ensembles.

AU 2010/2011

60

Des lments spciaux


<!ELEMENT img EMPTY>
llment est vide. Il ne peut contenir ni

sous-lments ni donnes textuelles, mais il


peut avoir des attributs.

AU 2010/2011

61

Un contenu mixte
<!ELEMENT

paragraphe (#PCDATA

sousparagraphe)>

Parfois, les lments peuvent contenir des

valeurs textuelles, et des sous lments.


Il est possible de dfinir ce cas par lutilisation

du caractre | et les dfinitions du type


associes.

AU 2010/2011

62

Lemplacement des modificateurs


Lemplacement des modificateurs est trs

important dans la dfinition du type de


document.
Si le modificateur est en dehors des
parenthses, signifie quil est appliqu sur
lensemble des sous lments.
Sil est cot dun lment, il sera appliqu
quau niveau de ce dernier.
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT

auteur
auteur
auteur
auteur

(nom
(nom
(nom
(nom

| prnom)*>
| prnom*) >
, prnom) * >
, prnom*) >
AU 2010/2011

63

Dclaration Complexe
La dclaration des lments peut tre

complexe. Dans ce cas, lutilisation des


parenthse est importante pour plus de
prcision.
Par exemple, on peut spcifier que lauteur
est compos dun nom_complet, ou de nom et
prnom:
<!ELEMENT auteur (nom_complet | (nom ,
prnom))>
AU 2010/2011

64

Dclarations des
attributs
La dclaration des attributs se fait par le mot cl ATTLIST,

suivi par le nom de llement.


<!ATTLIST nomElement
nomAttribut typeAttribut Etat Valeurrpardefaut?
nomAttribut typeAttribut Etat Valeurrpardefaut?
>

nomElement est llment qui contient lattribut;


nomAttribut est le nom de lattribut;
typeAttribut est le type de lattribut;
Etat, il y a trois valeurs possibles: #REQUIRED(obligatoire),

#FIXED (attribut toujours prsent avec une valeur), et


#IMPLIED (optionnel).
Valeurpardefaut cest la valeur par dfaut que peut
prendre un attribut;
AU 2010/2011

65

Exemple- attributs
<!ELEMENT ressources (ressource)*>
<!ELEMENT ressource (#PCDATA)>
<!ATTLIST ressource url CDATA #REQUIRED
langue CDATA #IMPLIED
date_saisie CDATA #REQUIRED
date_modification CDATA
#IMPLIED
>
AU 2010/2011

66

Types dattributs
CDATA: des donnes textuelles
<!ATTLIST ram unite CDATA #REQUIRED>
<ram unite=Mo>....</ram>

NMTOKEN: un nom XML valide


<!ATTLIST photo Nom NMTOKEN #REQUIRED>
<photo Nom=terre ...>....</photo>

NMTOKENS: plusieurs noms XML spars par des espaces


<!ATTLIST photo Nom NMTOKENS #REQUIRED>
<photo Nom= la terre ...>....</photo>

(val1|val2|): une liste des valeurs possibles pour lattribut, chaque


valeur doit
correspondre un nom XML valide.
<!ATTLIST photo Type (GIF|JPEG|PNG) GIF>
<photo Type=GIF ...>....</photo>

ID: un identificateur unique dun lment. Cest un nom XML valide


<!ATTLIST machine idf ID #REQUIRED >

AU 2010/2011

67

Types dattributs
IDREF: lattribut peut prendre comme valeur la valeur dun

attribut de type ID dun lment du document.


<!ATTLIST personne ref IDREF #IMPLIED >
<machine idf="mach001"> </machine>
<personne ref="mach001" ></personne>
IDREFS: lattribut peut prendre comme valeur une liste de
valeurs
dattributs ID de plusieurs lments du document.
<!ATTLIST personne ref IDREFS #IMPLIED >
<machine idf="mach001"> </machine>
<machine idf="mach002"> </machine>
<personne ref="mach001 mach002" >
</personne>
AU 2010/2011

68

Type dattribut
ENTITY: lattribut peut prendre comme valeur le nom dune

entit
gnrale externe non-analysable. Ce type dattribut sert
rfrencer
des donnes binaires externes (images, fichiers sons,)
ENTITIES: lattribut peut prendre comme valeur les noms de

plusieurs
entits gnrales externes non-analysables.

AU 2010/2011

69

Valeurs par dfaut des


attributs
Il est possible de donner une valeur par dfaut

un attribut
<!ATTLIST edition type (papier|electronique) "papier"
>
La signification de ces mots cls est la suivante:
#REQUIRED: lattribut doit tre tjs prsent lorsque
llment est utilis. Il ny a pas de valeur par dfaut
<!ATTLIST edition date CDATA #REQUIRED>
#IMPLIED: lattribut correspondant est optionnel. Celui
ci ne prendra aucune valeur par dfaut
<!ATTLIST edition version CDATA #IMPLIED>
#FIXED valeur: lattribut correspondant est optionnel.
Cela revient dfinir une valeur constante.
<!ATTLIST edition new NMTOKEN #FIXED "yes">
AU 2010/2011

70

Entits paramtres
entits mais dfinies et utilises lintrieur de

la DTD (jamais dans le document XML)


Diffrence:
la rfrence commence par le signe %
La dfinition commence par % suivi dun espace et

du nom de lentit

Exemples:
1- <!ENTITY % TYPE (CD|DVD)>
<!ATTLIST DISQUE GENRE %TYPE;>
2- <!ENTITY % text (#PCDATA)>
<!ELEMENT NOM %text;>
AU 2010/2011

71

Exemple-Entits
paramtres
<!ENTITY % article "numero_article, nom_article, quantite_article">
<!ENTITY % additif "description | classe_produit">
<!ELEMENT stock (entree | sortie)*>
<!ELEMENT entree (numero_entree, (%article;), (%additif;))>
<!ELEMENT sortie (numero_sortie, (%article;), (%additif;))>
<!ELEMENT numero_entree (#PCDATA)>
<!ELEMENT numero_sortie (#PCDATA)>
<!ELEMENT numero_article (#PCDATA)>
<!ELEMENT nom_article (#PCDATA)>
<!ELEMENT quantite_article (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT classe_produit (#PCDATA)>
72

Entits paramtres
externes
Le but: permettre la construction de DTD complexes

par la mise en commun de plusieurs DTD.


Pour relier entre 2 DTDs, la syntaxe est la suivante:
Pour une DTD prive:

<!ENTITY % nom SYSTEM "URI


%nom;
Pour une DTD publique:

<!ENTITY % nom PUBLIC "NomDTD" "URI">


%nom;
N.B: URI est ladresse de la DTD inclure
AU 2010/2011

73

Exemple
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE commandes SYSTEM "commandes.dtd">
<commandes>
<commande>
<produit>
<numero_produit>39304</numero_produit>
<description>perceuse XPL75</description>
<fabricant>Bohringer &amp; fils</fabricant>
</produit>
<client>Uniprix, Filiale de Venelles</client>
<nombre>100</nombre>
<prix>45900,00</prix>
</commande>
<commande>
<produit>
<numero_produit>92842</numero_produit>
<description>Bonnet de bain Monaco</description>
<fabricant>Etienne Monet</fabricant>
</produit>
<client>La mode l'eau, Dunkerque</client>
<nombre>10</nombre>
<prix>234,00</prix>
</commande>
</commandes>

74

Exemple de DTD avec des entits


externes
<!ELEMENT produit
(numero_produit,description,fabricant
)>
<!ELEMENT numero_produit
(#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT fabricant (#PCDATA)>

<!ENTITY % donnees_produit SYSTEM


"produit.dtd">
%donnees_produit;
<!ELEMENT commandes
(commande)*>
<!ELEMENT commande (produit,
client, nombre, prix)*>
<!ELEMENT client (#PCDATA)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT prix (#PCDATA)>

75

Limites de DTD
non extensibles ( la diffrence de XML)
Une seule DTD peut tre associe chaque document
incompatibles avec les espaces de noms XML
Typage trs faible: pas de possibilits de distinguer

des types, tels nombres entiers, nombres rels et


chanes de caractres
Pas dhritage des objets
Une syntaxe non XML
Pas de prise en charge des API de XML: pas de
mcanismes pour permettre lextension et lvolution
Outils peu nombreux assez anciens et onreux
AU 2010/2011

76

Exercice-DTD
Crez la DTD carnet.dtd suivante :
<!ELEMENT carnet (personne+)>
<!ELEMENT personne EMPTY>
<!ATTLIST personne
nom CDATA #REQUIRED
prenom CDATA #IMPLIED
telephone CDATA #REQUIRED>
Crez un document XML qui soit valide par
rapport cette DTD.
AU 2010/2011

77

Exercice 2
Crez une DTD livre.dtd partir du document

livre2.xml cr dans le chapitre prcdent.


Crez une DTD article.dtd partir du

document article.xml cr dans la sance


prcdente.

AU 2010/2011

78

Exercice 3(1/2)-DTD
Un site d'actualits veut prsenter des

nouvelles brves, regroupes par thme.


Quatre thmes sont possibles : actualits,
sport, bourse et mdia. Chaque brve
correspond un unique thme. Les brves
peuvent tre rdiges en franais ou anglais,
chacune est date et possde un titre. Il est
galement possible d'illustrer une brve par
une photo et de fournir une ou plusieurs urls
vers des sites dtaillant l'information : chaque
url sera agrmente d'une courte phrase
rsumant le contenu
de la page pointe. 79
AU 2010/2011

Exercice 3(2/2)-DTD
Proposer un structuration XML d un site

dactualits
crire une DTD associe ce document XML

AU 2010/2011

80

Exercice 4
On veut reprsenter dans un format XML des sries de bandes-dessines et leurs auteurs et
illustrateurs. On veut respecter les contraintes suivantes :

pour une srie de BD, on doit pouvoir donner son titre ;

une srie peut tre soit une BD unique, soit plusieurs BDs ;
on veut pouvoir donner, pour chaque BD : son (ou ses) auteur(s), son illustrateur, son
rsum, sa date de sortie, et ventuellement sa couverture (une image) et son sous-titre ;

si la BD fait partie d'une srie, on prcisera en plus son numro dans la srie ;

diffrentes BDs d'une mme srie peuvent tre crites et/ou dessines par des personnes
diffrentes ;
une mme personne peut tre la fois auteur et illustrateur ;
pour un auteur/illustrateur on peut donner son nom et son prnom.

Le rsum d'une BD doit autoriser du contenu mixte pour mettre en lumire les noms des
personnages.

1. Fournir le document XML pour la reprsentation des sries de bandes dessines


ainsi que la DTD dcrivant un tel document.

AU 2010/2011

81

Exercice 5
Utilisation des entits paramtriques
Modifiez la DTD cre dans lexercice 2 pour

faire en sorte que la dfinition de lattribut


titre soit unique laide dune entit
paramtrique.

AU 2010/2011

82

XML schma

AU 2010/2011

83

Introduction-XML

schma
Un XML schma est une grammaire dfinie

dans un formalisme XML.


Sauf pour la gestion des entits, on peut
considrer les schmas comme remplaant
des DTD.
La version officielle est la 1.0 mais une
version 1.1 est en prparation .

AU 2010/2011

84

Introduction-XML

schma
Quelques caractristiques des schmas :
gestion des espaces de noms ;
types de base riches et extensibles ;
rutilisation par importation et hritage ;
Davantage de souplesse dans les cardinalits ;

AU 2010/2011

85

XML schma vs DTD


Les DTDs et le XML schma ont le mme objectif,
sauf que les DTDs sont plus anciennes
(SGML/HTML).
DTD na pas des types de donnes prdfinies;
DTD noffre pas la possibilit lutilisateur de

crer son propre type dlment et/ou contenu;


Limitations lors de la dfinition des cardinalits

avec les DTDs;


DTD ne supportent pas les espaces de noms, et

aucune manire pour importer et rutiliser


autres structures.
AU 2010/2011

86

Introduction-XML

schma
Schemas XML apportent des amliorations /

DTDs:
Amliorer les types
44+ versus 10
Crer un type personnel
Exemple: bas sur le type string ayant une taille de
8 caractres .
Ecrire avec la mme syntaxe que les

documents XML

Moins de syntaxe se rappeler

AU 2010/2011

87

XML schma : types


Un lment peut avoir deux types: Simple

ou compos
Un lment simple:
Prdfini:
Primitives: decimal, float, String
Driv: des primitives qui respectent un modle
(email)

Un lment compos:

AU 2010/2011

88

XML schema:types
Un lment compos:
Contient des fils et/ attributs
mixte

AU 2010/2011

89

Syntaxe
Un schema est contenu dans un lment de
genre:
<xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema>

</xs:schema>

Il faut introduire un prfixe, xs ou xsd qui

sont gnralement utiliss dans la dfinition


dun schema XML
Pour chaque lment et attribut, il faudra

dfinir llment correspondant dans le


schma.
AU 2010/2011

90

Description des lments


Chaque lment du document XML est dcrit par la

balise xsd:element;
Lattribut name de xsd:element contient le nom de
llment:
<xs:element name=machine>

</xs:element>

Il reste maintenant dfinir le type dlment:

Simple ou complexe.
AU 2010/2011

91

Types de donnes primitifs


Type

Description

string

reprsente une chane de caractres.

boolean

reprsente une valeur boolennetrueoufalse.

decimal

reprsente un nombre dcimal

float

reprsente un nombre virgule flottante.

double

reprsente un nombre rel double.

duration

reprsente une dure.

dateTime

reprsente une valeur date/heure.

time

reprsente une valeur horaire (format : hh:mm:ss.sss ).

date

reprsente une date (format : CCYY-MM-DD).

gYearMonth reprsente un mois et une anne grgorienne (format :


CCYY-MM).
gYear

reprsente une anne (format : CCYY).

gMonthDay

reprsente le jour d'un mois (format : MM-DD).

AU 2010/2011

92

Types de donnes primitifs(suite)


Types

description

gDay

reprsente le jour d'un mois


(format : DD).

gMonth

reprsente le mois (format : MM).

hexBinary

reprsente un contenu binaire


hexadcimal.

base64Binary

reprsente un contenu binaire de


base 64.

anyURI

reprsente une adresse URI (ex.:


http://www.site.com).

QName

reprsente un nom qualifi.

AU 2010/2011

93

drivs
type

description

normalizedString

reprsente une chane de caractres dont les espaces


blancs sont normaliss.

token

reprsente une chane de caractres sans espaces


blancs.

langage

reprsente un langage exprim sous forme de mot cls

NMTOKEN

reprsente le type d'attribut NMTOKEN de XML 1.0.

NMTOKENS

reprsente le type d'attributs NMTOKENS de XML 1.0.

Name

reprsente un nom XML.

id

reprsente le type d'attribut ID de XML 1.0.

IDREF

reprsente le type d'atribut IDREF de XML 1.0.

IDREFS

reprsente le type d'attribut IDREFS de XML 1.0.

ENTITY

reprsente le type d'attribut ENTITY de XML 1.0.

ENTITIES

reprsente le type d'attribut ENTITIES de XML 1.0.

integer

reprsente un nombre entier.

nonPositiveIntege reprsente un nombre entier ngatif incluant le zro.


94
AU 2010/2011
r

Les types de donnes


drivs
Type

Description

negativeInteger

reprsente un nombre entier ngatif dont la valeur maximum est -1.

long

reprsente un nombre entier long dont l'intervalle est {9223372036854775808 - 9223372036854775807}.

int

reprsente un nombre entier dont l'intervalle est {-2147483648 2147483647}.

short

reprsente un nombre entier court dont l'intervalle est {-32768 32767}.

byte

reprsente un entier dont l'intervalle est {-128 - 127}.

nonNegativeInteger

reprsente un nombre entier positif incluant le zro.

unsignedLong

reprsente un nombre entier long non-sign dont l'intervalle est {0 18446744073709551615}.

unsignedInt

reprsente un nombre entier non-sign dont l'intervalle est {0 4294967295}.

unsignedShort

reprsente un nombre entier court non-sign dont l'intervalle est {0 65535}.

unsignedByte

reprsente un nombre entier non-sign dont l'intervalle est {0 - 255}.

positiveInteger

reprsente un nombre entier positif commenant 1.

AU 2010/2011

95

Exemple: auteur.xsd
<?xml version="1.0" ?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name= "auteur">
<xs:complexType>
<xs:sequence>
<xs:element name= "Nom" type = "xs:string"/>
<xs:element name= "Prenom" type =
"xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

AU 2010/2011

96

Description des lments


Dans la balise xs:complexType, la liste des

sous lments sera dcrit lintrieur dun


des lments suivants compositeur:
xs:sequence dfinit une liste ordonne de

sous lments
xs:choice dfinit un groupe dlments dont
un seul devra tre prsent
xs:all dfinit un ensemble non ordonn
dlments

A lintrieur de ces balises, chaque sous-

lment est dcrit par une balise xs:element


AU 2010/2011

97

Type simple driv par lutilisateur


Dfinir des types personnels par restriction ou

extension:
Simples
Complexes

Dmarche:
On peut dvelopper le schma auteur par la dfinition
dun type simple personnalis en utilisant la balise:
<xs:simpleType> qui sera par la suite utilise pour la
dfinition de nouveaux lments.
On cre tout dabord un type et on ajoutant une
restriction par la balise <xs:restriction>.
Exemple: un password qui ne doit pas dpasser 8 chiffre.
AU 2010/2011

98

Exemple de cration dun


type
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="Password">
<xs:restriction base="xs:string">
Facette
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="utilisateur">
<xs:complexType>
<xs:sequence>
<xs:element name="PW" type="Password"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

AU 2010/2011

99

Type simple: Facette


Une facette est un aspect dfinissant un espace de valeur.Ce

dernier caractris par des proprits, peut subir des restrictions par
rapport une liste de valeurs spcifies, un intervalle de valeurs, un
modle de valeurs, une longueur de champ, un nombre de chiffres
et un comportement vis--vis des espaces blancs.
Application dune facette au type prdfini:
chaque facette sapplique 1 ou plusieurs types prdfinis.
Le temps: period, Duration
Types ordonns: maxInclusive, minInclusive
Tous: enumeration
Tous: pattern
<xsd:simpleType name=" nom-element">
<xsd:restriction base=" type-predefini">
Dfinition de la facette
<xsd:restriction>
</xsd: simpleType>
AU 2010/2011

100

Prinicipales Facettes
length
minLength
maxLength
pattern
enumeration
minInclusive
minExclusive
maxInclusive
maxExclusive
totalDigits
fractionDigits
AU 2010/2011

101

Exemples
pour dfinir un numro ISBN comme une chane de 6
10 caractres numriques
<xsd:simpleType name=TypeISBN>
<xsd:restriction base=xsd:string>
<xsd:pattern value=[0-9] {6,10}/>
</xsd:restriction>
</xsd:simpleType >

pour dfinir un type de donnes reprsentant une chane


de caractres acceptant un maximum de 32 caractres.
<xsd:simpleType name=NOM>
<xsd:restriction base=xsd:string>
<xsd:maxLength value=32/>
</xsd:restriction>
</xsd:simpleType >
AU 2010/2011

102

Exemple avec les chiffres


Mins and Maxs : lexemple suivant dfinit un type salaire qui est un

decimal entre 7,000 and 10,000.


<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
name= "salaire">
<xs:restriction base="xs:decimal">
<xs:minInclusive value= "7000"/>
<xs:maxInclusive value= "10000"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="Employee">
<xs:complexType>
<xs:sequence>
<xs:element name="Salary" type= "salaire"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
AU 2010/2011

<xs:simpleType

103

Nombre de chiffre aprs la virgule


En utilisant totalDigits et fractionDigits, nous pouvons

prciser que le type de salaire devrait tre compos de sept


chiffres, dont deux viennent aprs la virgule.
Les deux totalDigits et fractionDigits sont des

maximums. Autrement dit, si totalDigits est gal 5 et


fractionDigits est gal deux, un numro valide pouvait
pas avoir plus de cinq chiffres au total et pas plus de deux
chiffres aprs la virgule.

AU 2010/2011

104

Code
<?xml version="1.0"?>
<xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema>
<xs:simpleType name= "salaire">
<xs:restriction base="xs:decimal">
<xs:minInclusive value="10000"/>
<xs:maxInclusive value= "50000"/>
<xs:fractionDigits value="2"/>
<xs:totalDigits value="7"/>
</xs:restriction>
</xs:simpleType>
<xs:element name= "employ">
<xs:complexType>
<xs:sequence>
<xs:element name="Salary" type= "salaire"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

AU 2010/2011

105

Enumeration
Un type driv peut tre une liste de valeurs

possibles. Par exemple, l'lment JobTitle


pourrait tre une liste de titres d'emploi
prdfini.

AU 2010/2011

106

Code
<?xml version="1.0"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XM
LSchema"> <xs:simpleType name=
"salaire">
<xs:restriction base="xs:decimal">
<xs:minInclusive value="10000"/>
<xs:maxInclusive value="90000"/>
<xs:fractionDigits value="2"/>
<xs:totalDigits value="7"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="JobTitle">
<xs:restriction base="xs:string">
<xs:enumeration value="Sales
Manager"/>

<xs:enumeration value=
"vendeur"/> <xs:enumeration
value="Receptioniste"/>
<xs:enumeration
value="Developpeur"/>
</xs:restriction>
<xs:element name= "employ">
<xs:complexType>
<xs:sequence>
<xs:element name= "salaire"
type= "salaire"/>
<xs:element name="Title"
type="JobTitle"/>
</xs:sequence>
</xs:complexType>
</xs:element> </xs:schema>

AU 2010/2011

107

Type compos (Complexe Type)


Dans la balise xs:complexType, la liste des sous

lments sera dcrit lintrieur dun des


lments suivants compositeur:
xs:sequence dfinit une liste ordonne de sous

lments
xs:choice dfinit un groupe dlments dont un
seul devra tre prsent
xs:all dfinit un ensemble non ordonn dlments

A lintrieur de ces balises, chaque sous-lment

est dcrit par une balise xs:element


AU 2010/2011

108

Type compos (Complexe Type)

<?xml version="1.0" encoding="UTF-8"?>


<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Author">
<xs:complexType>
<xs:sequence>
<xs:element name="FirstName"
type="xs:string" />
<xs:element
name="LastName" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

AU 2010/2011

109

Exemple
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Employee">
<xs:complexType>
<xs:sequence>
<xs:element name="Name">
<xs:complexType>
<xs:choice>
<xs:element name="FirstName"/>
<xs:element name="LastName"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
AU 2010/2011

110

Nombre doccurrence
Pour spcifier le nombre dapparition des

lments, on utilise les primitives:

minOccurs
maxOccurs

? : minOccurs="0" maxOccurs="1"
+ : minOccurs="1" maxOccurs="unbounded" ;
* : minOccurs="0" maxOccurs="unbounded".

AU 2010/2011

111

Exemple avec les


occurrences
<xs:element name="plan">
<xs:complexType>
<xs:sequence maxOccurs="3">
<xs:element name="auteur" type="xs:string"
minOccurs="2" />
<xs:element name="chapitre" type="xs:string"
minOccurs="2" />
</xs:sequence>
</xs:complexType>
</xs:element>

AU 2010/2011

112

Exemple: les occurrences


2
<xs:element name="plan">
<xs:complexType>
<xs:sequence minOccurs="2" maxOccurs="3">
<xs:element name="auteur" type="xs:string"/>
<xs:element name="chapitre" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>

AU 2010/2011

113

Les attributs
Lattribut implique la prsence dun type complexe. Il est
toujours plac en dernire position.
Lattribut en lui-mme, ne contenant que du texte, est un type
simple. Lattribut peut tre global et donc rutilisable au sein de
plusieurs dfinitions de type complexe.
<xs:element name="personne"
<xs:complexType>

<xs:attribute name="nom" type="xs:string"/>


</xs:complexType>
</xs:element>

AU 2010/2011

114

Les attributs pour contenu compos


<xs:element name="Name">
<xs:complexType>
<xs:sequence>
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="LastName" type="xs:string"/>
</xs:sequence>
<xs:attribute name="Pseudonym" type="xs:boolean"/>
<xs:attribute name="HomePage" type="xs:anyURI"/>
</xs:complexType>
</xs:element>

AU 2010/2011

115

Valeur par dfaut dun


attribut
<xs:element name="FirstName">
<xs:complexType>
<xs:attribute name="Full" type="xs:boolean"
default="true"/>
</xs:complexType>
</xs:element>

AU 2010/2011

116

Attributs: rutilisation
Pour crer un attribut rutilisable pour des dfinitions de type

complexe, il faut le rendre global en le positionnant sous la


racine schma. Lattribut ref sert dsigner la dfinition
dun attribut global.
<xs:schema >
<xs:attribute name="nom">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="5"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<complexType name="monType">
<xs:attribute ref="nom"/>
</complexeType>
</xs:schema>
AU 2010/2011

117

Limitation des attributs


La prsence dun attribut peut tre dfinie par lattribut

use, qui peut prendre les valeurs suivantes:


prohibited : interdire lusage dun attribut par drivation dun
type complexe.
optional : lattribut nest pas obligatoirement renseign
(employ par dfaut).
required : lattribut est obligatoire.

AU 2010/2011

118

Exemple de code
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="a">
<xs:complexType>
<xs:attribute name="t1" use="required"
type="xs:int"/>
<xs:attribute name="t2" use="optional"
type="xs:string"
default="valeur"/>
<xs:attribute name="t3" use="required"
type="xs:token"
fixed="autre"/>
</xs:complexType>
</xs:element>
</xs:schema
AU 2010/2011

119

Le groupe dattributs
Des dfinitions dattributs communes plusieurs dfinitions

dlments peuvent tre concentres dans des groupes


dattributs. Les groupes dattributs sont dfinis globalement
et sont utiliss par rfrence.
<xs:attributeGroup name="RGB">
<xs:attribute name="rouge" type="xs:byte" use="required"/>
<xs:attribute name="vert" type="xs:byte" use="required"/>
<xs:attribute name="bleu" type="xs:byte" use="required"/>
</xs:attributeGroup>

Pour faire rfrence ce groupe dattributs, il suffit dinsrer


linstruction <xs:attributeGroup ref="RGB"/> lendroit o
nous souhaitons utiliser ces trois attributs.

AU 2010/2011

120

Restriction sur les valeurs des


attributs
<xs:attribute name= "statut">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Mr."/>
<xs:enumeration value="Ms."/>
<xs:enumeration value="Dr."/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
La valeur de lattribut ne prendra comme valeur que les trois titres:
Mr, Ms et Dr

AU 2010/2011

121

La reprsentation dun type compos


Pour dfinir un type compos, la balise

complexType permet de dfinir le contenu:


lments et attributs:
Elment compos vide:
<xs:element name="img">
<xs:complexType>
<xs:attribute name="src" type="xs:string" />
</xs:complexType>
</xs:element>
AU 2010/2011

122

Type compos: contenu


mixte
<xs:element name="ElementName">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="Child1" type="xs:string"/>
<xs:element name="Child2" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>

AU 2010/2011

123

Exercice 4
Soit un document XML contenant un nombre indtermin

dlments sous la forme :


<contact titre="..." techno="...">
<nom>...</nom>
<prenom>...</prenom>
<telephone> ...</telephone>
<email>...</email>
<email>...</email>
...
</contact>
Llment telephone et lattribut techno sont en option .
Les textes seront des chanes simples xs:string.
Vous utiliserez les types complexes numerosType et
contactType pour construire un schma nomm
annuaire.xsd.
AU 2010/2011

124

Exercice
Construction de types simples
Crez un schma annuaire2.xsd partir du
schma de lexercice prcdent.
Dfinissez et utilisez le type simple suivant :
technoType : numration dont les valeurs

possibles sont XML, Java, Autre.

Validez ce nouveau schma sur un document

de votre conception.

AU 2010/2011

125

Exercice
Ralisez les schma pour les document XML

cres dans les chapitres prcdents.

AU 2010/2011

126

You might also like