Académique Documents
Professionnel Documents
Culture Documents
XML
XML
Sommaire
1.
2.
Introduction ..................................................................................... 4
Chapitre I : XML................................................................................ 4
2.1. Prsentation de XML ....................................................................... 4
2.2. Mise en page de XML ...................................................................... 5
2.3. Les avantages de XML .................................................................... 5
3.
Chapitre II : DTD .............................................................................. 6
3.1. Introduction .................................................................................. 6
3.2. Types de DTD ................................................................................ 6
3.2.1.
Introduction ............................................................................ 6
3.2.2.
Syntaxe .................................................................................. 7
3.2.3.
DTD externe ............................................................................ 7
3.3. Dclarations d'lments .................................................................. 8
3.3.1.
Gnralits .............................................................................. 8
3.3.2.
lment texte .......................................................................... 8
3.3.3.
lment vide ........................................................................... 8
3.3.4.
Indicateurs d'occurrence ........................................................... 9
3.3.5.
Squence d'lments ................................................................ 9
1. Exemple d'utilisation valide ............................................................. 9
2. Exemples d'utilisations non valides : ............................................... 10
3.3.6.
Choix d'lments ................................................................... 10
3.3.7.
lment quelconque ............................................................... 12
3.3.8.
lment contenu mixte ........................................................ 12
3.4. Dclarations d'attributs ................................................................. 12
3.4.1.
Introduction .......................................................................... 12
3.4.2.
Valeurs par dfaut .................................................................. 13
3. Dclaration d'un attribut avec une valeur par dfaut ......................... 13
4. Dclaration d'un attribut requis ...................................................... 13
5. Dclaration d'un attribut optionnel ................................................. 13
3.4.3.
Type chane de caractres ....................................................... 14
6. Dclaration d'un attribut avec une valeur par dfaut ......................... 14
7. Dclaration d'un attribut requis ...................................................... 14
8. Dclaration d'un attribut avec une valeur fixe .................................. 14
3.4.4.
Type chane de caractres ....................................................... 15
3.4.5.
Type ID ................................................................................ 15
3.4.6.
Type numr ....................................................................... 16
3.5. Dclarations d'entits ................................................................... 16
3.5.1.
Introduction .......................................................................... 16
3.5.2.
Les entits paramtriques ....................................................... 16
3.5.3.
Les entits de caractres......................................................... 17
3.5.4.
Les entits internes ................................................................ 17
3.5.5.
Les entits externes ............................................................... 17
4.
Chapitre III : XSD ........................................................................... 19
4.1. Introduction ................................................................................ 19
4.1.1.
Limitations des DTD ............................................................... 19
4.1.2.
Apports des schmas .............................................................. 19
4.2. Les premiers pas .......................................................................... 20
4.2.1.
Introduction .......................................................................... 20
4.2.2.
Structure de base................................................................... 20
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
1 - 57
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
2 - 57
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
3 - 57
1. Introduction
Prsenter les objets de formation.
Situer les apports de connaissances et tablir le lien avec les objectifs
viss par la comptence afin de susciter une motivation plus importante
du stagiaire.
2. Chapitre I : XML
2.1.
Prsentation de XML
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
4 - 57
2.2.
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
5 - 57
3. Chapitre II : DTD
3.1. Introduction
Il peut tre parfois ncessaire de prciser les balises et attributs auxquels
on a droit lors de la rdaction d'un document XML, par exemple si l'on
veut pouvoir partager le mme type de document avec une communaut
d'autres rdacteurs. Deux solutions sont possibles : les "Schmas XML"
et les "Document Type Definition". Ces dernires sont les plus simples
manipuler et sont apparues en premier, alors que les Schmas n'taient
pas encore dfinis. Ce sont les raisons pour lesquelles nous allons nous
limiter elles pour le moment. Il ne faut pas oublier nanmoins qu'il
existe une autre solution, plus complexe certes, mais aussi plus
puissante. Elle permet notamment d'informer plus efficacement
l'utilisateur sur les balises auxquelles il a droit, ou bien de spcifier de
manire plus dtaille le formatage autoris pour le contenu de la balise
ou de l'attributToute dclaration de type de document peut tre
compose de dclarations d'lments, de dclarations d'attributs, de
dclarations d'entits, de dclarations de notations et de commentaires.
Introduction
Une DTD peut tre stocke dans deux endroits diffrents. Elle peut tre
incorpore au document XML (elle est alors dite interne), ou bien tre un
fichier part (on parle alors de DTD externe). Cette dernire possibilit
permet de la partager entre plusieurs documents XML. Il est possible de
mler DTD interne et externe. Il existe de surcrot deux types de DTD
externes : priv ou public. Les DTD prives sont accessibles uniquement
en local (sur la machine de dveloppement), tandis que les publiques
sont disponibles pour tout le monde, tant accessibles grce un URI
(Uniform Resource Identifier). Une dclaration de type de document est
de la forme :
La syntaxe DTD ne diffre pas entre une DTD interne et une externe.
Document
Millsime
OFPPT @
C-B-001.doc
Avril 07
Page
6 - 57
3.2.2.
Syntaxe
3.2.3.
DTD externe
Les deux types de DTD externes sont les DTD de type public et les DTD
de type system. Le mot-clef SYSTEM indique que le fichier spcifi se
trouve sur l'ordinateur local et qu'il est disponible uniquement titre
priv. Par contre, le mot-cl PUBLIC indique une ressource disponible
pour tous sur un serveur web distant.
Exemple de dclaration de DTD externe de type SYSTEM
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
7 - 57
Gnralits
3.3.2.
lment texte
Cet lment est le plus rpandu, puisque c'est celui qui contient... du
texte. Il se dclare ainsi :
3.3.3.
OFPPT @
lment vide
Document
Millsime
C-B-001.doc
Avril 07
Page
8 - 57
3.3.4.
Indicateurs d'occurrence
3.3.5.
Squence d'lments
Une squence d'lments est une liste ordonne des lments qui
doivent apparatre en tant qulments enfants de l'lment que l'on est
en train de dfinir. Ce dernier ne pourra contenir aucun autre lment
que ceux figurant dans la squence. Cette liste est compose d'lments
spars par des virgules et est place entre parenthses Chaque lment
enfant doit de plus tre dclar par ailleurs dans la DTD (avant ou aprs
la dfinition de la liste, peu importe). Dans le fichier XML, ils doivent
apparatre dans l'ordre de la squence
<!ELEMENT elt0 (elt1, elt2, elt3)>
Document
Millsime
C-B-001.doc
Avril 07
Page
9 - 57
<elt0>
<elt1>(...)</elt1>
<elt3>(...)</elt3>
<elt2>(...)</elt2>
</elt0>
Car l'ordre des lments n'est pas respect.
On rappelle qu'il est possible d'utiliser des indicateurs d'occurrence.
Par exemple
<!ELEMENT elt0 (elt1+, elt2*, elt3?)>
3.3.6.
Choix d'lments
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
10 - 57
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
11 - 57
3.3.7.
lment quelconque
3.3.8.
Un lment contenu mixte peut contenir aussi bien du texte, que des
lments-enfants. Il se prsente comme une liste de choix, avec des indicateurs
d'occurrence bien choisis. Le texte contenu peut se trouver n'importe quel
endroit dans l'lment, et peut tre une section CDATA
Exemple de dclaration :
<!ELEMENT citation (#PCDATA | auteur)*>
Exemple d'utilisation
<citation>
tre ou ne pas tre
</citation>
<auteur>Shakespeare</auteur>
Introduction
Comme on peut trouver dans un document XML des lments possdant des
attributs, il est normal que la DTD permette de dfinir des contraintes sur ces
derniers. On peut dclarer et attacher un lment donn chaque attribut
sparment, mais il est prfrable de les assembler sous la forme d'une liste.
Chaque attribut dfini dans la liste possde un nom et un type.
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
12 - 57
3.4.2.
Chaque attribut peut tre requis, optionnel ou fixe et avoir une valeur par dfaut.
Les exemples suivants montrent la dclaration d'un attribut appel attr attach
un lment nomm elt
3. Dclaration d'un attribut avec une valeur par dfaut
<!ELEMENT elt (...)>
<!ATTLIST elt attr CDATA "valeur">
Un tel attribut n'est pas obligatoire. S'il est omis dans le fichier XML lors de
l'utilisation de l'lment elt, il est considr comme valant valeur. Dans cet
exemple, si on crit <elt>(...)</elt>, cela est quivalent crire <elt
attr="valeur">(...)>/elt>
4.
Un tel attribut est obligatoire. Son absence dclenche une erreur du vrificateur
syntaxique sur le fichier XML.
5. Dclaration d'un attribut optionnel
<!ELEMENT elt (...)>
<!ATTLIST elt attr CDATA #IMPLIED>
3.4.2.1. Dclaration d'un attribut avec une valeur fixe
L'utilit d'un tel attribut peut sembler bizarre premire vue, puisqu'il ne peut
prendre qu'une seule valeur. Cette fonctionnalit est cependant utile lors d'une
mise jour d'une DTD, pour prserver la compatibilit avec des versions
ultrieures
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
13 - 57
3.4.3.
Chaque attribut peut tre requis, optionnel ou fixe et avoir une valeur par dfaut.
Les exemples suivants montrent la dclaration d'un attribut appel attr attach
un lment nomm elt
6.
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
14 - 57
3.4.4.
3.4.5.
Type ID
Ce type sert indiquer que l'attribut en question peut servir d'identifiant dans le
fichier XML. Deux lments ne pourront pas possder le mme atribut possdant
la mme valeur
Exemple de dclaration de type ID optionnel
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
15 - 57
3.4.6.
Type numr
Introduction
3.5.2.
Elles servent dfinir des symboles qui seront utiliss ailleurs dans la DTD. Ce
sont en quelque sorte des raccourcis d'criture : partout o une entit est
mentionne, elle peut tre remplace par la chane de caractres qui lui est
associe. Ce mcanisme s'apparente un mcanisme de "macro"Les entits
paramtriques ne peuvent pas tre utilises en-dehors d'une DTD
Exemple tir de la spcification du langage HTML
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
16 - 57
3.5.3.
Elles servent donner un nom facilement lisible des caractres qui ne sont pas
reprsentables dans l'alphabet utilis, ou qui ne sont pas disponibles au clavier.
Exemples tirs de la DTD du langage HTML 4.01
3.5.4.
Ce sont des symboles pouvant tre dfinis dans une DTD et utiliss dans un
document XML comme raccourcis d'criture. La dfinition complte du symbole
est entirement incluse dans la DTD.
Exemple
<!ENTITY ADN "Acide dsoxyribonuclique">
3.5.5.
Il s'agit soit de symboles pouvant tre dfinis dans un autre fichier, mais pouvant
tre utiliss dans un document XML ou la DTD elle-mme.
Par exemple :
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
17 - 57
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
18 - 57
Introduction
4.1.1.
Lors de son lancement, XML a t peru comme une relle chance pour les
dveloppeurs, d'avoir disposition un langage simple d'utilisation, portable sans
difficult d'une machine -et d'une application- une autre, et libre de droits.
Dans les premiers temps, un fichier XML, si on voulait le standardiser en utilisant
un vrai langage gnral de description, devait dpendre d'une DTD. Mais ce
format de description, hrit de SGML, souffre de nombreuses dficiences.
1. Premirement, 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
2. Deuximement, les DTD ne supportent pas les "espaces de nom" (nous
reviendrons sur cette notion plus loin). 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. Troisimement, le "typage" des donnes est extrmement limit.
4.1.2.
Conu pour pallier aux dficiences pr-cites des DTD, XML Schma propose, en
plus des fonctionnalits fournies par les DTD, des nouveauts :
Le typage des donnes est introduit, ce qui permet la gestion de boolens,
d'entiers, d'intervalles de temps... Il est mme possible de crer de nouveaux
types partir de types existants.
La notion d'hritage. Les lments peuvent hriter du contenu et des attributs
d'un autre lment. C'est sans aucun doute l'innovation la plus intressante de
XML Schma.
Le support des espaces de nom
Les indicateurs d'occurrences des lments peuvent tre tout nombre non ngatif
(rappel : dans une DTD, on tait limit 0, 1 ou un nombre infini d'occurrences
pour un lment).
Les schmas sont trs facilement concevables par modules.
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
19 - 57
Introduction
Le but d'un schma est de dfinir une classe de documents XML. Il permet de
dcrire les autorisations d'imbrication et l'ordre d'apparition des lments et de
leurs attributs, tout comme une DTD. Mais il permet aussi d'aller au-del
Un premier point intressant est qu'un fichier Schma XML est un document
XML. Cela permet un tel document d'tre manipul de la mme manire que
n'importe quel autre fichier XML, et en particulier par une feuille de style XSL. Il
est notamment possible d'automatiser, par exemple, la cration d'une
documentation partir d'un schma, fond sur les commentaires et explications
qui s'y trouvent. C'est d'ailleurs chose facile avec l'diteur oXygen. Il est facile,
via le menu Modules d'extension>Schema Documentation, partir d'un exemple
de schma, de produire la documentation correspondante
Le vocabulaire de XML Schma est compos d'environ 30 lments et attributs.
Ce vocabulaire est, de manire bizarrement rcursive et "auto-rfrente", dfini
dans un Schma. Mais il existe galement une DTD
4.2.2.
Structure de base
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
20 - 57
Dclarations d'lments
4.3.2.
Dclarations d'attributs
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
21 - 57
DTD
Attribu
t use
#REQUIR
ED
"blabla"
#REQUIRED
#IMPLIED
"blabla"
#IMPLIED
-
Require
Require
Attrib
ut
default
Commentair
blabla
optional
optional
blabla
Prohibit
ed
Cet
attribut
ne
doit
pas
apparatre
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
22 - 57
<xsd:element name="elt">
<xsd:complexType mixed="true">
<xsd:attribute name="attr" type="xsd:string" use="optional" />
</xsd:complexType>
</xsd:element>
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
23 - 57
4.3.3.
Dclaration et rfrencement
<xsd:element name="pages"
type="xsd:positiveInteger"></xsd:element>
<xsd:element name="auteur" type="xsd:string"></xsd:element>
<xsd:element name="livre">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="auteur" />
<xsd:element ref="pages" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Introduction
Ainsi que nous l'avons dj brivement signal, XML Schema permet de spcifier
des types de donnes bien plus finement que le langage DTD. Il distingue
notamment types simples et types complexes
4.4.2.
Types simples
4.4.2.1. Gnralits
Les types de donnes simples ne peuvent comporter ni attributs, ni lments
enfants. Il en existe de nombreux, prdfinis, mais il est galement possible d'en
"driver" de nouveaux (nous reviendrons plus loin sur cette fonctionnalit).
Enfin, il est possible de dclarer des "listes" de types
4.4.2.2. Bibliothque de types intgres
Nombreux sont les types prdfinis dans la bibliothque de types intgrs de
XML Schema. la figure suivante en donne la hirarchie, et leur liste dtaille
figure sur le site du W3C
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
24 - 57
Les types de donnes les plus simples (les chanes de caractres) que
permettaient les DTDs sont conservs, mais d'autres ont fait leur apparition. On
pourra envisager, par exemple, dans un schma dcrivant un bon de commande,
la dclaration d'un attribut quantite.
4.4.2.3. Listes
Les types listes sont des suites de types simples (ou atomiques). XML Schema
possde trois types de listes intgrs : NMTOKENS, ENTITIES et IDREFS. Il est
galement possible de crer une liste personnalise, par "drivation" de types
existants.
Par exemple :
<xsd:simpleType name="numroDeTlphone">
<xsd:list itemType="xsd:unsignedByte" />
</xsd:simpleType>
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
25 - 57
<xsd:simpleType name="numroDeTlphoneMnmoTechnique">
<xsd:union memberTypes="xsd:string numroDeTlphone" />
</xsd:simpleType>
Les lments suivants sont alors des "instances" valides de cette dclaration :
<tlphone>18</tlphone>
<tlphone>Pompiers</tlphone>
4.4.3.
4.4.3.1. Introduction
Un lment de type simple ne peut contenir de sous-lment. Il est ncessaire
pour cela de le dclarer de type "complexe". On peut alors dclarer, des
squences d'lments, des types de choix ou des contraintes d'occurrences
4.4.3.2. Squences dlments
Nous savons dj comment, dans une DTD, nous pouvons dclarer un lment
comme pouvant contenir une suite de sous-lments, dans un ordre dtermin.
Il est bien sr possible de faire de mme avec un schma.
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
26 - 57
<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>
Est quivalent une dclaration d'lment, dans une DTD, o apparatrait (nom,
prnom, dateDeNaissance, adresse, adresseElectronique, tlphone)
4.4.3.3. Choix dlments
On peut vouloir modifier la dclaration de type prcdente en stipulant qu'on
doive indiquer soit l'adresse d'une personne, soit son adresse lectronique. Pour
cela, il suffit d'utiliser un lment xsd:choice
<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>
Ce connecteur a donc les mmes effets que l'oprateur | dans une DTD.
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
27 - 57
<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>
Indique que chacun de ces lments peut apparatre une fois ou pas du tout
(quivalent de l'oprateur ? dans une DTD), et que l'ordre des lments n'a pas
d'importance (cela n'a pas d'quivalent dans une DTD).
Les fils de l'lment xsd:all doivent imprativement apparatre au plus une fois,
ce qui signifie que deux attributs, que nous allons voir maintenant, doivent tre
renseigns. Ces attributs sont minoccurs et maxoccurs.
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
28 - 57
Valeur de minOccurs
Valeur de maxOccurs
unbounded
1
+
unbounded
1
?
(pas
1
rien
(pas
ncessaire,
valeur par dfaut)
ncessaire,
dfaut)
valeur
par
valeur
par
1
(pas
ncessaire,
dfaut)
<xsd:complexType name="typePoids">
<xsd:simpleContent>
<xsd:extension base="xsd:positiveInteger">
<xsd:attribute name="unite" type="xsd:string" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
29 - 57
Introduction
4.5.2.
Nous n'allons pas ici entrer dans les dtails de la notion d'espace de nom, mais
simplement apprendre valider un document XML d'aprs un Schema XML. On
utilise pour ce faire le prfixe xmlns.
Nous avons dj vu le cas, quivalent une DTD de type PUBLIC, o le
schma est... public. Un schma est en effet un document XML, et on trouve
dans
son
lment
racine
l'attribut
xmlns:xsd="http://www.w3.org/2001/XMLSchema". Cela signifie que dans le
document, tous les lments commenant par xsd sont rfrencs cette URL.
Donc
si
on
a
dpos
un
schma
l'adresse
http://www.monsite.org/collection_schemas/biblio, on peut l'appeler par
<xsd:biblio xmlns="http://www.monsite.org/collection_schemas/biblio">.
Dans le cas d'une rfrence locale, correspondant une DTD de type
SYSTEM, on fait rfrence au schma dans le document XML en utilisant l'attribut
noNamespaceSchemaLocation, par
<biblio
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="lien_relatif_vers_le_schema">. Par exemple
<biblio
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="biblio10.xsd">.
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
30 - 57
Introduction
Les types simples et complexes permettent dj de faire plus de choses que les
dclarations dans le langage DTD. Il est possible de raffiner leur dclaration de
telle manire qu'ils soient une "restriction" ou une extension d'un type dj
existant, en vue de prciser un peu plus leur forme. Nous allons nous limiter
dans ce cours d'initiation la restriction des types simples.
4.6.2.
Restriction de type
4.6.2.1. Gnralits
On peut appliquer une "drivation" aussi bien un type simple, qu' un type
complexe. La drivation par restriction permet de crer de nouveaux types
simples partir des types simples prdfinis par le format XML Schema. On
utilise pour ce faire des "facettes", qui sont des contraintes supplmentaires
appliques un type simple particulier.
Une "facette" permet de placer une contrainte sur l'ensemble des valeurs que
peut prendre un type de base. Par exemple, on peut souhaiter crer un type
simple, appel MonEntier, limit aux valeurs comprises entre 0 et 99 inclus. On
drive ce type partir du type simple prdfini nonNegativeInteger, en utilisant
la facette maxExclusive.
<xsd:simpleType name="monEntier">
<xsd:restriction base="nonNegativeInteger">
<xsd:maxExclusive value="100" />
</xsd:restriction>
</xsd:simpleType>
Il existe un nombre important de facettes qui permettent de :
fixer, restreindre ou augmenter la longueur minimale ou maximale d'un
type simple
numrer toutes les valeurs possibles d'un type
prendre en compte des expressions rgulires
fixer la valeur minimale ou maximale d'un type (voir l'exemple ci-dessus)
fixer la prcision du type...
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
31 - 57
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
32 - 57
4.7.
4.7.1.
Inclusion de schmas
4.7.2.
Documentation
XML Schema permet, outre l'utilisation des commentaires comme tout format
XML, l'adjonction de documentation aux lments.
La documentation l'intention des lecteurs humains peut tre dfinie dans des
lments xsd:documentation, tandis que les informations l'intention de
programmes doivent tre incluses dans des lments xsd:appinfo. Ces deux
lments doivent tre placs dans un lment xsd:annotation. Ils disposent
d'attributs optionnels : xml:lang et source, qui est une rfrence une URI
pouvant tre utilise pour identifier l'objectif du commentaire ou de l'information.
Les lmenst xsd:annotation peuvent tre ajouts au dbut de la plupart des
constructions. Voir par exemple le schma biblio10.xsd dj donn.
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
33 - 57
4.7.3.
Attribut null
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
34 - 57
5. Chapitre IV : XSL
5.1.
Prsentation
5.1.1.
Introduction
5.1.2.
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
35 - 57
5.2.
5.2.1.
Exemple simple
5.2.1.1. Introduction
Il est possible de traiter de manire simple un fichier XML contenant une
information relativement linaire. Ainsi, l'exemple dj prsent d'une
composition de bouteille d'eau, dans le cas d'une seule bouteille, se prte
facilement une simple mise en forme HTML.
5.2.1.2. Exemple
Exemple d'un document XML li une feuille de style XSL simple :
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="bouteille1.xsl"?>
<bouteille>
<marque>Cristaline</marque>
<composition>calcium 71mg/l, magnsium 5,5mg/l, chlorure 20mg/l,
nitrate 1mg/l, traces de fer.</composition>
<source>
<ville>St-Cyr la Source</ville>
<departement>Loiret</departement>
</source>
<code_barre>3274080005003</code_barre>
<contenance>150cl</contenance>
<ph>7,45</ph>
</bouteille>
Et voici la feuille de style XSL associe :
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>Exemple de sortie HTML</title>
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1" />
</head>
<body>
<h1>Bouteille de marque <xsl:value-of
select="bouteille/marque" /></h1>
<h2>Composition:</h2>
<p><xsl:value-of select="bouteille/composition" /></p>
<h2>Lieu d'origine:</h2>
<p>Ville de <b><xsl:value-of
select="bouteille/source/ville" /></b>, dans le
dpartement <b><xsl:value-of
select="bouteille/source/departement" /></b></p>
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
36 - 57
5.2.2.
5.2.2.1. Introduction
Il arrive que la structure du document XML ne soit pas linaire, mais fonde
sur, par exemple, des boucles, ou bien comporte un nombre indtermin de fois
un mme lment ; c'est d'ailleurs le plus souvent le cas.
On peut ainsi reprendre l'exemple de la bouteille d'eau, qui se prsente sous la
forme du fichier XML suivant :
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="bouteille1.xsl"?>
<bouteille>
<marque>Cristaline</marque>
<composition>
<ion_positif>calcium 71mg/l</ion_positif>
<ion_negatif>nitrate 1mg/l</ion_negatif>
<ion_positif>magnsium 5,5mg/l</ion_positif>
<ion_negatif>chlorure 20mg/l</ion_negatif>
<autres_materiaux>fer</autres_materiaux>
</composition>
<source>
<ville>St-Cyr la Source</ville>
<departement>Loiret</departement>
</source>
<code_barre>3274080005003</code_barre>
<contenance>150cl</contenance>
<ph>7,45</ph>
</bouteille>
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
37 - 57
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
38 - 57
6. Chapitre V : XSLT
6.1.
6.1.1.
Introduction
6.1.2.
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
39 - 57
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
40 - 57
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
41 - 57
6.2.
XPath
6.2.1.
Introduction
Comme son nom l'indique, XPath est une spcification fonde sur l'utilisation
de chemin d'accs permettant de se dplacer au sein du document XML. Dans ce
but, un certain nombre de fonctions ont t dfinies. Elles permettent de traiter
les chanes de caractres, les boolens et les nombres.
Le XPath tablit un arbre de noeuds correspondant au document XML. Les
types de noeuds peuvent tre diffrents : nud d'lment, nud d'attribut et
nud de texte. En vue d'une utilisation plus aise, le XPath comprend un
mcanisme qui associe tous ces types une chane de caractres.
La syntaxe de base du XPath est fonde sur l'utilisation d'expressions. Une
expression peut s'appliquer quatre types d'objets :
un ensemble non ordonn de noeuds ;
une valeur boolenne (vrai ou faux) ;
un nombre en virgule flottante ;
une chane de caractres.
Chaque valuation d'expression dpend du contexte courant. Une des
expressions les plus importantes dans le standard XPath est le chemin de
localisation. Cette expression slectionne un ensemble de nuds partir d'un
nud contextuel.
6.2.2.
Chemin de localisation
6.2.2.1. Introduction
Un chemin de localisation peut tre de type absolu ou relatif.
Dans le cas o il est de type absolu, il commence toujours par le signe /
indiquant la racine du document XML ;
Dans le cas o il est de type relatif, le nud de dpart est le nud contextuel
courant.
La syntaxe de composition d'un chemin de localisation peut tre de type
abrg ou non abrg. Toute syntaxe non abrge ne trouve pas forcment
d'quivalence en syntaxe abrge.
Un chemin de localisation est compos de trois parties :
un axe, dfinissant le sens de la relation entre le nud courant et le jeu de
nuds localiser;
un nud spcifiant le type de nud localiser;
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
42 - 57
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
43 - 57
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
44 - 57
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
45 - 57
6.2.3.
Fonctions de base
6.2.3.1. Gnralits
De nombreuses fonctions peuvent tre utilises. Ces fonctions concernent
quatre catgories d'objets : nuds, chanes de caractres, boolens, nombres.
Chaque fonction peut avoir zro ou plusieurs arguments. Dans les descriptions
suivantes, lorsqu'un lment est suivi du caractre ?,cela signifie qu'il est
optionnel. Cette liste est loin d'tre exhaustive. Le chapitre suivant prsente les
fonctions XPath de manire plus complte.
6.2.3.2. Manipulation de nuds
Fonctions retournant un nombre :
last() : retourne un nombre gal l'index du dernier nud dans le
contexte courant.
position() : retourne un nombre gal la position du nud dans le
contexte courant.
Fonction retournant un jeu de nuds : id(objet), permet de slectionner les
lments par leur identifiant.
6.2.3.3. Manipulation de chanes de caractres
Beaucoup de fonctions existent. Citons pour mmoire notamment :
string(noeud?) : cette fonction convertit un objet en chane de
caractres selon les rgles suivantes :
un ensemble de nuds est converti en chane de caractres en retournant la
valeur textuelle du premier nud de l'ensemble dans l'ordre du document. Si
l'ensemble des nuds est vide, une chane vide est retourne.
un nombre est converti en chane suivant des rgles dpendant de sa nature
(NaN, nombre entier, non-entier, zro...).
la valeur boolenne false est convertie en chane de caractres "false", de
mme pour la valeur boolenne true.
Cette fonction n'a pas pour objet de convertir des nombres en chanes de
caractres pour les prsenter aux utilisateurs ; il existe des fonctions de
transformations XSLT pour ce faire (format-number et xsl:number)
concat(chaine1, chaine2, chaine*) : retourne une chane rsultant de
la compilation des arguments
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
46 - 57
la fonction.
ceiling(nombre) : retourne le plus petit entier suprieur l'argument
pass la fonction.
round(nombre) : retourne l'entier le plus proche de l'argument pass la
fonction.
6.2.4.
lments XSLT
Gnralits
Introduction
Dans cette partie, nous allons dtailler quelques lments XSLT et prsenter
des exemples d'utilisation. Ne sera introduite ici qu'environ la moiti des
lments de formatage XSLT ; libre vous de vous renseigner sur les lments
manquants.
Le nom de domaine utilis pour les exemples est celui de la spcification 1.0 :
http://www.w3.org/TR/xslt. C'est celui qui est le plus abouti (il est l'tat de
Recommendation, alors que la spcification XSLT 2.0 est encore l'tat de
Working Draft).
Rappel : prologue d'un document XSL
Un fichier XSL doit commencer par les lignes indiquant le numro de version
XML et l'encodage de caractres utilis :
<?xml version="1.0" encoding="ISO-8859-1"?>
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
47 - 57
2. Les fondamentaux
Gnralits
Sont prsents ici les lments de base du document XSL, ceux que l'on
retrouve dans l'immense majorit des cas, voire la totalit pour certains.
<xsl:stylesheet>
Cet lment doit tre l'lment racine du document XSL, et en tant que tel doit
figurer juste aprs le prologue (et les commentaires ventuels qui suivraient
celui-ci). Il contient tous les autres lments de mise en forme. Dans le cas
gnral, l'utilisation de cet lment est de la forme :
<xsl:stylesheet id="id" version="nombre" xmlns:pre="URI"> (...)
</xsl:stylesheet>
id est l'identifiant unique de la feuille de style. version est le numro de
version de la feuille de style XSLT. A l'heure actuelle, la version peut tre 1.0 ou
1.1. xmlns:pre correspond la dfinition de l'espace de noms. pre indique le
prfixe qui sera utilis dans la feuille de style pour faire rfrence l'URI de
l'espace nominal. Exemples :
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
48 - 57
Par exemple :
<xsl:output method="html" version="html4.01" encoding="ISO-8859-1"
doctype-public="-//W3C//DTD HTML 4.01//EN" doctypesystem="http://www.w3.org/TR/html4/strict.dtd" />
... permet d'indiquer que le fichier de sortie sera au format HTML 4.01, conforme
la DTD publique de l'HTML du W3C, et que le jeu de caractres utilis est l'ISO8859-1. Le rsultat en sortie est un fichier HTML commenant par
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
... et possdant dans son <head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO8859-1" />
L'utilisation d'un tel lment permet donc de se dispenser de la spcification
explicite du codage de caractres via un lment <meta> lors de l'criture de la
feuille de style XSL.
<xsl:template>
Cet lment dfinit un modle appliquer un nud et un contexte
spcifiques. L'utilisation de cet lment est de la forme :
<xsl:template name="nommodele" match="expression" mode="modemodele">
</xsl:template>
name correspond au nom associ au modle.
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
49 - 57
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
50 - 57
rsultat
de
la
<xsl:attribute name="nom">valeur</xsl:attribute>
name correspond au nom de l'attribut ajouter dans le contexte courant. valeur
correspond la valeur lui donner. Par exemple :
<image><xsl:attribute name="src">test.gif</xsl:attribute></image>
... permet d'ajouter l'lment image l'attribut src et de lui affecter la valeur
test.gif, ce qui a pour effet de produire en sortie l'lment suivant :
<image src="test.gif"></image>
On aurait pu, de manire tout fait quivalente, crire
<xsl:element name="image"><xsl:attribute
name="src">test.gif</xsl:attribute></xsl:element>
... ce qui a pour effet de produire en sortie
<image src="test.gif"></image>
Syntaxe courte
Il est possible de crer des lments de manire plus compacte, l'aide d'une
syntaxe particulire. Supposons par exemple que nous ayons dans un fichier XML
l'lment <image source="test.gif" texte_alternatif="Image de test"/>, et que
nous souhaitions obtenir dans le fichier de sortie l'lment <img src="test.gif"
alt="Image de test"/>. Il existe deux manires :
La syntaxe longue, avec...
<xsl:element name="img"><xsl:attribute name="src"><xsl:value-of
select="@source" /></xsl:attribute><xsl:attribute
name="alt"><xsl:value-of
select="@texte_alternatif" /></xsl:attribute></xsl:element>
La syntaxe courte, utilisant des accolades...
<img src="{@source}" alt="{@texte_alternatif}" />
La seconde syntaxe est plus compacte ; mais elle prsente deux inconvnients :
Ds lors que des expressions XPath sont un peu longues, cette syntaxe
complique la relecture de la feuille de style ;
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
51 - 57
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
52 - 57
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
53 - 57
Conditions de test
<xsl:if>
Cet lment permet la fragmentation du modle dans certaines conditions. Il est
possible de tester la prsence d'un attribut, d'un lment, de savoir si un
lment est bien le fils d'un autre, de tester les valeurs des lments et attributs.
L'utilisation de cet lment est de la forme :
<xsl:if test="condition">action</xsl:if>
test prend la valeur 1 ou 0 suivant le rsultat de la condition (vrai ou faux).
action correspond l'action devant tre effectue (texte afficher, second test,
gestion de chane...). Exemple d'utilisation:
<ul>
<xsl:for-each select="livre">
<li>
<b><xsl:value-of select="auteur" /><br /></b>
<xsl:value-of select="titre" />.<xsl:if
test="@langue='franais'">Ce livre est en franais.</xsl:if>
</li>
</xsl:for-each>
</ul>
Dans le code prcdent, si l'attribut langue de l'lment livre vaut francais, le
processeur ajoutera au fichier de sortie la phrase "Ce livre est en franais". Il ne
se passe rien si ce n'est pas le cas.
<xsl:choose>
Cet lment permet de dfinir une liste de choix et d'affecter chaque choix une
transformation diffrente. Chaque choix est dfini par un lment <xsl:when> et
un traitement par dfaut peut tre spcifi grce l'lment <xsl:otherwise>.
Exemple d'utilisation :
<ul>
<xsl:for-each select="livre">
<li>
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
54 - 57
Variables et paramtres
Introduction
Il est possible en XSLT de dfinir des variables et des paramtres permettant de
faire des calculs. Il est ncessaire pour cela de faire appel deux lments XSL :
xsl:variable et xsl:param.
lment <xsl:variable>
L'lment <xsl:variable> sert crer les variables dans XSLT. Il possde les
attributs suivants :
name : cet attribut est obligatoire. Il spcifie le... nom de la variable.
select : expression XPath qui spcifie la valeur de la variable.
Par exemple :
<xsl:variable name="nombre_livres" select="255" />
<xsl:variable name="auteur" select="'Victor Hugo'" />
<xsl:variable name="nombre_pages" select="livre/tome/@page" />
On notera la prsence des guillemets imbriqus quand il s'agit d'affecter une
chane de caractres une variable.
La porte d'une variable est limite aux lments-frres et leurs
descendants. Par consquent, si une variable est dclare dans une boucle
xsl:for-each ou un lment xsl:choose ou xsl:if, on ne peut s'en servir endehors de cet lment.
Une variable est appele en tant prcde du caractre $ : <xsl:value-of
select="$nombre_pages" />.
On peut utiliser une variable pour viter la frappe rptitive d'une chane de
caractres, et/ou faciliter la mise jour de la feuille de style.
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
55 - 57
OFPPT @
Document
Millsime
C-B-001.doc
Avril 07
Page
56 - 57