XML Support

Embed Size (px)

Citation preview

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
    [email protected] Olivier Carton 175 rue du Chevaleret 75013Paris [email protected] 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 '