L'essentiel de XMLCours XMLOlivier Carton
L'essentiel de XML: Cours XMLOlivier Carton Version du
12/07/2011 Copyright 2007-2011 Olivier Carton Rsum Support du cours
XML en M2 Pro l'Universit Paris Diderot. Ce document est le support
d'un cours XML donn en M2 Pro l'Universit Paris Diderot. L'objectif
est de prsenter les aspects essentiels de XML de manire concise et
illustre par de nombreux exemples. Les principaux thmes abords sont
la syntaxe de XML, la validation de documents par des DTD, des
schmas et des schematrons, le langage XPath, la transformation de
document par XSLT ainsi que la programmation. Ce support de cours
est actuellement en cours de rdaction. Il contient encore beaucoup
d'erreurs et d'omissions. Certaines parties mritent d'tre dveloppes
et/ou reprises. Une certaine indulgence est donc demande au
lecteur. Toutes les corrections, mme les plus mineures, suggestions
et encouragements sont les bienvenus. Ils participent l'amlioration
de ce document pour le bien de tous.
Table des matires1. Prsentation de XML
.................................................................................................................
1 1.1. Historique
......................................................................................................................
1 1.2. Intrts
..........................................................................................................................
1 1.3. Langages apparents
........................................................................................................
3 1.4. Dialectes
.......................................................................................................................
4 1.5. DocBook
.......................................................................................................................
5 1.6. Conventions
...................................................................................................................
5 2. Syntaxe de XML
.......................................................................................................................
7 2.1. Premier exemple
.............................................................................................................
7 2.2. Caractres
......................................................................................................................
7 2.3. URI, URL et URN
........................................................................................................
12 2.4. Syntaxe et structure
.......................................................................................................
14 2.5. Composition globale d'un document
.................................................................................
14 2.6. Prologue
......................................................................................................................
15 2.7. Corps du document
.......................................................................................................
16 2.8. Exemples minimaux
......................................................................................................
22 2.9. XInclude
......................................................................................................................
23 3. DTD
......................................................................................................................................
25 3.1. Un premier exemple
......................................................................................................
25 3.2. Dclaration de la DTD
...................................................................................................
25 3.3. Contenu de la DTD
.......................................................................................................
28 3.4. Commentaires
...............................................................................................................
28 3.5. Entits
.........................................................................................................................
29 3.6. Dclaration d'lment
.....................................................................................................
32 3.7. Dclaration d'attribut
......................................................................................................
35 3.8. Outils de validation
.......................................................................................................
40 4. Espaces de noms
.....................................................................................................................
41 4.1. Introduction
..................................................................................................................
41 4.2. Identification d'un espace de noms
...................................................................................
42 4.3. Dclaration d'un espace de noms
......................................................................................
42 4.4. Porte d'une dclaration
..................................................................................................
43 4.5. Espace de noms par dfaut
.............................................................................................
43 4.6. Attributs
......................................................................................................................
44 4.7. Espace de noms XML
....................................................................................................
45 4.8. Quelques espaces de noms classiques
...............................................................................
45 5. Schmas XML
........................................................................................................................
47 5.1. Introduction
..................................................................................................................
47 5.2. Un premier exemple
......................................................................................................
48 5.3. Structure globale d'un schma
.........................................................................................
49 5.4. Dclarations d'lments
..................................................................................................
51 5.5. Dfinitions de types
.......................................................................................................
53 5.6. Constructions de types
...................................................................................................
60 5.7. Dclarations d'attributs
...................................................................................................
67 5.8. Extension de types
........................................................................................................
70 5.9. Restriction de types
.......................................................................................................
72 5.10. Substitutions
...............................................................................................................
79 5.11. Groupes d'lments et d'attributs
....................................................................................
94 5.12. Contraintes de cohrence
..............................................................................................
96 5.13. Espaces de noms
.......................................................................................................
102 5.14. Imports d'autres schmas
.............................................................................................
106 5.15. Expressions rationnelles
..............................................................................................
106 6. XPath
..................................................................................................................................
110 6.1. Donnes et environnement
............................................................................................
110 6.2. Expressions de chemins
................................................................................................
118 6.3. Valeurs atomiques
.......................................................................................................
125
iii
L'essentiel de XML
6.4. Listes
........................................................................................................................
6.5. Comparaisons
.............................................................................................................
6.6. Structures de contrle
...................................................................................................
6.7. Syntaxe abrge
..........................................................................................................
6.8. Motifs
.......................................................................................................................
6.9. Utilisation interactive de xmllint
....................................................................................
6.10. Rcapitulatif des oprateurs XPath
................................................................................
7. Schematron
...........................................................................................................................
7.1. Introduction
................................................................................................................
7.2. Premier exemple
.........................................................................................................
7.3. Fonctionnement
...........................................................................................................
7.4. Structure globale d'un schematron
..................................................................................
7.5. Rgles
.......................................................................................................................
7.6. Rgles abstraites
..........................................................................................................
7.7. Blocs abstraits
.............................................................................................................
7.8. Phases de validations
...................................................................................................
8. XSLT
..................................................................................................................................
8.1. Principe
.....................................................................................................................
8.2. Premier programme : Hello, World!
........................................................................
8.3. Modle de traitement
...................................................................................................
8.4. Entte
........................................................................................................................
8.5. Dfinition et application de rgles
..................................................................................
8.6. Construction de contenu
...............................................................................................
8.7. Structures de contrle
...................................................................................................
8.8. Tris
...........................................................................................................................
8.9. Variables et paramtres
................................................................................................
8.10. Fonctions d'extension XPath
........................................................................................
8.11. Modes
......................................................................................................................
8.12. Indexation
................................................................................................................
8.13. Documents multiples
..................................................................................................
8.14. Analyse de chanes
....................................................................................................
8.15. Import de feuilles de style
...........................................................................................
9. XSL-FO
...............................................................................................................................
9.1. Premier exemple
.........................................................................................................
9.2. Structure globale
.........................................................................................................
10. CSS
...................................................................................................................................
10.1. Principe
....................................................................................................................
10.2. Rgles
......................................................................................................................
10.3. Hritage et cascade
....................................................................................................
10.4. Modle de botes
.......................................................................................................
10.5. Style et XML
............................................................................................................
10.6. Attachement de rgles de style
.....................................................................................
10.7. Principales proprits
..................................................................................................
11. SVG
..................................................................................................................................
11.1. Un premier exemple
...................................................................................................
11.2. lments de dessins
...................................................................................................
11.3. Transformations
.........................................................................................................
11.4. Indications de style
....................................................................................................
11.5. Courbes de Bzier et B-splines
.....................................................................................
12. Programmation XML
............................................................................................................
12.1. SAX
........................................................................................................................
12.2. DOM
.......................................................................................................................
12.3. Comparaison
.............................................................................................................
12.4. AJAX
......................................................................................................................
A. Acronymes
...........................................................................................................................
Bibliographie
............................................................................................................................
Index
.......................................................................................................................................
132 135 138 140 141 142 143 145 145 145 146 147 148 150 151 154
155 155 157 157 159 161 166 182 188 189 195 197 198 201 202 203 205
205 205 206 206 206 210 211 211 212 213 215 215 215 218 218 219 222
222 224 227 227 230 232 233
iv
Chapitre 1. Prsentation de XMLLe langage XML (eXtended Markup
Language) est un format gnral de documents orient texte. Il s'est
impos comme un standard incontournable de l'informatique. Il est
aussi bien utilis pour le stockage de document que pour la
transmission de donnes entre applications. Sa simplicit, sa
flexibilit et ses possibilits d'extension ont permis de l'adapter
de multiples domaines allant des donnes gographiques au dessin
vectoriel en passant par les changes commerciaux. De nombreuses
technologies se sont dveloppes autour de XML et enrichissent ainsi
son environnement. Le langage XML drive de SGML (Standard
Generalized Markup Language) et de HTML (HyperText Markup
Language). Comme ces derniers, il s'agit d'un langage orient texte
et form de balises qui permettent d'organiser les donnes de manire
structure.
1.1. HistoriqueL'historique suivant retrace les grandes tapes
qui ont conduit la naissance de XML. L'anctre de XML est le langage
SGML qui a t introduit en 1986 par C. Goldfarb. SGML a t conu pour
des documentations techniques de grande ampleur. Sa grande
complexit a frein son utilisation en dehors des projets de grande
envergure. En 1991, T. Berners-Lee a dfini le langage HTML pour le
WEB. Ce langage est une version simplifie l'extrme de SGML, destine
une utilisation trs cible. XML est, en quelque sorte, intermdiaire
entre SGML et HTML. Il vite les aspects les plus complexes de SGML
tout en gardant suffisamment de souplesse pour une utilisation
gnraliste. La version 1.0 de XML a t publie en 1998 par le
consortium W3C (World Wide Web Consortium). Une redfinition XHTML
de HTML 4.0 travers XML a t donne en 1999. Un seconde version 1.1,
qui est simplement une mise jour pour les caractres spciaux en lien
avec Unicode, a, ensuite, t publie en 2004.
1.2. IntrtsXML est devenu omniprsent dans le monde de
l'informatique. De nombreux standards sont apparus et permettent
des applications diffrentes de stocker mais surtout de partager des
documents. L'exemple le plus emblmatique et le plus connu est le
format OpenDocument qui est utilis par OpenOffice, maintenant appel
LibreOffice, mais aussi par d'autres suites bureautiques comme
KOffice. Un autre exemple est le format de dessins vectoriels SVG
[Chapitre 11] utilis par Inkscape. Ce succs de XML est en grande
partie du ses qualits. Nous allons d'abord numrer ces
caractristiques essentielles qui ont conduit ce dveloppement puis
nous allons les dtailler plus en profondeur. Sparation stricte
entre contenu et prsentation Simplicit, universalit et extensibilit
Format texte avec gestion des caractres spciaux Structuration forte
Modles de documents (DTD [Chapitre 3] et Schmas XML [Chapitre 5])
Format libre Une des ides directrices de XML est la sparation entre
contenu et prsentation. Il faut bien distinguer le contenu d'un
document et la prsentation qui en est donne. Un mme contenu peut
tre rendu de faons trs diffrentes. Cet ouvrage peut, par exemple,
se prsenter comme un livre imprim ou comme une collections de pages
WEB. Le contenu est constitu, au dpart, de textes et
d'illustrations mais aussi de liens entre ces lments.
L'organisation du texte en chapitres, sections et sous-sections
ainsi que les renvois entre chapitres font partie intgrante du
contenu du document. La prsentation est au contraire la faon de
prsenter ce contenu au lecteur. Un des premiers principes de XML
est d'organiser le contenu de manire indpendante de la prsentation.
Ce principe de sparation est dj prsent dans HTML. Le rendu d'une
page HTML est globalement confi au navigateur. Les paragraphes des
documents HTML sont, par exemple, crits au kilomtre, sans
indication de fins de lignes. Il appartient au navigateur de les
dcouper en lignes en fonction de la taille de la page. C'est trs
diffrent d'un document PDF
1
Prsentation de XML
o le dcoupage en pages et en lignes est fige par le document. La
sparation n'est cependant pas totale en HTML. Certaines balises
comme
- et
- sont destines la structuration du document. Pour ces deux
balises, il s'agit d'crire une numration. La prsentation de cette
numration (marges, symbole marquant chaque entre, ) est dlgue au
navigateur. D'autre balises comme ou donnent davantage des
indications de prsentation. Cette sparation entre contenu et
prsentation a t accrue en HTML par l'introduction de CSS [Chapitre
10]. Une feuille de style CSS est charge de donner au navigateur
toutes les informations relatives la prsentation. Le document HTML
peut alors se recentrer sur la structuration du contenu de faon
indpendante de la prsentation. Cette sparation entre contenu et
prsentation est difficile obtenir. Le rdacteur d'un document a
souvent une prsentation en tte et il est tentant pour lui d'essayer
de l'imposer. La sparation est encore plus marque en XML car la
signification des balises n'est pas fige comme en HTML. La rgles
est alors de choisir les balises pour organiser le document en
privilgiant la structure de celui-ci par rapport une ventuelle
prsentation. Un second principe de XML est une structuration forte
du document. Pour illustrer ce principe, la mme adresse est donne
ci-dessous dans un style HTML puis dans un style XML. Olivier
Carton
175, rue du Chevaleret
75013 Paris
Olivier.Carton@liafa.jussieu.fr Olivier Carton 175 rue du
Chevaleret 75013Paris Olivier.Carton@liafa.jussieu.fr Les deux
adresses contiennent les mmes informations purement textuelles. La
suppression des balises comme
ou donne le mme rsultat pour les deux adresses. Les balises
prsentes dans la premire adresse permettent le dcoupage en ligne et
la balise indique une police de caractres approprie pour l'adresse
lectronique. Le rle de ces balises est seulement d'assurer un rendu
correct de l'adresse. Les balises dans la premire adresse relvent
de la prsentation alors que les balises dans la seconde adresse
comme ont un rle smantique. Ces dernires structurent les donnes
textuelles et ajoutent ainsi de l'information. Le nom est, par
exemple, dcompos en prnom et nom. Cette information supplmentaire
facilite le traitement des donnes. Il devient, par exemple, trs
facile de mettre le nom en majuscule. En revanche, le rendu exact
de l'adresse lectronique est la charge de l'application traitant
l'adresse. L'adresse lectronique peut, par exemple, tre supprime si
l'adresse est utilise pour une lettre. Une des caractristiques
essentielles de XML est son extensibilit et sa flexibilit.
Contrairement HTML, le vocabulaire, c'est--dire l'ensemble des
balises autorises, n'est pas fig. La norme HTML fixe les balises
pouvant apparatre dans un document ainsi que leur imbrication
possible. titre d'exemple, la balise
- peut uniquement apparatre dans le contenu d'une balise
ou . En revanche, les noms des balises XML sont libres. Il
appartient aux auteurs de documents de fixer les balises utilises.
Il est seulement ncessaire que les auteurs s'entendent sur le
vocabulaire, c'est--dire la liste des balises utilises, lorsque des
documents sont changs. Cette libert dans les noms de balises permet
de dfinir des vocabulaires particuliers adapts aux diffrentes
applications. Il existe ainsi des vocabulaires pour dcrire des
dessins vectoriels, des changes commerciaux ou des programmes de
tlvision. Ces vocabulaires particuliers sont appels dialectes XML.
Il en existe des centaines voire des milliers pour couvrir tous les
champs d'application de XML. La libert dans le choix des noms de
balises implique une contrepartie. Il devient ncessaire de fixer
des rgles que doivent respecter les documents. Sans ces rgles, il
n'est pas possible d'changer et de traiter de manire automatique
ces documents. Ces rgles doivent d'abord fixer le vocabulaire mais
aussi les relations entre les2Prsentation de XMLbalises. Les rgles
peuvent, par exemple, imposer qu'une balise (cf. exemple ci-dessus)
contiennent exactement une balise et une balise sans pour autant
fixer l'ordre de ces deux balises. Ces ensembles de rgles portant
sur les documents XML sont appels modles de documents. Plusieurs
langages ont t dvelopps pour dcrire ces modles. Le premier de ces
langages est celui des DTD (Document Type Definition) qui est hrit
de SGML. Des langages plus puissants, parmi lesquels les schmas ou
relax NG, ont t introduits depuis pour remplacer les DTD. L'intrt
principal de ces modles de documents est de pouvoir dcrire
explicitement les rgles respecter pour un document et de pouvoir
vrifier si un document donn les respecte effectivement. Avant ces
modles de documents, il n'tait pas rare que les donnes fournir un
logiciel ne fussent pas dcrites de faon trs prcise. Il n'tait alors
pas toujours facile de prvoir si des donnes seraient acceptes par
le logiciel, et si ce n'tait pas le cas de dterminer lequel des
donnes ou du logiciel tait en cause. Les modles de document tels
que les DTD ou les schmas peuvent servir une vrification
automatique des documents. Il existe plusieurs implmentations de
ces modles. Cela autorise la vrification qu'un document donn
satisfait ou non les contraintes spcifies par une DTD ou un schma.
Lorsque les entres possibles d'un logiciel sont dcrites par un tel
modle, il est possible de vrifier de faon indpendante du logiciel
que les donnes sont correctes. Cette possibilit est particulirement
intressante lors d'changes de documents. Bien que les donnes
prsentes dans un document XML soient fortement structures, le
format XML est un format bas sur du texte. Il est ainsi possible de
manipuler un document XML l'aide d'un simple diteur de texte. Il
n'est pas ncessaire d'utiliser un logiciel spcialis. Il existe bien
sr des logiciels spcialement conus pour l'dition de documents XML.
Ceux-ci peuvent grandement faciliter la tche de l'auteur mais ils
ne sont pas indispensables. Cet ouvrage a, par exemple, t rdig avec
l'diteur Emacs. Un des atouts d'XML est sa prise en charge native
des caractres spciaux grce Unicode. De plus, il est possible
d'utiliser les diffrents codages (UTF-8, Latin-1, ) possibles
puisque l'entte d'un document spcifie le codage. De nombreuses
technologies se sont dveloppes autour de XML et en facilitent
l'utilisation. Un des champs d'application est la manipulation et
la transformation de documents XML. Il s'agit, par exemple, de
rorganiser un document ou d'en extraire des fragments ou de le
transformer compltement dans un autre format comme PDF. Comme tous
les documents XML partagent la mme syntaxe quel que soit leur
vocabulaire, des outils permettent de manipuler ces documents de
manire gnrale en s'affranchissant des aspects syntaxiques. Des
langages de haut niveau comme XSLT [Chapitre 8] autorisent la
description simple et concise de transformations. Le grand intrt de
ces langages est qu'ils sont indpendants du vocabulaire utiliss et
qu'ils s'adaptent tous les dialectes XML. Le langage XSLT manipule
chaque document XML sous la forme d'un arbre issu de la structure
des donnes. Les transformations sont dcrites en XSLT par des rgles
qui s'appliquent aux fragments dlimits par les balises. Ce langage
XSLT est doublement intressant. D'une part, il constitue un outil
la fois pratique et puissant et donc d'une grande utilit face de
nombreux problmes concrets. D'autre part, il reprsente une approche
originale de la programmation car il n'est pas bas sur la
programmation imprative ou fonctionnelle de la grande majorit des
langages. ce titre, il est digne d'intrt en soi. Le langage XSLT
est lui-mme un dialecte XML car il utilise la syntaxe XML. Des
programmes XSLT peuvent tre eux-mmes manipuls et crs par d'autres
programmes XSLT. Ce mcanisme est d'ailleurs mis en uvre par les
schematrons [Chapitre 7]. Le langage XML est totalement libre car
il est dvelopp par le W3C. Chacun peut l'utiliser sans devoir
acheter une quelconque licence. Cette absence de droits favorise le
dveloppement de logiciels libres mis disposition de la communaut.
Il existe ainsi une trs grande varit de logiciels libres autour de
XML qui en couvrent les diffrents aspects.1.3. Langages apparentsUn
des atouts indniables de XML est le nombre de technologies et de
langages qui se sont dvelopps autour de XML. Ceux-ci enrichissent
les outils pour la manipulation des documents XML. La liste
ci-dessous numre les principaux langages qui font partie de
l'environnement XML. XLink [ ] et XPointer [ ] (liens entre
documents) XML contient dj un mcanisme pour matrialiser des liens
entre des lments d'un document. XLink et XPointer permettent
d'tablir des liens entre documents et plus particulirement entre un
lment d'un document et un fragment d'un autre document. Ils
gnralisent les liens hypertextes des documents HTML en autorisant
des liens entre plusieurs documents.3Prsentation de XMLXPath [ ]
(langage de slection) XPath est un langage d'expressions permettant
de slectionner des lments dans un document XML. Il est la pierre
angulaire du langage XSLT pour la transformation de documents. Il
est abord au chapitre 6 de cet ouvrage. XQuery [ ] (langage de
requte) XQuery est un langage permettant d'extraire des
informations partir d'un ou plusieurs documents XML et de
synthtiser de nouvelles informations partir de celles extraites. Il
s'apparente un langage d'interrogation de bases de donnes et joue
le rle de SQL pour les documents XML. Schmas XML [ ] (modles de
documents) Les schmas XML remplacent les DTD hrites de SGML pour
dcrire des modles de documents. Ils sont beaucoup plus souples et
beaucoup plus puissants que les DTD. Ils sont abords en dtail au
chapitre 5 de cet ouvrage. XSLT [ ] (transformation de documents)
XSLT est un langage permettant d'exprimer facilement des
transformations complexes entre documents XML. Il s'appuie sur la
structuration forte des documents XML vus comme des arbres. Chaque
transformation est dcrite par des rgles pour chacun des lments du
document. Il est tudi en profondeur au chapitre 8 de cet
ouvrage.1.4. DialectesDe trs nombreux dialectes ont t dfinis pour
appliquer XML des domaines trs varis. Le grand avantage est que ces
diffrents dialectes partagent la mme syntaxe de base et que tous
les outils XML peuvent tre utiliss pour spcifier et manipuler ces
documents. Il n'y a nul besoin de dvelopper des outils spcifiques
ces diffrents dialectes. La liste ci-dessous numre quelques uns de
ces dialectes. RSS [ ] (Really Simple Syndication) Abonnement des
flux de donnes XUL [ ] (XML-based User interface Language) Langage
de description d'interfaces graphiques dvelopp par le projet
Mozilla. SVG [ ] (Scalable Vector Graphics) Description de dessins
vectoriels SMIL [ ] (Synchronized Multimedia Integration Language)
Description de contenus multimdia MathML [ ] (Mathematical Markup
Language) Description de formules mathmatiques WSDL [ ] (Web
Services Description Language) Description de services WEB XML
Signature [ ] Format pour les signatures lectroniques SAML [ ]
(Security Assertion Markup Language) Langage d'change
d'authentifications et d'autorisations UBL [ ] (Universal Business
Language)4Prsentation de XMLBibliothque de documents standards pour
les changes commerciaux OpenDocument [ ] Format de document pour
les applications bureautiques dvelopp au dpart pour OpenOffice mais
aussi utilis par d'autres logiciels libres comme KOffice DocBook [
] Format de documentation technique De nombreux projets
informatiques, comme Ant ou Android utilisent XML pour le stockage
de donnes et en particulier pour les fichiers de configuration.1.5.
DocBookDocBook est un exemple typique d'utilisation de XML. Il
s'agit d'un format pour crire des documents techniques. Il est
particulirement adapt la rdaction de documentations de logiciels.
Il est d'ailleurs utilis par de nombreux projets de logiciels
libres, ventuellement de grande ampleur, comme le projet KDE. Cet
ouvrage a t rdig en utilisant DocBook. L'intgralit du texte est
rpartie en plusieurs fichiers XML. Afin d'obtenir une mise en page
de qualit, les documents XML sont convertis, avec le langage XSLT,
en un document LaTeX qui peut alors produire un document PDF.
DocBook tait au dpart bas sur SGML mais il s'appuie maintenant sur
XML dont il est un des dialecte. Il contient de nombreuses balises
permettant de dcrire et de structurer le contenu de faon trs
prcise. Il existe ensuite diffrents outils permettant de traduire
un document DocBook, en une seule page HTML, en plusieurs pages
HTML avec des liens ou encore en un document PDF. DocBook met
l'accent sur l'organisation et la structure du document. Son
vocabulaire contient de trs nombreuses balises permettant de
transcrire trs finement la smantique de chaque fragment, la manire
de la seconde adresse donne au dbut de cette introduction. Cet
exemple est, en fait, trs inspir de DocBook. En revanche, DocBook
ne permet pas de spcifier le rendu du document. Il n'est pas
possible de donner, par exemple, la couleur ou la police de
caractres utiliser pour le texte. L'ide directrice est qu'un
document DocBook doit permettre la production de plusieurs
documents finaux partir d'un mme document original : document PDF,
pages WEB. Comme les contraintes de ces diffrents mdia sont trs
diverses, il est impossible de pouvoir les spcifier dans le
document. Le choix de DocBook est de donner suffisamment
d'indications sur le contenu aux applications qui ralisent les
transformations pour obtenir un rsultat de qualit. Les documents
DocBook font souvent partie d'un ensemble de documentations, comme
celle de KDE, dont la prsentation est uniforme et donc dtermine de
manire globale.1.6. ConventionsCertaines conventions sont utilises
tout au long de cet ouvrage afin d'en faciliter la lecture. Tous
les exemples et plus gnralement, tous les fragments de texte
pouvant apparatre dans un document XML sont crits en utilisant une
police de caractres fixe comme l'exemple d'entte ci-dessous. Les
noms des balises sont en particulier crits avec cette police.
Lorsqu'un fragment de texte comporte des parties gnriques qui
doivent tre remplaces pour obtenir un vritable exemple, ces parties
sont crites avec une police de caractres fixe et italique.
L'exemple de dclaration de DTD ci-dessous signifie qu'une telle
dclaration doit commencer par XML langage et applications Alain
Michard 2001 Eyrolles 2-212-09206-7
http://www.editions-eyrolles/livres/michard/ Designing with web
standards Jeffrey Zeldman 2003 New Riders 0-7357-1201-8 ... Entte
XML avec la version 1.0 et l'encodage iso-8859-1 des caractres.
Commentaire dlimit par les chanes de caractres . Dclaration de DTD
externe dans le fichier bibliography.dtd. Balise ouvrante de
l'lment racine bibliography Balise ouvrante de l'lment book avec
deux attributs de noms key et lang et de valeurs Michard01 et fr
Balise fermante de l'lment racine bibliography2.2. CaractresUn
document XML est une suite de caractres. Les caractres qui peuvent
tre utiliss sont ceux dfinis par la norme Unicode ISO 10646 [ ]
aussi appele UCS pour Universal Character Set. Cette norme recense
tous les7Syntaxe de XMLcaractres des langues connues et tous les
symboles utiliss dans les diffrentes disciplines. Elle nomme tous
ces caractres et symboles et leur attribue un code sur 32 bits (4
octets) appel simplement code Unicode ou point de code dans la
terminologie Unicode. Dans la pratique, tous les points de code
attribus des caractres se situent dans l'intervalle de 0 0x10FFFF
et ils utilisent donc au plus 21 bits. Cette longueur maximale ne
sera pas dpasse avant longtemps car il reste encore de nombreux
points de code non attribus dans cet intervalle pour des usages
futurs. Unicode peut tre vu comme un catalogue de tous les
caractres disponibles. Un caractre dont le point de code est n est
dsign par U+n o le nombre n est crit en hexadcimal. L'criture
hexadcimale de n n'est pas prfixe du caractre 'x' car c'est
implicite aprs les deux caractres 'U+'. Le caractre Euro '' est,
par exemple, dsign par U+20AC car son point de code est 8364 =
0x20AC. Le sous-ensemble des caractres Unicode dont les points de
code tiennent sur 16 bits (2 octets), c'est--dire entre 0 et 65535
= 0xFFFF est appel BMP pour Basic Multilingual Plane. Il couvre
largement la trs grande majorit des langues usuelles et les
symboles les plus courants.2.2.1. Caractres spciauxLes cinq
caractres '' U+2E, '&' U+26, ''' U+27 et '"' U+22 ont une
signification particulire dans les documents XML. Les deux
caractres '' servent dlimiter les balises [Section 2.7.1], ainsi
que les commentaires [Section 2.7.5] et les instructions de
traitement [Section 2.7.6]. Le caractre '&' marque le dbut des
rfrences aux entits gnrales [Section 3.5.1]. Pour introduire ces
caractres dans le contenu du document, il faut utiliser des
sections littrales [Section 2.7.2] ou les entits prdfinies [Section
3.5.1.2]. Les caractres ''' et '"' servent galement de dlimiteurs,
en particulier pour les valeurs des attributs [Section 2.7.3]. Dans
ces cas, il faut encore avoir recours aux entits prdfinies pour les
introduire.2.2.2. Caractres d'espacementLe traitement XML des
caractres d'espacement est la fois simple dans une premire approche
et subtil et source de surprises dans un second temps. Les
caractres d'espacement sont l'espace ' ' U+20, la tabulation U+09
('\t' en notation du langage C), le saut de ligne U+0A ('\n' en C)
et le retour chariot U+0D ('\r' en C). Le traitement de ces
caractres est indiqu aux applications par l'attribut xml:space
[Section 2.7.4.2]. Les fins de lignes sont normalises par
l'analyseur lexical (parser en anglais). Ceci signifie que les
diffrentes combinaisons de fin de ligne sont remplaces par un seul
caractre U+0A avant d'tre transmises l'application. Cette
transformation garantit une indpendance vis vis des diffrents
systmes d'exploitation. Les combinaisons remplaces par cette
normalisation sont les suivantes. la suite des deux caractres U+0D
U+0A la suite des deux caractres U+0D U+85 le caractre U+85 appel
Next Line le caractre U+2028 appel Line Separator le caractre U+0D
non suivi de U+0A ou U+85 Les deux caractres U+85 et U+2028 ne
peuvent tre correctement dcods qu'aprs la dclaration de l'encodage
des caractres par l'entte [Section 2.6.1]. Leur usage dans l'entte
est donc dconseill.2.2.3. Jetons et noms XMLLes identificateurs
sont utiliss en XML pour nommer diffrents objets comme les lments,
les attributs, les instructions de traitement. Ils servent aussi
identifier certains lments par l'intermdiaire des attributs de type
ID. XML distingue deux types d'identificateurs appels jetons (name
token abrg en NMTOKEN dans la terminologie XML) et noms XML dans
cet ouvrage. Les caractres autoriss dans les identificateurs sont
tous les caractres alphanumriques, c'est--dire les lettres
minuscules [a-z], majuscules [A-Z] et les chiffres [0-9] ainsi que
le tiret '-' U+2D, le point '.' U+2E, les deux points ':' U+3A et
le tiret soulign '_' U+5F. Un jeton est une suite quelconque de ces
caractres. Un nom XML est un jeton qui, en outre, commence par une
lettre [a-zA-Z], le caractre ':' ou le caractre '_'. Les deux
caractres '-' et '.' ne peuvent pas apparatre au dbut des noms. Il
n'y a pas, a priori, de limite la taille des identificateurs mais
certains logiciels peuvent en imposer une dans la pratique.8Syntaxe
de XMLLe caractre ':' est rserv l'utilisation des espaces de noms
[Chapitre 4]. De fait, il ne peut apparatre qu'une seule fois pour
sparer un prfixe du nom local dans les noms des lments et des
attributs. Les espaces de noms amnent distinguer les noms ayant un
caractre ':', appels noms qualifis et les autres, appels par
opposition noms non qualifis. Les noms commenant par les trois
lettres xml en minuscule ou majuscule, c'est--dire par une chane de
[xX][mM][lL] sont rservs aux usages internes de XML. Ils ne peuvent
pas tre utiliss librement dans les documents mais ils peuvent
cependant apparatre pour des utilisations spcifiques prvues par la
norme. Les noms commenant par xml: comme xml:base font partie de
l'espace de noms XML [Section 4.7]. Quelques exemples
d'identificateurs sont donns ci-dessous. Noms XML valides : name,
id-42, xsl:template, sec.dtd-3.1 et _special_ Jetons qui ne sont
pas des noms : -name, 42, 42-id et .sect. Noms rservs : xml:id et
xml-stylesheet La norme XML 1.1 prvoit que tout caractre Unicode de
catgorie lettre peut apparatre dans les identificateurs. Il est,
par exemple, possible d'avoir des noms d'lments avec des caractres
accentus. Il est cependant conseill de se limiter aux caractres
ASCII de [a-zA-Z] pour assurer une meilleure compatibilit. Beaucoup
de logiciels ne grent pas les autres caractres dans les
identificateurs.2.2.4. CodageChaque caractre possde un point de
code sur 32 bits mais un document ne contient pas directement ces
points de code des caractres. Ce codage serait inefficace puisque
chaque caractre occuperait 4 octets. Chaque document utilise un
codage pour crire les points de code des caractres. Il existe
diffrents codages dont le codage par dfaut UTF-8. Certains codages
permettent d'crire tous les points de code alors que d'autres
permettent seulement d'crire un sous-ensemble comme le BMP. Le
codage utilis par un document est indiqu dans l'entte [Section
2.6.1] de celui-ci. Les principaux codages utiliss par les
documents XML sont dcrits ci-dessous. US-ASCII Ce codage permet
uniquement de coder les points de code de 0 0x7F des caractres
ASCII. UCS-4 ou UTF-32 [ ] Chaque caractre est cod directement par
son point de code sur quatre octets. Ce codage permet donc de coder
tous les caractres Unicode. UCS-2 [ ] Chaque caractre est cod par
son point de code sur deux octets. Ce codage permet donc uniquement
de coder les caractres du BMP. UTF-16 [ ] Ce codage concide
essentiellement avec UCS-2 l'exception de la plage de 2048
positions de 0xD800 0xDFFF qui permet de coder des caractres en
dehors du BMP dont le point de code utilise au plus 20 bits.
L'exclusion de cette plage ne pose aucun problme car elle ne
contient aucun point de code attribu un caractre. Un point de code
ayant entre 17 et 20 bits est scind en deux blocs de 10 bits
rpartis sur une paire de mots de 16 bits. Le premier bloc de 10
bits est prfix des 6 bits 110110 pour former un premier mot de 16
bits et le second bloc de 10 bits est prfix des 6 bits 110111 pour
former un second mot de 16 bits. Reprsentation UTF-16 xxxxxxxx
xxxxxxxx 110110zz zzxxxxxx Signification 2 octets codant 16 bits 4
octets codant 20 bits9Syntaxe de XMLReprsentation UTF-16 110111xx
xxxxxxxxSignification yyyy xxxxxxxx xxxxxxxx o zzzz = yyyy-1Tableau
2.1. Codage UTF-16Le symbole de l'Euro '' U+20AC, est, par exemple,
cod par les deux octets x20 xAC = 00100000 10101100 puisqu'il fait
partie du BMP. Le symbole de la croche '##' U+1D160 est cod par les
4 octets xD8 x34 xDD x60 = 11011000 00110100 11011101 01100000.
UTF-8 [ ] Ce codage est le codage par dfaut de XML. Chaque caractre
est cod sur un nombre variable de 1 4 octets. Les caractres de
l'ASCII sont cods sur un seul octet dont le bit de poids fort est
0. Les caractres en dehors de l'ASCII utilisent au moins deux
octets. Le premier octet commence par autant de 1 que d'octets dans
la squence suivis par un 0. Les autres octets commencent par 10. Ce
codage peut uniquement coder des points de code ayant au maximum 21
bits mais tous les points de code attribus ne dpassent pas cette
longueur. Reprsentation UTF-8 0xxxxxxx 110xxxxx 10xxxxxx 1110xxxx
10xxxxxx 10xxxxxx 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx Signification
1 octet codant 7 bits 2 octets codant 8 11 bits 3 octets codant 12
16 bits 4 octets codant 17 21 bitsTableau 2.2. Codage UTF-8Le
symbole de l'Euro '' U+20AC, est, par exemple, cod par les trois
octets xE2 x82 xAC = 11100010 10000010 10101100. Le symbole de la
croche '##' U+1D160 est, quant lui, cod par les 4 octets xF0 x9D
x85 xA0 = 11110000 10011101 10000101 10100000. Ce codage a
l'avantage d'tre relativement efficace pour les langues europennes
qui comportent beaucoup de caractres ASCII. Il est, en revanche,
peu adapt aux langues asiatiques dont les caractres ncessitent 3
octets alors que 2 octets sont suffisants avec UTF-16. ISO-8859-1
(appel Latin-1) [ ] Chaque caractre est cod sur un seul octet. Ce
codage concide avec l'ASCII pour les points de code de 0 0x7F. Les
codes de 0x80 0xFF sont utiliss pour d'autres caractres (caractres
accentus, cdilles, ) des langues d'Europe de l'ouest. ISO-8859-15
(appel Latin-9 ou Latin-0) [ ] Ce codage est une mise jour du
codage ISO-8859-1 dont il diffre uniquement en 8 positions. Les
caractres '', '', ', '', ', '', '' et '' remplacent les caractres
'' U+A4, '' U+A6, '' U+A8, '' U+B4, '' U+B8, '' U+BC, '' U+BD et ''
U+BE moins utiles pour l'criture des langues europennes. Le symbole
de l'Euro '' U+20AC, est, par exemple, cod par l'unique octet xA4 =
10100100. Le tableau suivant donne la suite d'octets pour le mot
Htrogne pour quelques codages classiques. Comme les points de code
de x00 xFF d'Unicode concident avec le codage des caractres de
ISO-8859-1, le codage en UTF-16 est obtenu en insrant un octet nul
00 avant chaque octet du codage en ISO-8859-1. Le codage en UTF-32
est obtenu en insrant dans le codage en UTF-16 deux octets nuls
avant chaque paire d'octets. Codage UTF-8 ISO-8859-1 UTF-16 UTF-32
Squence d'octets en hexadcimal pour Htrogne 48 C3 A9 74 C3 A9 72 6F
67 C3 A8 6E 65 48 E9 74 E9 72 6F 67 E8 6E 65 00 48 00 E9 00 74 00
E9 00 72 00 E8 00 6E 00 65 00 00 00 48 00 00 00 E9 00 00 00 74 00
00 00 65Tableau 2.3. Comparaison des codages10Syntaxe de XMLLes
logiciels manipulant des documents XML doivent obligatoirement grer
les codages UTF-8 et UTF-16. Les autres codages sont facultatifs.
Il est essentiel que le codage d'un document soit indiqu dans
l'entte [Section 2.6.1] du document. Si un navigateur interprte,
par exemple, la suite d'octets du codage UTF-8 du mot Htrogne comme
un codage en ISO-8859-1, il affiche la chane Htrogne. Bien que
certains codages ne permettent pas de coder tous les points de
code, il est nanmoins possible d'insrer n'importe quel caractre
Unicode en donnant explicitement son point de code avec une des
deux syntaxes suivantes. Ces syntaxes peuvent tre utilises pour
n'importe quel point de code mme si celui-ci peut tre crit avec le
codage du document. Elles sont, en particulier, pratiques lorsque
les diteurs de texte affichent mal certains caractres. Les deux
syntaxes prennent les formes point de code dcimal; ou point de code
hexadcimal;. Le caractre Euro '' peut par exemple tre insr par ou .
Pour ces deux syntaxes, c'est le point de code du caractre qui est
crit en dcimal ou en hexadcimal et non pas sa transcription dans le
codage du document.2.2.4.1. Marque d'ordre des octetsPour les
codages non bass sur les octets comme UTF-16 ou UCS-2, il est
important de savoir dans quel ordre sont placs les deux octets de
poids fort et de poids faible d'un mots de 16 bits. Il existe deux
modes appels grosboutiste et petit-boutiste (big endian et little
endian en anglais). Dans le mode gros-boutiste, l'octet de poids
fort est plac avant l'octet de poids faible alors que dans le mode
petit-boutiste, l'octet de poids fort est plac aprs l'octet de
poids faible. Afin de savoir quel est le mode utilis dans un
document XML, le document commence par le caractre U+FEFF. Ce
caractre est appel espace inscable de largeur nulle (zero-width
no-break space en anglais) mais il a t remplac, pour cet emploi,
par le caractre U+2060. Il est maintenant uniquement utilis comme
marque d'ordre des octets (Byte order mark ou BOM en anglais).
Cette marque est sans ambigut car il n'existe pas de caractre de
point de code 0xFFFE. Le tableau suivant rcapitule les squences des
premiers octets d'un document en fonction du codage et du mode
gros-boutiste ou petit-boutiste. Les valeurs 0x3C, 0x3F et 0x78
sont les points de code des trois premiers caractres '', '&',
''' et '"' mais ceux-ci doivent ncessairement tre introduits par
les entits prdfinies [Section 3.5.1.2]. Si la valeur de l'attribut
est dlimite par des apostrophes ''', les guillemets '"' peuvent tre
introduits directement sans entit et inversement. Comme des espaces
peuvent tre prsents dans la balise aprs le nom de l'lment et entre
les attributs, l'indentation est libre pour crire les attributs
d'une balise ouvrante. Aucun espace ne peut cependant sparer le
caractre '=' du nom de l'attribut et de sa valeur. Il est ainsi
possible d'crire l'exemple gnrique suivant. ... L'ordre des
attributs n'a pas d'importance. Les attributs d'un lment doivent
avoir des noms distincts. Il est donc impossible d'avoir deux
occurrences du mme attribut dans une mme balise ouvrante. Le bon
usage des attributs est pour les meta-donnes plutt que les donnes
elles-mmes. Ces dernires doivent tre places de prfrence dans le
contenu des lments. Dans l'exemple suivant, la date proprement dite
est place dans le contenu alors que l'attribut format prcise son
format. La norme ISO 8601 [ ] spcifie la reprsentation numrique de
la date et de l'heure. 2009-01-08 C'est une question de style de
mettre les donnes dans les attributs ou dans les contenus des
lments. Le nom complet d'un individu peut, par exemple, tre rparti
entre des lments firstname et surname regroups dans un lment
personname comme dans l'exemple ci-dessous. Gaston Lagaffe Les
lments firstname et surname peuvent tre remplacs par des attributs
de l'lment personname comme dans l'exemple ci-dessous. Les deux
solutions sont possibles mais la premire est prfrable. 2.7.4.
Attributs particuliersIl existe quatre attributs particuliers
xml:lang, xml:space, xml:base et xml:id qui font partie de l'espace
de noms XML [Section 4.7]. Lors de l'utilisation de schmas, ces
attributs peuvent tre dclars en important [Section 5.14] le schma
l'adresse http://www.w3.org/2001/xml.xsd. Contrairement l'attribut
xml:id, les trois autres attributs xml:lang, xml:space et xml:base
s'appliquent au contenu de l'lment. Pour cette raison, la valeur de
cet attribut est hrite par les enfants et, plus gnralement, les
descendants. Ceci ne signifie pas qu'un lment dont le pre a, par
exemple, un attribut xml:lang a galement un attribut xml:lang. Cela
veut dire qu'une application doit prendre en compte la valeur de
l'attribut xml:lang19Syntaxe de XMLpour le traitement l'lment mais
aussi de ses descendants l'exception, bien sr, de ceux qui donnent
une nouvelle valeur cet attribut. Autrement dit, la valeur de
l'attribut xml:lang prendre en compte pour le traitement d'un lment
est celle donne cet attribut par l'anctre (y compris l'lment
lui-mme) le plus proche. Pour illustrer le propos, le document
suivant contient plusieurs occurrences de l'attribut xml:lang. La
langue du texte est, chaque fois, donne par la valeur de l'attribut
xml:lang le plus proche. Livre en Franais Chapitre en Franais
Paragraphe en Franais Paragraph in English Chapter in English
Paragraphe en Franais Paragraph in English Ce qui a t expliqu pour
l'attribut xml:lang vaut galement pour deux autres attributs
xml:space et xml:base. C'est cependant un peu diffrent pour
l'attribut xml:base car la valeur prendre en compte doit tre
calcule partir de toutes les valeurs des attributs xml:base des
anctres.2.7.4.1. Attribut xml:langL'attribut xml:lang est utilis
pour dcrire la langue du contenu de l'lment. Sa valeur est un code
de langue sur deux ou trois lettres de la norme ISO 639 [ ] (comme
par exemple en, fr, es, de, it, pt, ). Ce code peut tre suivi d'un
code de pays sur deux lettres de la norme ISO 3166 [ ] spar du code
de langue par un caractre tiret '-'. L'attribut xml:lang est du
type xsd:language [Section 5.5.1.2] qui est spcialement prvu pour
cet attribut. Bonjour Hello Hi Dans le document donn en exemple au
dbut du chapitre, chaque lment book a un attribut lang. Ce n'est
pas l'attribut xml:lang qui a t utilis car celui-ci dcrit la langue
des donnes contenues dans l'lment alors que l'attribut lang dcrit
la langue du livre rfrenc.2.7.4.2. Attribut xml:spaceL'attribut
xml:space permet d'indiquer une application le traitement des
caractres d'espacement [Section 2.2.2]. Les deux valeurs possibles
de cet attribut sont default et preserve. L'analyseur lexical
transmet les caractres d'espacement aux applications sans les
modifier. La seule transformation effectue est la normalisation des
fins de lignes. Il appartient ensuite aux applications de traiter
ces caractres de faon approprie. La plupart d'entre elles
considrent de faon quivalente les diffrents caractres d'espacement.
Ceci signifie qu'une fin de ligne est vue comme un simple espace.
Plusieurs espaces conscutifs sont aussi considrs comme un seul
espace. Ce traitement est gnralement le traitement par dfaut des
applications. Si l'attribut xml:space a la valeur preserve,
l'application doit, au contraire, respecter les diffrents caractres
d'espacement. Les fins de ligne sont prserves et les espaces
conscutifs ne sont pas confondus. L'attribut xml:space intervient,
en particulier, dans le traitement des espaces par XSLT [Section
8.4.1].2.7.4.3. Attribut xml:base chaque lment d'un document XML
est associe une URI [Section 2.3] appele URI de base. Celle-ci est
utilise pour rsoudre les URL des entits externes, qui peuvent tre,
par exemple des fichiers XML ou des fichiers20Syntaxe de
XMLmultimdia (images, sons, vido). Dans le fragment de document
XHTML ci-dessous, l'lment img rfrence un fichier image element.png
par son attribut src. L'attribut de xml:base permet de prciser
l'URI de base d'un lment. Par dfaut, l'URI de base d'un lment est
hrit de son parent. L'URI de base de la racine du document est
appele URI de base du document. Elle est souvent fixe par
l'application qui traite le document mais elle peut aussi provenir
d'un attribut xml:base de l'lment racine. Lorsque le document
provient d'un fichier local, c'est souvent le chemin d'accs
celui-ci dans l'arborescence des fichiers, comme
file:/home/carton/Teaching/XML/index.html. Lorsque le document est,
au contraire, tlcharg, l'URI de base du document est l'adresse
Internet de celui-ci comme
http://www.liafa.jussieu.fr/~carton/index.html. Pour chaque lment,
l'attribut xml:base permet de fixer une URI de base de faon absolue
ou, au contraire, de la construire partir de l'URI de base du
parent. Le comportement dpend de la forme de la valeur de
l'attribut. La valeur est combine avec l'URI de base du base en
suivant les rgles de combinaison de celles-ci [Section 2.3.1].
L'attribut xml:base est de type xsd:anyURI [Section 5.5.1.2].
L'attribut xml:base est indispensable pour raliser des inclusions
de fichiers externes avec XInclude [Section 2.9] lorsque ces
fichiers sont situs dans un rpertoire diffrent de celui ralisant
l'inclusion. Le document suivant illustre les diffrents cas pour la
combinaison d'une URI avec une adresse. Pour chacun des lments,
l'URI de base est donne.
http://www.somewhere.org/Teaching/index.html
http://www.somewhere.org/Teaching/XML/chapter.html
http://www.somewhere.org/Teaching/XML/XPath/section.html
http://www.somewhere.org/Course/section.html
http://www.elsewhere.org/section.html L'URI de base d'un lment est
retourne par la fonction XPath base-uri().2.7.4.4. Attribut
xml:idL'attribut xml:id est de type xsd:ID. Il permet d'associer un
identificateur tout lment indpendamment de toute DTD ou de tout
schma. Comme les applications qui traitent les documents XML ne
prennent pas en compte les modles de document, sous forme de DTD ou
de schma, elles ne peuvent pas dterminer le type des attributs. Il
leur est en particulier impossible de connatre les attributs de
type ID qui permettent d'identifier et de rfrencer les lments.
L'attribut xml:id rsout ce problme puisqu'il est toujours du type
xsd:ID [Section 5.5.1.4] qui remplace le type ID dans les schmas
XML.2.7.5. CommentairesLes commentaires sont dlimits par les chanes
de caractres '' comme en HTML. Ils ne peuvent pas contenir la chane
'--' forme de deux tirets '-' et ils ne peuvent donc pas tre
imbriqus. Ils peuvent tre prsents dans le prologue et en
particulier dans la DTD [Section 3.4]. Ils peuvent aussi tre placs
dans le contenu de n'importe quel lment et aprs l'lment racine. En
revanche, ils ne peuvent jamais apparatre l'intrieur21Syntaxe de
XMLd'une balise ouvrante ou fermante. Un exemple de document XML
avec des commentaires partout o ils peuvent apparatre est donn
ci-dessous. Un exemple simplissime Les caractres spciaux '' et
'&' peuvent apparatre dans les commentaires. Il est en
particulier possible de mettre en commentaire des lments avec leurs
balises comme dans l'exemple ci-dessous. 2.7.6. Instructions de
traitementLes instructions de traitement sont destines aux
applications qui traitent les documents XML. Elles sont l'analogue
des directives #... du langage C qui s'adressent au compilateur.
Elles peuvent apparatre aux mmes endroits que les commentaires
l'exception du contenu de la DTD. Les instructions de traitement
sont dlimites par les chanes de caractres ''. Les deux caractres ''
utilise par l'analyseur lexical pour dterminer la fin de
l'instruction. Le nom de l'instruction permet l'application de
dterminer si l'instruction lui est destine. Bien que le contenu
d'une instruction puisse tre quelconque, il est souvent organis en
une suite de paires param="value" avec une syntaxe imitant celle
des attributs [Section 2.7.3]. Il incombe cependant l'application
traitant l'instruction de parser le contenu de celle-ci pour en
extraire la liste des paires. Les fichiers sources DocBook
[http://www.docbook.org] de cet ouvrage contiennent des
instructions de traitement de la forme suivante. Ces instructions
indiquent le nom du fichier cible utiliser par les feuilles de
styles pour la conversion en HTML. Une feuille de style XSLT
[Chapitre 8] peut tre attache un document XML par l'intermdiaire
d'une instruction de traitement de nom xml-stylesheet comme
ci-dessous. L'entte XML [Section 2.6.1] ressemble une instruction
de traitement de nom xml avec des paramtres version, encoding et
standalone. Elle utilise en effet la mme syntaxe. Elle n'est
pourtant pas une instruction de traitement et elle ne fait pas
partie du document.2.8. Exemples minimauxQuelques exemples
minimalistes de documents XML sont donns ci-dessous.22Syntaxe de
XML2.8.1. Exemple minimalL'exemple suivant contient uniquement un
prologue avec la l'entte XML et un lment de contenu vide. Les
balises ouvrante et fermante ont t contractes en une seule balise
[Section 2.7.1]. Ce document n'a pas de dclaration de DTD.
L'exemple aurait pu encore tre rduit en supprimant l'entte XML
[Section 2.6.1] mais celle-ci est fortement conseille. Le retour la
ligne aprs l'entte aurait aussi pu tre supprim sans changer le
contenu du document.2.8.2. Exemple simple avec une DTDCet exemple
contient une dclaration de DTD qui permet de valider le document.
Cette DTD dclare l'lment simple avec un contenu purement textuel.
Un exemple simplissime2.9. XIncludeIl est possible de rpartir un
gros document en plusieurs fichiers afin d'en rendre la gestion
plus aise. Il existe essentiellement deux mthodes pour atteindre
cet objectif. Le point commun de ces mthodes est de scinder le
document en diffrents fichiers qui sont inclus par un fichier
principal. Les deux mthodes se diffrencient par leurs faons de
raliser l'inclusion. La mthode la plus ancienne est hrite de SGML
et elle est base sur les entits externes [Section 3.5.1.4]. La
mthode, plus rcente, base sur XInclude [ ] est utiliser de
prfrences aux entits externes. XInclude dfinit un lment xi:include
dans un espace de noms [Chapitre 4] associ l'URL
http://www.w3.org/2001/ XInclude. Cet lment a un attribut href qui
contient le nom du fichier inclure et un attribut parse qui prcise
le type des donnes. Cet attribut peut prendre les valeurs xml ou
text. Le fichier source principal de cet ouvrage inclut, par
exemple, les fichiers contenant les diffrents chapitres grce des
lments include comme ci-dessous. ... ... Le fragment de document
contenu dans un fichier inclus doit tre bien form. Il doit, en
outre, tre entirement contenu dans un seul lment qui est l'lment
racine du fragment. Il faut prendre garde au fait que certaines
applications ne grent pas XInclude. La solution est d'ajouter la
chane de traitement une tape consistant construire un document
global entirement contenu dans un seul fichier. Le logiciel xmllint
peut, par exemple, raliser cette opration. Avec l'option
--xinclude, il crit sur la sortie standard un document o les lments
xi:include sont remplacs par le contenu des fichiers rfrencs. Cette
option peut tre combine avec l'option --noent pour supprimer les
entits dfinies dans la DTD. L'opration consistant remplacer un
lment xi:include par le contenu du fichier doit mettre jour
l'attribut xml:base [Section 2.7.4.3] de l'lment racine du document
dans le fichier. Cet attribut contient une URL qui23Syntaxe de
XMLpermet de rsoudre les liens relatifs. Le chemin d'accs au
fichier doit donc tre ajout la valeur de l'attribut xml:base. Il
faut, en particulier, ajouter cet attribut s'il est absent et si le
chemin d'accs est non vide. Le chemin d'accs au fichier est rcupr
dans l'attribut href de l'lment xi:include. La mise jour des
attributs xml:base garde une trace des inclusions et permet aux
liens relatifs de rester valides. La prise en compte des valeurs de
ces attributs xml:base incombe en revanche aux applications qui
traitent le document et utilisent ces liens. Si chacun des fichiers
introduction.xml et Syntax/chapter.xml a comme lment racine un
lment chapter sans attribut xml:base, le rsultat de l'inclusion de
ces fichiers doit donner un document ressemblant ceci. ... ... ...
... 24Chapitre 3. DTDLe rle d'une DTD (Document Type Definition)
est de dfinir prcisment la structure d'un document. Il s'agit d'un
certain nombre de contraintes que doit respecter un document pour
tre valide. Ces contraintes spcifient quelles sont les lments qui
peuvent apparatre dans le contenu d'un lment, l'ordre ventuel de
ces lments et la prsence de texte brut. Elles dfinissent aussi,
pour chaque lment, les attributs autoriss et les attributs
obligatoires. Les DTD ont l'avantage d'tre relativement simples
utiliser mais elles sont parfois aussi un peu limites. Les schmas
XML [Chapitre 5] permettent de dcrire de faon plus prcise encore la
structure d'un document. Ils sont plus sophistiqus mais plus
difficiles mettre en uvre. Les DTD sont donc particulirement
adaptes pour des petits modles de documents. En revanche, leur
manque de modularit les rend plus difficiles utiliser pour des
modles plus consquents.3.1. Un premier exempleOn reprend la petite
bibliographie du fichier bibliography.xml dj utilise au chapitre
prcdent. La troisime ligne de ce fichier est la dclaration de la
DTD qui rfrence un fichier externe bibliography.dtd. Le nom
bibliography de l'lment racine du document apparat dans cette
dclaration juste aprs le mot cl DOCTYPE. On prsente maintenant le
contenu de ce fichier bibliography.dtd qui contient la DTD du
fichier bibliography.xml. La syntaxe des DTD est hrite de SGML et
elle est diffrente du reste du document XML. Il n'y a pas de
balises ouvrantes et fermantes. La DTD contient des dclarations
d'lments et d'attributs dlimites par les chanes de caractres ''. Un
mot cl juste aprs la chane '