l'essentiel de xml olivier carton

175
Cours XML L'essentiel de XML Olivier Carton

Upload: cedric-kokou

Post on 08-Nov-2015

12 views

Category:

Documents


2 download

TRANSCRIPT

  • Cours XMLL'essentiel de XML

    Olivier Carton

  • Cours XML: L'essentiel de XMLOlivier CartonVersion du 16/07/2010Copyright 2007-2010 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 deprsenter les aspects essentiels de XML de manire concise et illustre par de nombreux exemples. Les principauxthmes 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.

  • iii

    Table des matires1. Introduction XML ................................................................................................................... 1

    1.1. Historique ...................................................................................................................... 11.2. Intrts .......................................................................................................................... 11.3. Dialectes et extensions ..................................................................................................... 11.4. Applications ................................................................................................................... 21.5. DocBook ....................................................................................................................... 2

    2. Syntaxe de XML ....................................................................................................................... 42.1. Premier exemple ............................................................................................................. 42.2. Syntaxe et structure ......................................................................................................... 42.3. Composition globale d'un document ................................................................................... 52.4. Prologue ........................................................................................................................ 52.5. Corps du document ......................................................................................................... 72.6. Exemples minimaux ...................................................................................................... 142.7. Utilisation de XInclude .................................................................................................. 15

    3. DTD ...................................................................................................................................... 173.1. Un premier exemple ...................................................................................................... 173.2. Dclaration de la DTD ................................................................................................... 173.3. Contenu de la DTD ....................................................................................................... 193.4. Outils de validations ...................................................................................................... 27

    4. Espaces de noms ..................................................................................................................... 284.1. Identification d'un espace de noms ................................................................................... 284.2. Dclaration d'un espace de noms ...................................................................................... 284.3. Porte d'une dclaration .................................................................................................. 294.4. Espace de noms par dfaut ............................................................................................. 294.5. Attributs ...................................................................................................................... 314.6. Espace de noms XML .................................................................................................... 314.7. Quelques espaces de noms classiques ............................................................................... 31

    5. Schmas XML ........................................................................................................................ 335.1. Introduction .................................................................................................................. 335.2. Un premier exemple ...................................................................................................... 335.3. Structure globale d'un schma ......................................................................................... 345.4. Dclarations d'lments .................................................................................................. 365.5. Dfinitions de types ....................................................................................................... 385.6. Constructions de types ................................................................................................... 415.7. Dclarations d'attributs ................................................................................................... 455.8. Extension de types ........................................................................................................ 475.9. Restriction de types ....................................................................................................... 495.10. Substitutions ............................................................................................................... 565.11. Groupes d'lments et d'attributs .................................................................................... 695.12. Contraintes de cohrence .............................................................................................. 715.13. Espaces de noms ......................................................................................................... 725.14. Imports d'autres schmas .............................................................................................. 76

    6. XPath .................................................................................................................................... 776.1. Donnes et environnement .............................................................................................. 776.2. Expressions de chemins .................................................................................................. 846.3. Valeurs atomiques ......................................................................................................... 916.4. Listes .......................................................................................................................... 966.5. Comparaisons ............................................................................................................... 986.6. Structures de contrle ................................................................................................... 1026.7. Syntaxe abrge .......................................................................................................... 1046.8. Utilisation interactive de xmllint .................................................................................... 1046.9. Rcapitulatif des oprateurs XPath .................................................................................. 105

    7. Schematron ........................................................................................................................... 1077.1. Introduction ................................................................................................................ 1077.2. Premier exemple ......................................................................................................... 107

  • Cours XML

    iv

    7.3. Fonctionnement ........................................................................................................... 1087.4. Structure globale d'un schematron .................................................................................. 1097.5. Rgles ....................................................................................................................... 1107.6. Rgles abstraites .......................................................................................................... 1117.7. Blocs abstraits ............................................................................................................. 1137.8. Phases de validations ................................................................................................... 115

    8. Programmation XSLT ............................................................................................................. 1178.1. Principe ..................................................................................................................... 1178.2. Premier programme : Hello, World! ........................................................................ 1198.3. Modle de traitement ................................................................................................... 1198.4. Entte ........................................................................................................................ 1218.5. Dfinition et application de rgles .................................................................................. 1228.6. Rgles par dfaut ........................................................................................................ 1238.7. Construction du rsultat ................................................................................................ 1238.8. Structures de contrle ................................................................................................... 1298.9. Tris ........................................................................................................................... 1308.10. Variables et paramtres ............................................................................................... 1318.11. Fonctions d'extension XPath ........................................................................................ 1348.12. Modes ...................................................................................................................... 1368.13. Indexation ................................................................................................................ 1388.14. Documents multiples .................................................................................................. 1388.15. Analyse de chanes .................................................................................................... 139

    9. XSL-FO ............................................................................................................................... 1409.1. Premier exemple ......................................................................................................... 1409.2. Structure globale ......................................................................................................... 140

    10. Feuilles de style CSS ............................................................................................................ 14110.1. Principe .................................................................................................................... 14110.2. Rgles ...................................................................................................................... 14110.3. Hritage et cascade .................................................................................................... 14510.4. Modle de botes ....................................................................................................... 14510.5. Style et XML ............................................................................................................ 14610.6. Attachement de rgles de style ..................................................................................... 14710.7. Principales proprits .................................................................................................. 148

    11. SVG .................................................................................................................................. 15011.1. Un premier exemple ................................................................................................... 15011.2. lments de dessins ................................................................................................... 15011.3. Transformations ......................................................................................................... 15311.4. Indications de style .................................................................................................... 15311.5. Courbes de Bzier et B-splines ..................................................................................... 154

    12. Programmation XML ............................................................................................................ 15712.1. SAX ........................................................................................................................ 15712.2. DOM ....................................................................................................................... 15912.3. Comparaison ............................................................................................................. 16212.4. AJAX ...................................................................................................................... 162

    A. Rfrences ........................................................................................................................... 165A.1. Cours XML ............................................................................................................... 165A.2. Tutoriaux .................................................................................................................. 165A.3. Spcifications ............................................................................................................. 165A.4. Sites gnralistes ........................................................................................................ 165A.5. Sites spcialiss .......................................................................................................... 165

    B. Logiciels XML ..................................................................................................................... 166B.1. Memento logiciels ....................................................................................................... 166

    C. Acronymes XML .................................................................................................................. 168Bibliographie ............................................................................................................................ 170Index ....................................................................................................................................... 171

  • 1Chapitre 1. Introduction XMLLe langage XML (eXtended Markup Language) est un langage de format de document. Il drive de SGML(Standard Generalized Markup Language) et HTML (HyperText Markup Language). Comme ces derniers, il s'agitd'un langage form de balises qui permet de structurer les documents.

    Le langage XML s'est impos comme le format standard pour les communications entre applications. Il est utilisdans la plupart des projets de publication sur le WEB ainsi que dans les bases de donnes.

    1.1. HistoriqueL'historique suivant retrace les grandes tapes qui ont conduit la naissance de XML.

    1986Introduction de SGML [ ] par Charles Goldfarb.

    1991Introduction de HTML [ ] par Tim Berners-Lee pour le WEB.

    1998Publication par le W3C [ ] de la version 1.0 d'XML [ ].

    1999Redfinition de HTML 4.0 en XHTML [ ] travers XML.

    2004Publication par le W3C [ ] de la version 1.1 de XML pour une mise jour des caractres spciaux en lienavec Unicode.

    1.2. Intrts Sparation stricte entre contenu et prsentation

    Structuration forte du document

    Extensibilit

    Modles de documents (DTDs et XML-Schmas)

    Modularit des modles

    Validation du document par rapport au modle

    Format texte avec gestion des caractres spciaux

    Format libre

    Nombreuses technologies dveloppes autour de XML

    1.3. Dialectes et extensionsXLink [ ] et XPointer [ ]

    Liens entre documents

    XPath [ ]Sous-ensemble d'un document

  • Introduction XML

    2

    XQuery [ ]Requtes de base de donnes

    XSL [ ]Transformation de documents

    Schmas XML [ ]Modles de documents

    1.4. ApplicationsRSS [ ] (Really Simple Syndication)

    Flux de donnes

    XUL [ ] (XML-based User interface Language)Langage de description d'interfaces graphiques

    SVG [ ] (Scalable Vector Graphics)Dessin vectoriel

    SMIL [ ] (Synchronized Multimedia Integration Language)Multimdia

    MathML [ ]Formules mathmatiques

    WSDL [ ] (Web Services Description Language)Langage de description de services WEB

    XML Signature [ ]Format pour les signatures lctroniques

    SAML [ ] (Security assertion markup language)Langage d'change d'authentifications et d'autorisations

    UBL [ ] (Universal Business Language)Bibliothque de documents standards pour les changes commerciaux

    OpenDocument [ ]Format de document pour les applications bureautiques. Il a d'abord t introduit par OpenOffice et il anensuite t adopt par d'autres applications comme KOffice.

    DocBook [ ]Format de documentation technique utilis pour cet ouvrage

    De nombreux projets informatiques utilisent XML pour le stockage de donnes et en particulier de fichiers deconfigurations.

    ANT [ ]

    Android [ ]

    1.5. DocBookDocBook est un exemple typique d'utilisation de XML. Il s'agit d'un format pour des documents techniques. Cetouvrage a t crit en utilisant DocBook.

    DocBook tait au dpart bas sur SGML mais il s'appuie maintenant sur XML. Il met l'accent sur la smantique dudocument. Il contient de nombreuses balises permettant de dcrire le contenu. Il existe ensuite des outils permettantde traduire un document DocBook en pages HTML ou en document PDF.

  • Introduction XML

    3

    DocBook dcrit trs prcisment la structure du document en utilisant de nombreuses balises. Par contre, il nedcrit pas du tout le rendu du document. Il n'est pas possible de spcifer par exemple la couleur ou la fonte dutexte. L'ide principale de DocBook est de permettre la production de plusieurs documents finaux partir d'unmme document original : document PDF, pages WEB.

  • 4Chapitre 2. Syntaxe de XML2.1. Premier exempleOn commence par donner un premier exemple de document XML comme il peut tre crit dans un fichierbibliography.xml. Ce document reprsente une bibliographie de livres sur XML. Il a t tronqu ci-dessouspour rduire l'espace occup. Ce document contient une liste de livres avec pour chaque livre, le titre, l'auteur,l'diteur (publisher en anglais), l'anne de parution, le numro ISBN et ventuellement une URL.

    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 bibliographyBalise fermante de l'lment racine bibliography

    2.2. Syntaxe et structureIl y a en franais l'orthographe et la grammaire. La premire est constitue de rgles pour la bonne criture desmots. La seconde rgit l'agencement des mots dans une phrase. Pour qu'une phrase en franais soit correcte, il fautd'abord que les mots soient bien orthographis et ensuite que la phrase soit bien construite. Il y aurait encore leniveau smantique mais nous le laisserons de ct. XML a galement ces deux niveaux. Pour qu'un document XMLsoir correct, il doit d'abord tre bien form et ensuite tre valide. La premire contrainte est de nature syntaxique.Un document bien form doit respecter certaines rgles syntaxiques propres XML qui sont explicites ci-dessous.Il s'agit en quelque sorte de l'orthographe d'XML. La seconde contrainte est de nature structurelle. Un documentvalide doit suivre un modle appel type dcrit par une DTD [Chapitre 3] (Document Type Description) ou unschma. Une DTD est en fait une grammaire pour XML. La diffrence avec le franais est que la grammaired'XML n'est pas fige. Pour chaque application, il est possible de choisir la grammaire la plus approprie.

    Un document XML est gnralement contenu dans un fichier texte dont l'extension est .xml. Il peut aussi trerparti en plusieurs fichiers en utilisant les entits externes. Les fichiers contenant des documents dans un dialecteXML peuvent avoir une autre extension qui prcise le format. Les extensions pour les schmas XML, les feuillesde style XSL, les dessins en SVG sont par exemple .xsd, .xsl et .svg.

  • Syntaxe de XML

    5

    Un fichier XML contient du texte dans un format de codage d'Unicode [ ], par exemple UTF-8 [ ] ou Latin1[ ]. Le codage utilis par le fichier est prcis dans l'entte du fichier.

    Un document XML est, la plupart du temps, stock dans un fichier mais il peut aussi tre dmatrialiser et existerindpendament de tout fichier. Il peut, par exemple, exister au sein d'une application qui l'a construit. Une chane detraitement de documents XML peut produire des documents intermdiaires qui sont dtruits la fin. Ces documentsexistent uniquement pendant le traitement et sont jamais mis dans un fichier.

    2.3. Composition globale d'un documentUn document XML est compos des trois constituants suivants.

    PrologueIl contient des dclarations facultatives.

    Corps du documentC'est le contenu mme du document.

    Commentaires et instructions de traitementCeux-ci peuvent apparatre partout dans le document, dans le prologue et le corps.

    Le document se dcoupe en fait en deux parties conscutives qui sont le prologue et le corps. Les commentaireset les instructions de traitement sont ensuite librement insrs avant, aprs et l'intrieur du prologue et du corps.La structure globale d'un document XML est la suivante.

    Prologue ... ... Corps

    Dans l'exemple donn au dbut de ce chapitre, le prologue comprend les trois premires lignes du fichier. Lapremire ligne est l'entte XML et la deuxime est simplement un commentaire utilis par Emacs pour mmoriserle nom du fichier et sa date de dernire modification. La troisime ligne est la dclaration d'une DTD externecontenue dans le fichier bibliography.dtd. Le corps du document commence la quatrime ligne du fichieravec la balise ouvrante . Il se termine la dernire ligne de celui-ci avec la balise fermante.

    2.4. PrologueLe prologue contient deux dclarations facultatives mais fortement conseilles ainsi que des commentaires et desinstructions de traitement. La premire dclaration est l'entte XML qui prcise entre autre la version de XML etle codage du fichier. La seconde dclaration est la dclaration du type du document (DTD) qui dfinit la structuredu document. La dclaration de type de document est omise lorsqu'on utilise des schmas XML ou d'autres typesde modles qui remplacent les DTD. La structure globale du prologue est la suivante.

    ] Entte XML

    Les diffrentes parties du prologue sont dtailles dans les sections suivantes.

  • Syntaxe de XML

    6

    2.4.1. Entte XMLL'entte utilise une syntaxe semblable celle des instructions de traitement [Section 2.5.8] bienqu'elle ne soit pas vritablement une instruction de traitement. L'entte XML a la forme gnrale suivante.

    Cette entte peut contenir trois attributs version, encoding et standalone. Il ne s'agit pas vritablementd'attributs car ceux-ci sont rservs aux lments mais la syntaxe identique justifie ce petit abus de langage.Chaque attribut a une valeur dlimite par une paire d'apostrophes '"' ou une paire de guillemets '''. L'attributversion prcise la version d'XML utilise. Les valeurs possibles actuellement sont 1.0 ou 1.1. L'attributencoding prcise le codage des caractres utilis dans le fichier. Les principales valeurs possibles sont US-ASCII, ISO-8859-1, UTF-8, et UTF-16. Ces noms de codage peuvent aussi tre crits en minuscule. L'attributstandalone prcise si le fichier est autonome, c'est--dire s'il requiert ou non des ressources extrieures. Lavaleur de cet attribut peut tre yes ou no.

    L'attribut version est obligatoire et l'attribut encoding l'est aussi ds que le codage des caractres n'est pasle codage par dfaut UTF-8. Voici quelques exemples d'entte XML.

    2.4.2. Codage des caractresXML utilise la norme Unicode ISO-10646 [ ] aussi appele UCS pour Universal Character Set pour coder lescaractres. Unicode associe des codes 32 bits (4 octets) tous les caractres des langues connues et bien d'autressymboles mathmatiques ou autres. On appelle BMP pour Basic Multilingual Plane l'ensemble des caractresayant un code sur deux octets c'est--dire entre 0 et 0xFFFF. L'ensemble de ces caractres suffit largement pourla trs grande majorit des langues usuelles.Pour viter d'utiliser quatre octets pour chaque caractre, il existe diffrents codages des caractres.

    UCS-4 ou UTF-32 [ ]Chaque caractre est cod directement par son code Unicode sur quatre octets. Ce codage permet donc decoder tous les caractres Unicode.

    UCS-2 [ ]Chaque caractre est cod par son code sur deux octets. Ce codage permet donc uniquement de coder lescaractres du BMP.

    UTF-16 [ ]Ce codage concide essentiellement avec UCS-2 l'exception d'une plage de 2048 positions (0xD800 0xDFFF) qui permettent de coder des caractres en dehors du BMP.

    UTF-8 [ ]Ce codage est le codage par dfaut de XML. Chaque caractre est cod sur un nombre variable d'octets. Lescaractres de l'ASCII sont cods sur un seul octet dont le bit de poids fort est 0. Les caractres en dehorsde l'ASCII utilisent au moins deux octets. Le premier octet commence par autant de 1 que d'octets dans lasquence suivis par un 0. Les autres octets commencent par 10. Le caractre euro '', de code hexadcimalx20AC, est, par exemple, cod par les trois octets 11100010 10000010 10101100. Ce codage a l'avantaged'tre relativement efficace pour les langues europennes.

    ISO-8859-1 (Latin-1) [ ]Chaque caractre est cod sur un seul octet. Ce codage concide avec l'ASCII pour les codes de 0 0x7F.Les codes de 0x80 0xFF sont utiliss pour les caractres spciaux (caractres accentus, cdilles, ) deslangues d'Europe de l'ouest.

    ISO-8859-15 (Latin-15) [ ]Ce codage est une mise jour du codage ISO-8859-1 dont il diffre uniquement en 8 positions. Les caractres'', '', '' et '' remplacent, en particulier, d'autres caractres moins utiles.

  • Syntaxe de XML

    7

    Il est possible d'insrer n'importe quel caractre Unicode dans un document XML en utilisant une des deux syntaxescode dcimal; ou ode hexadcimal;. Le caractre euro '' peut par exemple tre insr par ou .

    Certaines ligatures comme '' sont considres par Unicode comme un seul caractre plutt que comme la fusiondes deux caractres 'oe'. Il s'ensuit que les deux mots 'cur' et 'coeur' sont considrs comme distincts. Ce problmeest rsolu par l'utilisation de collations lors du traitement des documents. Une collation est une collection de rglesqui tablissent des quivalences entre des caractres ou des suites de caractres. Une collation peut, par exemple,dclarer que le caractre '' est quivalent aux deux caractres 'oe'. Une collation tablit aussi l'ordre des caractresutilis pour l'ordre lexicographique. Elle peut, par exemple, dclarer que le caractre '' se place entre les caractres'e' et 'f'. La collation par dfaut est base sur les codes Unicode des caractres. Le caractre '' se trouve, pour cettecollation, aprs le caractre 'z' et le mot 'zbre' est donc avant le mot 'talon' dans l'ordre lexicographique.

    Le mme caractre peut tre reprsent de plusieurs faons en Unicode. Ce phnomne provient du fait qu'Unicodea t construit en fusionnant plusieurs codages et qu'il tente de rester compatible avec chacun d'eux. Le caractre'' peut, par exemple, tre reprsent par le code xB5 qui provient de Latin-1 et du code x3BC qui provientdu bloc des caractres grecs. D'autres caractres encore peuvent avoir un codage en un seul caractre et un autrecodage fait d'une suite de plusieurs codes. Le caractre '' peut, par exemple, tre cod par le code xEF ou parla suite x69 x308 forme du code de 'i' suivi par un code spcial du trma ''. Ce codage multiple conduit des problmes, en particulier pour la comparaison des chanes de caractres. Pour palier ce problme, Unicodeintroduit des normalisations qui transforment les diffrents codages en un codage canonique. La normalisationla plus standard est la normalisation C. Celle-ci transforme, par exemple, la suite de codes x69 x308 en lecode xEF du caractre ''. La normalisation d'une chane de caractres peut tre obtenue avec la fonction XPathnormalize-unicode().

    Quelques exemples de fichiers

    Fichier au format UTF-8 : example-utf8.xml [Examples/example-utf8.xml]

    Fichier au format Latin-1 : example-latin1.xml [Examples/example-latin1.xml]

    Fichier au format Latin-15 : example-latin15.xml [Examples/example-latin15.xml]

    2.4.3. Dclaration de type de documentLa dclaration de type dfinit la structure du document. Elle prcise en particulier quels lments peut contenirchacun des lments. Cette dclaration de type peut prendre plusieurs formes suivant que la dfinition du type estincluse dans le document ou externe. Elle a la forme gnrale suivante qui utilise le mot cl DOCTYPE.

    La forme prcise de cette dclaration est explicite au chapitre consacr aux DTD [Chapitre 3].

    2.5. Corps du documentLe corps du document est constitu de son contenu qui est organis de faon hirarchique la manire d'un systmede fichiers l'exception qu'aucune distinction n'est faite entre fichiers et rpertoire. L'unit de cette organisationest l'lment. Chaque lment peut contenir du texte simple, d'autres lments ou encore un mlange des deux.

    Comme dans une arborescence de fichiers, il y a un lment appel lment racine qui contient l'ensemble dudocument.

    2.5.1. Jetons et noms XMLLes identificateurs sont utiliss en XML pour nommer diffrents objets comme les lments, les attributs, lesinstructions de traitement. Ils servent aussi identifier certains lments par l'intermdiaire des attributs de typeID. XML distinguent deux types d'identificateurs appels jetons (name token en anglais abrg en NMToken) etnoms XML dans cet ouvrage.

  • Syntaxe de XML

    8

    Les caractres autoriss dans les identificateurs sont tous les caractres alphanumriques, c'est--dire les lettresminuscules [a-z], majuscules [A-Z] et les chiffres [0-9] ainsi que le tiret soulign '_', le tiret '-', le point'.' et les deux points ':'.

    Un jeton est une suite quelconque de ces caractres qui ne commence pas par les trois lettres xml en minuscule oumajuscule, c'est--dire par une chane de [xX][mM][lL]. Les identificateurs commenant par ces trois lettressont rservs aux usages internes de XML. 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 audbut des noms. Le caractre ':' est rserv l'utilisation des espaces de noms [Chapitre 4]. De fait, il ne peutapparatre qu'une seule fois pour sparer un prfixe du nom local dans les noms des lments et des attributs. Iln'y a en revanche aucune restriction pour les autres utilisations des noms.

    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 conseillde se limiter aux caractres ASCII de [a-zA-Z] pour assurer une meilleure compatibilit. Beaucoup de logicielsne grent pas les autres caractres dans les identificateurs.

    2.5.2. lments

    Contenu de l'lment name

    Figure 2.1. Composition d'un lment

    Un lment est form d'une balise ouvrante, d'un contenu et de la balise fermante correspondante. La baliseouvrante prend la forme o name est le nom de l'lment et la balise fermante prend la forme .Les noms des lments XML peuvent tre des noms quelconques. Ils ne sont pas limits un ensemble fix denoms prdfinis comme en HTML. Des attributs [Section 2.5.4] peuvent ventuellement tre ajouts dans la baliseouvrante. Le contenu d'un lment est form de tout ce qui se trouve entre la balise ouvrante et la balise fermante(cf. Figure 2.1). Il peut tre constitu de texte, d'autres lments, de commentaires [Section 2.5.7] et d'instructionsde traitement [Section 2.5.8].

    Dans la balise ouvrante, le caractre '

  • Syntaxe de XML

    9

    l'autre. Autrement dit, si la balise ouvrante se trouve entre les deux balises et , alorsla balise fermante doit aussi se trouver entre les deux balises et (cf. Figure 2.3).

    ... ... ... ... ... ... ... ... ... ...

    pa r e ntpa r e nt

    s e l f

    c hi l d2

    s i bl i ng2s i bl i ng1 s i bl i ng3

    c hi l d1 c hi l d3

    de s c 1 de s c 2 de s c 3

    de s c 4

    Figure 2.4. Liens de parent

    Dans l'exemple ci-dessus, le contenu de l'lment self s'tend de la balise ouvrante jusqu' labalise fermante . Ce contenu comprend tous les lments child1, child2 et child3 ainsi queles lments desc1, desc2, desc3 et desc4. Tous les lments qu'il contient sont appels descendantsde l'lment self. Parmi ces descendants, les lments child1, child2 et child3 qui sont directementinclus dans self sans lment intermdiaire sont appels les enfants de l'lment self. Inversement, l'lmentparent qui contient directement self est appel le parent de l'lment self. Les autres lments quicontiennent l'lment self sont appels les anctres de l'lment self. Les autres enfants sibling1,sibling2 et sibling3 de l'lment parent sont appels les frres de l'lment self. Ces relations deparent entre les lments peuvent tre visualises comme un arbre gnalogique (cf. Figure 2.4).

    2.5.3. Sections littralesLes caractres spciaux '' et '&' ne peuvent pas tre inclus directement dans le contenu d'un document.Ils peuvent tre inclus par l'intermdiaire des entits prdfinies [Section 3.3.1.1].

    Il est souvent fastidieux d'inclure beaucoup de caractres spciaux l'aide des entits. Les sections littrales,appeles aussi sections CDATA en raison de la syntaxe permettent d'inclure du texte qui est qui recopi verbatim.Une section littrale commence par la chane de caractres ''.Tous les caractres qui se trouvent entre ces deux chanes font partie du contenu du document, y compris lescaractres spciaux.

    et & ]]>

    Une section CDATA ne peut pas contenir la chane de caractres ']]>' qui permet l'analyseur lexical dedtecter la fin de la section. Il est en particulier impossible d'imbriquer des sections CDATA.

  • Syntaxe de XML

    10

    2.5.4. AttributsLes balises ouvrantes peuvent contenir des attributs associs des valeurs. L'association de la valeur l'attributprend la forme attribute='value' ou la forme attribute="value" o attribute et value sontrespectivement le nom et la valeur de l'attribut. Chaque balise ouvrante peut contenir zro ou plusieurs associationsde valeurs des attributs comme dans les exemples ci-dessous.

    ... ...

    Voici ci-dessous d'autres exemples de balises ouvrantes avec des attributs.

    Lorsque le contenu de l'lment est vide et que la balise ouvrante et la balise fermante sont contractes en uneseule balise, celle-ci peut contenir des attributs comme la balise ouvrante.

    Le nom de chaque attribut doit tre un nom XML [Section 2.5.1]. La valeur d'un attribut peut tre une chanequelconque de caractres dlimite par une paire d'apostrophes ''' ou une paire de guillemets '"'. Elle nepeut pas contenir les caractres spciaux '' et '&'. Ces caractres peuvent toutefois tre introduits parles entits prdfinies [Section 3.3.1.1]. Si la valeur de l'attribut est dlimite par des apostrophes ''', elle peutcontenir des guillemets '"' et inversement.

    Comme des espaces peuvent tre prsents dans la balise aprs le nom de l'lment et entre les attributs, l'indentationest 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 doncimpossible 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 doiventtre places de prfrence dans le contenu des lments. Dans l'exemple suivant, la date proprement dite est placedans le contenu alors que l'attribut format prcise son format. La norme ISO 8601 [ ] spcifie la reprsentationnumrique 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 nomcomplet d'un individu peut, par exemple, tre rparti entre des lments firstname et surname regroups dansun lment personname comme dans l'exemple ci-dessous.

    Gaston Lagaffe

    Les lments firstname et surname peuvent tre remplacs par des attributs de l'lment personnamecomme dans l'exemple ci-dessous. Les deux solutions sont possibles mais la premire est prfrable.

  • Syntaxe de XML

    11

    2.5.5. Attributs particuliersIl existe quatre attributs particuliers xml:lang, xml:space, xml:base et xml:id qui font partie de l'espacede noms XML. Lors de l'utilisation de schmas, ces attributs peuvent tre dclars en important [Section 5.14] leschma l'adresse http://www.w3.org/2001/xml.xsd.

    2.5.5.1. Attribut xml:langL'attribut xml:lang est utilis pour dcrire la langue du contenu de l'lment. Sa valeur est un code de languesur deux ou trois lettres de la norme ISO 639 [ ] (comme par exemple en, fr, es, de, it, pt, ). Ce code peuttre suivi d'un code de pays sur deux lettres de la norme ISO 3166 [ ] spar du code de langue par un caractretiret '-'. Cet attribut est hrit par les lments contenus. Ceci signifie qu'une application traitant le documentdoit prendre en compte, pour chaque lment, l'attribut xml:lang prsent dans l'anctre le plus proche.

    BonjourHelloHi

    Dans le document donn en exemple au dbut du chapitre, chaque lment book a un attribut lang. Ce n'est pasl'attribut xml:lang qui a t utilis car celui-ci dcrit la langue des donnes contenues dans l'lment alors quel'attribut lang dcrit la langue du livre rfrenc.

    2.5.5.2. Attribut xml:spaceL'attribut xml:space permet d'indiquer une application le traitement des espaces. Les deux valeurs possiblesde cet attribut sont default et preserve.

    Le traitement XML des caractres d'espacement est la fois simple dans une premire approche et subtile et sourcede surprises dans un second temps. Les caractres d'espacement sont l'espace ' ' de code #x20, la tabulationde code #x9 ('\t' en notation du langage C), le saut de ligne de code #xA ('\n' en C) et le retour chariotde code #xD ('\r' en C).Les retours la ligne sont normaliss par l'analyseur lexical (parser en anglais). Ceci signifie que les diffrentescombinaisons de fin de ligne sont remplaces par un seul caractre #xA. Cette transformation garantit uneindpendance vis vis des diffrents systmes d'exploitation.

    Les caractres d'espacement sont ensuite transmis tels quels l'application. La plupart d'entre elles considrentde faon quivalente les diffrents caractres d'espacement. Ceci signifie qu'un retour la ligne est vu commeun simple espace. Plusieurs espaces conscutifs sont aussi considrs comme un seul espace. Ce traitementest gnralement le traitement par dfaut des applications. Si l'attribut xml:space a la valeur preserve,l'application doit respecter les caractres d'espacement. Les retours la ligne sont prservs et les espacesconscutifs ne sont pas confondus.

    2.5.5.3. Attribut xml:base chaque lment d'un document XML est associe une URL appele URL de base. Celle-ci est utilise pourrsoudre les URL des entits externes, qui peuvent tre, par exemple des fichiers XML ou des fichiers multimdia(images, sons, vido). Dans le fragment de document XHTML ci-dessous, l'lment img rfrence un fichierimage element.png par son attribut src.

    L'attribut xml:base permet de prciser l'URL de base de l'lment. Cette URL peut tre une URL complte ouune adresse relative. Dans ce dernier cas, l'adresse relative est combine avec l'URL de base du parent pour formerune URL complte. Si l'attribut xml:base est absent, l'URL de base de l'lment est celle de son parent.

    L'URL de base de l'lment racine est calcule partir de l'URL de base du document. Celle-ci est gnralementfournie par l'application qui traite le document. Lorsque le document a t tlcharge par un navigateur,

  • Syntaxe de XML

    12

    son URL de base est son adresse Internet, par exemple http://www.liafa.jussieu.fr/~carton/index.html. Lorsque le document est trait localement, son URL de base est son chemin d'accs dansl'arborescence des fichiers, par exemple file:/home/carton/Enseignement/XML/index.html.

    Pour comprendre comment une URL relative se combine avec une URL complte, il faut d'abord comprendre lastructure d'une URL. La description donne ci-dessous se limite aux aspects indispensables pour apprhender lacomposition des adresses. Chaque URL se dcompose en trois parties.

    Protocole d'accsUne URL commence obligatoirement par le nom d'un protocole d'accs suivi du caractre ':'. Les principauxprotocoles sont http, https, ftp et file.

    Adresse InternetLe protocole est suivi d'une adresse Internet qui commence par les deux caractres '//'. Cette adresse estabsente dans le cas du protocole file.

    Chemin d'accsL'URL se termine par un chemin d'accs dans l'arborescence des fichiers. Ce chemin se dcompose lui-mmeen le nom du rpertoire et le nom du fichier. Ce dernier est form de tous les caractres aprs le derniercaractre '/'.

    Protocole Adresse Internet Chemin d'accs

    Protocole Chemin d'accs

    Rpertoire Fichier

    Rpertoire Fichier

    Figure 2.5. Structure d'une URL

    La composition d'une URL avec une adresse pour former une nouvelle URL est ralise de la faon suivante.

    1. Si l'adresse est elle-mme une URL complte qui commence par un protocole, le rsultat de la compositionest l'adresse.

    2. Si l'adresse est un chemin absolu commenant par le caractre '/', le rsultat est obtenu en remplaant lapartie chemin de l'URL par l'adresse. L'adresse est donc ajoute aprs la partie adresse Internet de l'URL.

    3. Si l'adresse est un chemin relatif ne commenant pas par le caractre '/', le rsultat est obtenu en remplaantle nom du fichier par l'adresse. Le chemin relatif est donc concatn avec le nom du rpertoire.

    Le document suivant illustre les diffrents cas pour la combinaison d'une URL avec une adresse. Pour chacun deslments, l'URL de base est donne.

  • Syntaxe de XML

    13

    http://www.somewhere.org/Enseignement/index.htmlhttp://www.somewhere.org/Enseignement/XML/chapter.htmlhttp://www.somewhere.org/Enseignement/XML/XPath/section.htmlhttp://www.somewhere.org/Course/section.htmlhttp://www.elsewhere.org/section.html

    2.5.5.4. Attribut xml:idL'attribut xml:id est de type xsd:ID. Il permet d'associer un identificateur tout lment indpendamment detoute 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 particulierimpossible de connatre les attributs de type ID qui permettent d'identifier et de rfrencer les lments. L'attributxml:id rsout ce problme puisqu'il est toujours de type ID.

    2.5.6. lment racineTout le corps du document doit tre compris dans le contenu d'un unique lment appel lment racine. Lenom de cet lment racine est donn par la dclaration de type de document si celle-ci est prsente. L'lmentbibliography est l'lment racine de l'exemple donn au dbut du chapitre.

    ... ] Commentaires et instructions de traitement ] Balise ouvrante Corps ... lments, commentaires et du ... instructions de traitement document ] Balise fermante ... ] Commentaires et instructions de traitement

    2.5.7. CommentairesLes commentaires sont dlimits par les chanes de caractres '' comme en HTML. Ils nepeuvent pas contenir la chane '--' forme de deux tirets '-' et ils ne peuvent donc pas tre imbriqus. Ilspeuvent tre prsents dans le prologue et en particulier dans la DTD. Ils peuvent aussi se situer dans le contenu den'importe quel lment et aprs l'lment racine. Un exemple de document XML avec des commentaires partouto ils peuvent apparatre est donn ci-dessous.

    Un exemple simplissime

    Les caractres spciaux '' et '&' peuvent apparatre dans les commentaires. Il est en particulier possiblede mettre en commentaire des lments avec leurs balises comme dans l'exemple ci-dessous.

  • Syntaxe de XML

    14

    2.5.8. Instructions de traitementLes instructions de traitement sont destines aux applications qui traitent les documents XML. Elles sont l'analoguedes directives #... du langage C qui s'adressent au compilateur. Elles peuvent apparatre aux mmes endroitsque les commentaires l'exception du contenu de la DTD.

    Les instructions de traitement sont dlimites par les chanes de caractres ''. Les deux caractres'' utilisepar l'analyseur lexical pour dterminer la fin de l'instruction. Le nom de l'instruction permet l'application dedterminer si l'instruction lui est destine.

    Bien que le contenu d'une instruction puisse tre quelconque, il est souvent organis en une suite de pairesparam="value" avec une syntaxe imitant celle des attributs. Il incombe cependant l'application traitantl'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 traitementde la forme suivante. Ces instructions indiquent le nom du fichier cible utiliser par les feuilles de styles pourla conversion en HTML.

    Une feuille de style XSL [Chapitre 8] peut tre attache un document XML par l'intermdiaire d'une instructionde traitement de nom xml-stylesheet comme ci-dessous.

    L'entte XML [Section 2.4.1] ressemble une instruction de traitement de nomxml avec des paramtres version, encoding et standalone. Elle utilise en effet la mme syntaxe. Ellen'est pourtant pas une instruction de traitement et elle ne fait pas partie du document.

    2.6. Exemples minimauxVoici quelques exemples minimalistes de documents XML.

    2.6.1. Exemple minimalL'exemple suivant contient uniquement un prologue avec la dclaration XML et un lment de contenu vide. Lesbalises ouvrante et fermante ont t contractes en une seule balise . Ce document n'apas de dclaration de DTD.

    L'exemple aurait pu tre encore rduit en supprimant la dclaration XML mais celle-ci est fortement conseille.

    2.6.2. Exemple simple avec une DTDCet exemple contient une dclaration de DTD qui permet de valider le document. Cette DTD dfinit l'lmentsimple et dclare que son contenu doit tre textuel.

    Un exemple simplissime

  • Syntaxe de XML

    15

    2.7. Utilisation de XIncludeIl est possible de rpartir un gros document en plusieurs fichiers afin d'en rendre la gestion plus aise. Il existeessentiellement deux mthodes pour atteindre cet objectif. Le point commun de ces mthodes est de scinder ledocument en diffrents fichiers qui sont inclus par un fichier principal. Les mthodes se diffrencient pas leursfaons de raliser l'inclusion.

    La mthode la plus ancienne t hrite de SGML et elle est base sur les entits externes [Section 3.3.1.3].

    La mthode plus rcente base sur XInclude [ ] est utiliser de prfrences aux entits externes. XInclude dfinitun lment 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 quiprcise le type des donnes. Cet attribut peut prendre les valeurs xml ou text. Le fichier source principal decet ouvrage inclut, par exemple, les fichiers contenant les diffrents chapitres grce des lments includecomme ci-dessous.

    ...

    ...

    Le fragment de document contenu dans un fichier inclus doit tre bien form. Il doit en outre tre entirementcontenu 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 chanede traitement une tape consistant construire un document global entirement contenu dans un seul fichier. Lelogiciel xmllint peut, par exemple, raliser cette opration. Avec l'option --xinclude, il crit sur la sortiestandard un document o les lments xi:include sont remplacs par le contenu des fichiers rfrencs. Cetteoption 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 de l'lment racine du document dans le fichier. Cet attribut contient une URL qui permet de rsoudreles liens relatifs. Le chemin d'accs au fichier doit donc tre ajout la valeur de l'attribut xml:base. Il faut, enparticulier, ajouter cet attribut s'il est absent et si le chemin d'accs est non vide. Le chemin d'accs au fichier estrcupr 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 ledocument et utilisent ces liens.

    Si chacun des fichiers introduction.xml et Syntax/chapter.xml a comme lment racine un lmentchapter sans attribut xml:base, le rsultat de l'inclusion de ces fichiers doit donner un document ressemblant ceci.

    ...

    ...

  • Syntaxe de XML

    16

    ...

    ...

  • 17

    Chapitre 3. DTDLe rle d'une DTD (Document Type Definition) est de dfinir prcisment la structure d'un document. Il s'agitd'un certain nombre de contraintes que doit respecter un document pour tre valide. Ces contraintes spcifientquelles sont les lments qui peuvent apparatre dans le contenu d'un lment, l'ordre ventuel de ces lmentset la prsence de texte brut. Elles dfinissent aussi, pour chaque lment, les attributs autoriss et les attributsobligatoires.

    Les DTD ont l'avantage d'tre relativement simples utiliser mais elles sont parfois aussi un peu limites. Lesschmas permettent de dcrire de faon plus prcise encore la structure d'un document. Ils sont plus sophistiqusmais plus difficiles manipuler.

    3.1. Un premier exempleOn reprend la petite bibliographie du fichier bibliography.xml dj utilise au chapitre prcdent. Latroisime 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 clDOCTYPE.

    On prsente maintenant le contenu de ce fichier bibliography.dtd qui contient la DTD du fichierbibliography.xml. La syntaxe des DTD a t hrites de SGML et elle est diffrente du reste du documentXML. Il n'y a pas de balises ouvrantes et fermantes. La DTD contient des dclarations d'lments et d'attributsdlimites par les chanes de caractres ''. Un mot cl juste aprs la chane '3.2. Dclaration de la DTDLa dclaration de la DTD du document doit tre place dans le prologue. La DTD peut tre interne, externe oumixte. Elle est interne si elle est directement incluse dans le document. Elle est externe si le document contientseulement une rfrence vers un autre document contenant la DTD. Elle est finalement mixte si elle est constitued'une partie interne et d'une partie externe.

    Une DTD est gnralement prvue pour tre utilise pour de multiples documents. Elle est alors utilisecomme DTD externe. En revanche, il est pratique d'inclure directement la DTD dans le document en phase dedveloppement. La dclaration de la DTD est introduite par le mot cl DOCTYPE et a la forme gnrale suivanteo root-element est le nom de l'lment racine du document.

  • DTD

    18

    Le nom de l'lment racine est suivi du contenu de la DTD dans le cas d'une DTD interne ou de l'URL du fichiercontenant la DTD dans le cas d'une DTD externe.

    3.2.1. DTD interneLorsque la DTD est incluse dans le document, sa dclaration prend la forme suivante o son contenu est encadrpar des caractres crochets '[' et ']'.

    Les dclarations declarations constituent la dfinition du type du document. Dans l'exemple suivant de DTD,le nom de l'lment racine est simple. La DTD dclare en outre que cet lment ne peut contenir que du texte(Parsed Characters DATA) et pas d'autre lment.

    3.2.2. DTD externeLorsque la DTD est externe, celle-ci est contenue dans un autre fichier dont l'extension est gnralement .dtd.Le document XML se contente alors de donner l'adresse de sa DTD pour que les logiciels puisse y accder.L'adresse de de la DTD peut tre donne explicitement par une URL ou par un FPI (Formal Public Indentifier).Les FPI sont des noms symboliques donns aux documents. Ils sont utiliss avec des catalogues qui tablissent lescorrespondances entre ces noms symboliques et les adresses relles des documents. Lorsqu'un logiciel rencontreun FPI, il parcourt le catalogue pour le rsoudre, c'est--dire dterminer l'adresse relle du document. Lescatalogues peuvent contenir des adresses locales et/ou des URL. Ils constituent donc une indirection qui facilite lamaintenance. Lorsqu'un document, une DTD par exemple, est dplac, il suffit de modifier les catalogues pluttque tous les documents qui rfrencent le document.

    3.2.2.1. Adresse par URLLa rfrence une URL est introduite par le mot cl SYSTEM suivi de l'URL dlimit par des apostrophes '''ou des guillemets '"'.

    L'URL url peut tre soit une URL complte commenant par http:// ou ftp:// soit plus simplement lenom d'un fichier local comme dans les exemples suivants.

    3.2.2.2. Adresse par FPILa rfrence un FPI est introduite par le mot cl PUBLIC suivi du FPI et d'une URL dlimite par des apostrophes''' ou des guillemets '"'. L'URL est utilise dans le cas o le FPI ne permet pas l'application de retrouverla DTD.

    L'exemple suivant est la dclaration typique d'une page HTML qui utilise une des DTD de XHTML.

  • DTD

    19

    3.2.3. DTD mixteIl est possible d'avoir une DTD externe adresse par URL ou FPI et des dclarations internes. Les dclarationsinternes peuvent alors redfinir des lments ou des attributs dj dfinis dans la DTD externe. La dclarationprend alors une des deux formes suivantes On retrouve un mlange de la syntaxe des DTD externes avec les motscls SYSTEM et PUBLIC et de la syntaxe des DTD internes avec des dclarations encadres par les caractres'[' et ']'.

    Il est possible de redfinir dans la partie interne un lment ou une entit dj dfinie la partie externe. La dfinitioninterne a alors priorit sur la dfinition externe. Ce mcanisme permet d'utiliser une DTD externe tout en adaptantcertaines dfinitions au document.

    3.3. Contenu de la DTDUne DTD est essentiellement constitue de dclarations d'lments et d'attributs. Elle peut aussi contenir desdclarations d'entits qui sont des macros semblables aux #define du langage C.

    3.3.1. Dclaration d'entitUne entit est un nom donn un fragment de document. Ce fragment peut tre insr dans le document en utilisantsimplement le nom de l'entit. Il s'agit en fait d'un mcanisme d'abrviation. Si l'entit a pour nom entity, lefragment est insr par &entity; o le nom de l'entit est encadr des caractres '&' et ';'. L'entit peut treutilise dans le contenu des lments et dans les valeurs des attributs comme dans l'exemple ci-dessous.

    Content: &entity;

    Quelques entits sont prdfinies afin d'insrer les caractres spciaux. D'autres entits peuvent tre dfinies l'intrieur de la DTD du document.

    3.3.1.1. Entits prdfiniesIl existe des entits prdfinies permettant d'inclure les caractres spciaux '', '&', '"' et ''' dans lescontenus d'lments et dans les valeurs d'attributs. Ces entits sont indispensables car ces caractres spciaux nepeuvent pas apparatre directement dans le contenu du document. Ces entits sont les suivantes.

    Entit Caractre< >

    & &

    " "

    ' '

    Tableau 3.1. Entits prdfinies

    Les nombreuses entits prdfinies en XHTML comme pour le symbole n'existent pas enXML. La seule faon d'inclure ce caractre est d'utiliser les notations code dcimal; ou odehexadcimal;. Il est cependant possible de dfinir ces propres entits (cf. ci-dessous).

    3.3.1.2. Entit interneUne entit est dite interne lorsque le fragment est inclus directement dans le document. La dclaration d'une telleentit prend la forme suivante o l'identifiant entity est le nom l'entit et fragment est la valeur de l'entit.Cette valeur doit tre un fragment XML bien form. Elle peut contenir des caractres et des lments.

  • DTD

    20

    Si la DTD contient par exemple la dclaration d'entit suivante.

    il est possible d'inclure le texte also known as en crivant seulement &aka;.

    Il est possible d'utiliser des entits dans la dfinition d'une autre entit pourvu que ces entits soient galementdfinies. L'ordre de ces dfinitions est sans importance car les substitutions sont ralises au moment o ledocument est lu par l'analyseur de l'application. Les dfinitions rcursives sont bien sr interdites.

    ]>

    &chapter1; &chapter2;

    Chacun des fichiers contenant une entit externe peut avoir une entte. Celle-ci permet par exemple de dclarerun encodage des caractres diffrents du fichier principal.

    Ce mcanisme pour rpartir un document en plusieurs fichiers est abandonner au profit de XInclude [Section 2.7]qui est plus pratique.

    3.3.1.4. Entit paramtreLes entits paramtres sont des entits qui peuvent uniquement tre utilises l'intrieur de la DTD. Ellespermettent d'crire des DTD modulaires en dclarant des groupes d'lments ou d'attributs utiliss plusieurs fois.La dclaration d'une entit paramtre prend la forme suivante.

  • DTD

    21

    L'entit entity ainsi dclare peut tre utilise en crivant %entity; o le nom de l'entit est encadr descaractres '%' et ';'. Une entit paramtre peut uniquement tre utilise dans la partie externe de la DTD.L'exemple suivant dfinit deux entits paramtre idatt et langatt permettant de dclarer des attributs id etxml:lang facilement.

    Les entits paramtre ajoutent de la modularit qui est surtout ncessaire dans l'criture de DTD de grande taille.Dans l'exemple prcdent, l'attribut id pourrait tre remplac partout par un attribut xml:id en changeantuniquement la dfinition de l'entit paramtre idatt.

    3.3.2. Dclaration d'lmentLa dclaration d'un lment est ncessaire pour qu'il puisse apparatre dans un document. Cette dclaration prcisele nom et le type de l'lment. Le nom de l'lment doit tre un nom XML [Section 2.5.1] et le type dtermineles contenus valides de l'lment. On distingue les contenus purs uniquement constitus d'autres lments, lescontenus textuels uniquement constitus de texte et les contenus mixtes qui mlangent lments et texte.

    De manire gnrale, la dclaration d'un lment prend la forme suivante o element et type sontrespectivement le nom et le type de l'lment. Le type de l'lment dtermine quels sont ses contenus autoriss.

    3.3.2.1. Contenu pur d'lmentsLorsque le contenu d'un lment est pur, celui-ci ne peut pas contenir de texte mais seulement d'autres lments.Ces lments fils peuvent, leur tour, contenir d'autres lments et/ou du texte. Leur contenu est spcifi par leurpropre dclaration dans la DTD. La dclaration de l'lment dtermine quels lments il peut contenir directementet dans quel ordre. Une dclaration d'lment a la forme suivante.

    Le nom de l'lment est donn par l'identifiant element et l'expression rationnelle regexp dcrit les suitesautorises d'lments dans le contenu de l'lment. Cette expression rationnelle est construite partir des nomsd'lments en utilisant les oprateurs ',', '|', '?', '*' et '+' ainsi que les parenthses '(' et ')' pourformer des groupes. La signification des cinq oprateurs est donne par la table suivante. Les oprateurs ',' et'|' sont binaires alors que les oprateurs '?', '*' et '+' sont unaires et postfixs. Ils se placent juste aprsleur oprande.

    Oprateur Signification, Mise en squence| Choix? 0 ou 1 occurrence* Itration (nombre quelconque d'occurrences)+ Itration stricte (nombre non nul d'occurrences)

    Tableau 3.2. Oprateurs des DTD

    Cette dfinition est illustre par les exemples suivants.

    L'lment elem doit contenir un lment elem1, un lment elem2 puis un lment elem3 dans cet ordre.

  • DTD

    22

    L'lment elem doit contenir un seul des lments elem1, elem2 ou elem3.

    L'lment elem doit contenir un lment elem1, un ou zro lment elem2 puis un lment elem3 danscet ordre.

    L'lment elem doit contenir un lment elem1, une suite ventuellement vide d'lments elem2 et unlment elem3 dans cet ordre.

    L'lment elem doit contenir un lment elem1, un lment elem2 ou un lment elem4 puis un lmentelem3 dans cet ordre.

    L'lment elem doit contenir une suite d'lments elem1, elem2, elem3, elem1, elem2, jusqu' unlment elem3.

    L'lment elem doit contenir une suite quelconque d'lments elem1, elem2 ou elem3.

    L'lment elem doit contenir une suite non vide d'lments elem1, elem2 ou elem3.

    3.3.2.2. Contenu textuelLa dclaration de la forme suivante indique qu'un lment peut uniquement contenir du texte. Ce texte est formde caractres, d'entits qui seront remplaces au moment du traitement et de sections littrales CDATA.

    Dans l'exemple suivant, l'lment text est de type #PCDATA.

    ]>

    Du texte simple Une ]]> Des entits < et >

    3.3.2.3. Contenu mixteLa dclaration de la forme suivante indique qu'un lment peut uniquement contenir du texte et les lmentselement1, , elementN. C'est la seule faon d'avoir un contenu mixte avec du texte et des lments. Il n'y aaucun contrle sur le nombre d'occurrences de chacun des lments et sur leur ordre d'apparition dans le contenude l'lment ainsi dclar. Dans une telle dclaration, le mot cl #PCDATA doit apparatre en premier avant tousles noms des lments.

    Dans l'exemple suivant, l'lment book possde un contenu mixte. Il peut contenir du texte et des lments emet cite en nombre quelconque et dans n'importe quel ordre.

  • DTD

    23

    ]>

    Du texte, une citation et encore du texte.

    3.3.2.4. Contenu videLa dclaration suivante indique que le contenu de l'lment element est ncessairement vide. Cet lment peutuniquement avoir des attributs. Les lments vides sont souvent utiliss pour des liens entre lments.

    Des exemples d'utilisation d'lments de contenu vide sont donns la section traitant des attributs de type ID,IDREF et IDREFS [Section 3.3.3.2].

    Dans un soucis de portabilit, il est conseill de contracter les balises ouvrante et fermante lorsqu'un lment estdclar de contenu vide et de le faire uniquement dans ce cas.

    3.3.2.5. Contenu libreLa dclaration suivante n'impose aucune contrainte sur le contenu de l'lment element. Par contre, ce contenudoit bien entendu tre bien form et les lments contenus doivent galement tre dclars. Ce type de dclarationspermet de dclarer des lments dans une DTD en cours de mise au point.

    3.3.3. Dclaration d'attributPour qu'un document soit valide, tout attribut doit tre dclar. La dclaration d'attribut prend la forme gnralesuivante o attribut est le nom de l'attribut et element le nom de l'lment auquel il appartient. Cettedclaration comprend galement le type type et la valeur par dfaut default de l'attribut. Le nom de l'attributdoit tre un nom XML [Section 2.5.1].

    Il est possible de dclarer simultanment plusieurs attributs pour un mme lment. Cette dclaration prend alorsla forme suivante o l'indentation est bien sr facultative.

    attributN typeN defaultN >

    Les diffrents types possibles pour un attribut ainsi que les valeurs par dfaut autorises sont dtaills dans lessections suivantes.

    3.3.3.1. Types des attributsLe type d'un attribut dtermine quelles sont ses valeurs possibles. Les DTD proposent uniquement un choix finide types pour les attributs. Le type doit en effet tre pris dans la liste suivante. Les types les plus utiliss sontCDATA, ID et IDREF.

    CDATACe type est le plus gnral. Il n'impose aucune contrainte la valeur de l'attribut. Celle-ci peut tre une chanequelconque de caractres.

  • DTD

    24

    Liste (value1 | value2 | ... | valueN) de jetonsLa valeur de l'attribut doit tre une des valeurs value1, value2, ou valueN. Comme ces valeurs sontdes jetons, celles-ci ne sont pas dlimites par des apostrophes ''' ou des guillemets '"'.

    NMTOKENLa valeur de l'attribut est un jeton [Section 2.5.1].

    NMTOKENSLa valeur de l'attribut est une liste de jetons spars par des espaces.

    IDLa valeur de l'attribut est un nom XML [Section 2.5.1]. Un lment peut avoir un seul attribut de ce type.

    IDREFLa valeur de l'attribut est une rfrence un lment identifi par la valeur de son attribut de type ID.

    IDREFSLa valeur de l'attribut est une liste de rfrences spares par des espaces.

    NOTATIONLa valeur de l'attribut est une notation

    ENTITYLa valeur de l'attribut une entit externe non XML

    ENTITIESLa valeur de l'attribut une liste d'entits externes non XML

    Le type le plus gnral est CDATA puisque toutes les valeurs correctes d'un point de vue syntaxique sont permises.Cet type est trs souvent utilis car il est appropri ds qu'il n'y a aucune contrainte sur la valeur de l'attribut.

    Les types NMTOKEN et NMTOKENS imposent respectivement que la valeur de l'attribut soit un jeton [Section 2.5.1]ou une suite de jetons spars par des espaces. Il est aussi possible d'imposer que la valeur de l'attribut soit dansune liste fixe de jetons. Il est impossible, avec une DTD, de restreindre les valeurs d'un attribut une liste devaleurs qui ne sont pas des jetons.L'utilisation des trois types NOTATION, ENTITY et ENTITIES est rserve l'usage des entits externes nonXML et elle n'est pas dtaille dans cet ouvrage. L'utilisation des trois types ID, IDREF et IDREFS est dveloppe la section suivante.

    3.3.3.2. Attributs de type ID, IDREF et IDREFSIl est frquent qu'il existe des liens entre les donnes d'un document XML. Il peut s'agir, par exemple, de rfrences d'autres parties du document. Les attributs de types ID, IDREF et IDREFS s'utilisent conjointement pourmatrialiser ces liens au sein d'un document. Un attribut de type ID permet d'identifier de faon unique un lmentdu document. Les liens de type IDREF et IDREFS permettent au contraire de rfrencer un ou plusieurs autreslments. Ils crent ainsi des liens entre l'lment ayant les attributs IDREF ou IDREFS et les lments rfrencs.

    La valeur d'un attribut de type ID doit tre un nom XML [Section 2.5.1]. La valeur de cet attribut doit tre uniquedans tout le document. Ceci signifie qu'un autre attribut de type ID d'un autre lment ne peut pas avoir la mmevaleur pour que le document soit valide. Un lment ne peut avoir qu'un seul attribut de type ID.

    Les attributs id de type ID des lments HTML sont utiliss par les slecteurs de CSS [Section 10.2.2] avecl'oprateur '#' pour dsigner un lment unique d'un document.

    La valeur d'un attribut de type IDREF doit tre un nom XML. Ce nom doit en outre tre la valeur d'un attributde type ID d'un lment pour que le document soit valide. La valeur d'un attribut de type IDREFS doit tre unesuite de noms. Chacun de ces noms doit en outre tre la valeur d'un attribut de type ID d'un lment pour quele document soit valide.

    Le document suivant illustre l'utilisation des attributs de type ID, IDREF et IDREFS qui est faite par DocBookpour les rfrences internes. Son contenu est scind en sections dlimites par les lments section. Chacun de

  • DTD

    25

    ces lments a un attribut id de type ID. Le contenu des lments section est constitu de texte et d'lmentsref et refs ayant respectivement un attribut idref de type IDREF et un attribut idrefs de type IDREFS.Ces lments permettent, dans le contenu d'une section, de rfrencer une (par ref) ou plusieurs (par refs)autres sections. Il faut remarquer que les lments ref et refs n'ont jamais de contenu. Ils sont dclars videsen utilisant le mot cl EMPTY. Il appartient l'application qui gnre le document final d'ajouter du contenu quipeut tre par exemple le numro ou le titre de la section rfrence.

    ]>

    Une rfrence Des rfrences Section sans rfrence Une auto-rfrence

    Les attributs de type ID et IDREF permettent galement de structurer un document. Si l'adresse et d'autresinformations sont ajoutes l'diteur dans le document bibliography.xml, celles-ci sont recopies danschaque livre publi par l'diteur. Cette duplication de l'information est bien sr trs mauvaise. Une meilleureapproche consiste scinder la bibliographie en deux parties. Une premire partie contient les livres et une secondeles diteurs avec les informations associes. Ensuite chaque livre se contente d'avoir une rfrence sur son diteur.Un attribut id de type ID est ajout chaque lment publisher de la seconde partie. Chaque lmentpublisher contenu dans un lment book est remplac par un lment published ayant un attribut by detype IDREF.

    XML langage et appplications Alain Michard 2001 2-212-09206-7 http://www.editions-eyrolles/livres/michard/ XML by Example Benot Marchal 2000 0-7897-2242-9 ...

    Eyrolles Paris

  • DTD

    26

    Macmillan Computer Publishing New York ...

    Beaucoup d'applications ne prennent pas en compte la DTD pour traiter un document. Il leur est alors impossible desavoir quels attributs sont de type ID, IDREF ou IDREFS. Elles utilisent souvent la convention qu'un attribut denom id est implicitement de type ID. Une meilleure solution consiste utiliser l'attribut xml:id [Section 2.5.5.4]qui est toujours de type ID.

    3.3.3.3. Valeur par dfautChaque dclaration d'attribut prcise une valeur par dfaut. Celle-ci peut prendre une des quatre formes suivantes.

    "value" o value est une chane quelconque de caractres dlimite par ''' ou '"'Si l'attribut est absent pour un lment du document, sa valeur est implicitement la valeur value. Cette valeurdoit, bien sr, tre du type donn l'attribut.

    #IMPLIEDL'attribut est optionnel et il n'a pas de valeur par dfaut. Si l'attribut est absent, il n'a pas de valeur.

    #REQUIREDL'attribut est obligatoire et il n'a pas de valeur par dfaut.

    #FIXED "value" o value est une chane quelconque de caractres dlimite par ''' ou '"'La valeur de l'attribut est fixe la chane de caractres value. Si l'attribut est absent, sa valeur estimplicitement value. Si l'attribut est prsent, sa valeur doit tre value pour que le document soit valide.Cette valeur doit, bien sr, tre du type donn l'attribut.

    Beaucoup d'applications ne prennent pas en compte la DTD pour traiter un document XML. Ce comportementpose problme avec les valeurs par dfaut et les valeurs fixes (utilisation de #FIXED) des attributs. Si l'attribut estabsent pour un lment du document, l'application va considrer que l'attribut n'a pas de valeur bien que la DTDdclare une valeur par dfaut. L'utilisation des valeurs par dfaut est donc viter pour une portabilit maximale.

    3.3.3.4. ExemplesVoici quelques exemples de dclarations d'attributs avec, pour chacune d'elles, des valeurs valides et non validespour l'attribut.

    La valeur de l'attribut meta peut tre une chane quelconque et sa valeur par dfaut est la chane default.

    attribut gal la chane Hello World! attribut gal la valeur par dfaut default attribut gal la chane vide attribut gal la chane =='"== attribut gal la chane =='"== attribut gal la chane ==== attribut gal la chane ====

    La valeur de l'attribut lang peut tre soit le jeton fr soit le jeton en et sa valeur par dfaut est le jeton fr.

    attribut gal la valeur par dfaut fr attribut gal la valeur par dfaut fr

  • DTD

    27

    attribut gal au jeton en non valide car la valeur de n'est pas numre

    L'attribut name est optionnel et sa valeur doit tre un jeton. Il n'a pas de valeur par dfaut.

    attribut absent et sans valeur attribut gal au jeton en attribut gal au jeton -id234 non valide car Hello World! n'est pas un jeton

    L'attribut id est obligatoire et sa valeur doit tre un nom unique. Il n'a pas de valeur par dfaut.

    non valide car l'attribut obligatoire est absent attribut gal au nom id-234 non valide car Hello World! n'est pas un nom

    L'attribut ref est obligatoire et sa valeur doit tre un nom. Il n'a pas de valeur par dfaut.

    valide s'il existe un lment avec un attribut de typeID gal id-234

    non valide car -id234 n'est pas nom.

    L'attribut refs est obligatoire et sa valeur doit tre une suite de noms. Il n'a pas de valeur par dfaut.

    valide s'il existe un lment avec un attribut de typeID gal id-234

    valide s'il existe des lments avec des attributs detype ID gaux respectivement id-234 et id-437

    La valeur de l'attribut style de l'lment rule est fixe la valeur free.

    attribut gal la valeur fixe free attribut gal la valeur fixe free non valide car la valeur est diffrente de la valeur fixe

    3.4. Outils de validations Page de validation du W3C [http://validator.w3.org/]

    Page de validation du Scholarly Technology Group de l'universit de Brown [http://www.stg.brown.edu/service/xmlvalid/]

  • 28

    Chapitre 4. Espaces de nomsLes espaces de noms permettent d'utiliser simultanment des lments de mme nom mais dfinis dans des modlesdiffrents.

    4.1. Identification d'un espace de nomsUn espace de noms est identifi par une URL appele URL de l'espace de noms. Il est sans importance que l'URLpointe rellement sur un document. Cette URL garantit seulement que l'espace de noms est identifi de manireunique. Dans la pratique, l'URL permet aussi souvent d'accder un document qui dcrit l'espace de noms. Uneliste [Section 4.7] des URL associes aux principaux espaces de noms est donne la fin du chapitre.

    4.2. Dclaration d'un espace de nomsUn espace de noms dclar par un pseudo attribut de forme xmlns:prefix dont la valeur est une URL quiidentifie l'espace de noms. Le prfixe prefix est un nom XML [Section 2.5.1] ne contenant pas le caractre ':'.Il est ensuite utilis pour qualifier les noms d'lments. Bien que la dclaration d'un espace de noms se prsentecomme un attribut, celle-ci n'est pas considre comme un attribut. Le langage XPath [Chapitre 6] distingue eneffet les attributs des dclarations d'espaces de noms. Ces dernires sont manipules de faon particulire.

    Un nom qualifi d'lment prend la forme prefix:local o prefix est un prfixe associ un espace denoms et local est le nom local de l'lment. Ce nom local est galement un nom XML ne contenant pas lecaractre ':'. Dans la terminologie XML, les noms sans caractre ':' sont appels NCNAME qui est l'abrviationde No Colon Name et les noms qualifis sont appels QNAME qui est, bien sr, l'abrviation de Qualified Name.Dans l'exemple suivant, on associe le prfixe html l'espace de noms de XHTML identifi par l'URL http://www.w3.org/1999/xhtml. Ensuite, tous les lments de cet espace de noms sont prfixs par html:.

    Espaces de noms ...

    Le choix du prfixe est compltement arbitraire. Dans l'exemple prcdent, on aurait pu utiliser foo ou bar la place du prfixe html. Il faut par contre tre cohrent entre la dclaration du prfixe et son utilisation. Mmesi les prfixes peuvent tre librement choisis, il est d'usage d'utiliser certains prfixes pour certains espaces denoms. Ainsi, on prend souvent html pour XHTML, xsd ou xs pour les schmas XML et xsl pour les feuillesde style XSL.

    Il est bien sr possible de dclarer plusieurs espaces de noms en utilisant plusieurs attributs de la formexmlns:prefix. Dans l'exemple suivant, on dclare galement l'espace de noms de MathML et on l'associe auprfixe mml.

    Espaces de noms ...

  • Espaces de noms

    29

    ...

    ...

    C'est l'URI associ au prfixe qui dtermine l'espace de noms. Le prfixe est juste une abrviation pour l'URI.Deux prfixes associs au mme URI dterminent le mme espace de noms. Dans l'exemple suivant, les deuxlments firstname et surname font partie du mme espace de noms. L'exemple suivant est seul donn pourillustrer le propos mais il n'est pas suivre. C'est une mauvaise pratique d'associer deux prfixes la mme URI.

    Gaston Lagaffe

    4.3. Porte d'une dclarationLa porte d'une dclaration d'un espace de noms est l'lment dans laquelle elle est faite. L'exemple prcdentaurait pu aussi tre crit de la manire suivante. Il faut remarquer que la porte de la dclaration comprend lesbalises de l'lment qui la contient. Il est ainsi possible d'utiliser le prfixe html dans l'lment html pour obtenirle nom qualifi html:html.

    Espaces de noms ...

    ...

    ...

    4.4. Espace de noms par dfautIl existe un espace de noms par dfaut associ au prfixe vide. Son utilisation permet d'allger l'criture desdocuments XML en vitant de mettre un prfixe au lments les plus frquents. Lorsque plusieurs espaces de nomscoexistent au sein d'un document, il faut, en gnral, rserver l'espace de noms par dfaut l'espace de noms leplus utilis. Dans le cas des schmas [Section 5.13], il est souvent pratique de prendre pour espace de noms pardfaut l'espace de noms cible.

    L'espace de noms par dfaut peut tre spcifi par un pseudo attribut de nom xmlns dont la valeur est l'URL del'espace de noms. Lorsque celui a t spcifi, les lments dont le nom n'est pas qualifi font partie de l'espacede noms par dfaut. L'exemple prcdent aurait pu tre simplifi de la faon suivante.

    Espaces de noms

  • Espaces de noms

    30

    ...

    ...

    ...

    Comme la dclaration de l'espace de noms est locale l'lment, l'exemple prcdent aurait pu tre crit de faonencore plus simplifie en changeant localement dans l'lment math l'espace de noms par dfaut.

    Espaces de noms ...

    ...

    ...

    Tant que l'espace de noms par dfaut n'a pas t spcifi, les lments dont le nom n'est pas qualifi ne font partied'aucun espace de noms. Leur proprit espace de noms n'a pas de valeur. Il est possible de revenir l'espace denoms par dfaut non spcifi en affectant la chane vide l'attribut xmlns comme dans l'exemple suivant.

    Espaces de noms ...

    Gaston Lagaffe ...

    Une consquence de la remarque prcdente est que dans un document XML sans dclaration d'espace denoms, tous les lments ne font partie d'aucun espace de noms. Ce comportement assure une compatibilit desapplications avec les documents sans espace de noms.

  • Espaces de noms

    31

    4.5. AttributsLes attributs peuvent galement avoir des noms qualifis. Ils font alors partie de l'espace de noms donn par leprfixe comme dans l'exemple suivant. L'attribut noNamespaceSchemaLocation fait partie de l'espace denoms des instances de schmas identifi par l'URL http://www.w3.org/2001/XMLSchema-instance.Le nom de l'attribut noNamespaceSchemaLocation doit donc avoir un prfixe associ cette URL. Ladclaration de l'espace de noms peut avoir lieu dans le mme lment, comme dans l'exemple ci-dessous, puisquela porte de celle-ci est l'lment tout entier.

    ...

    En revanche, les attributs dont le nom n'est pas qualifi ne font jamais partie de l'espace de noms par dfaut. Cettergle s'applique que l'espace de noms par dfaut soit spcifi ou non. Dans l'exemple ci-dessous, l'lment bookappartient l'espace de noms DocBook puisque celui-ci est dclar comme l'espace de noms par dfaut. L'attributid appartient l'espace de noms XML et l'attribut version n'appartient aucun espace de noms.

    4.6. Espace de noms XMLLe prfixe xml est implicitement li l'espace de noms XML dont l'URL est http://www.w3.org/XML/1998/namespace. Cet espace de noms n'a pas besoin d'tre dclar. Les quatre attributs particuliers[Section 2.5.5] xml:lang, xml:space, xml:base et xml:id font partie de cet espace de noms.

    Ces quatre attributs sont dclars dans le schma XML http://www.w3.org/2001/xml.xsd qui peut treimport [Section 5.14] par d'autres schmas.

    4.7. Quelques espaces de noms classiquesXML [Section 4.6]

    http://www.w3.org/XML/1998/namespace

    XInclude [Section 2.7]http://www.w3.org/2001/XInclude

    XLinkhttp://www.w3.org/1999/xlink

    MathMLhttp://www.w3.org/1998/Math/MathML

    XHTMLhttp://www.w3.org/1999/xhtml

    SVG [Chapitre 11]http://www.w3.org/2000/svg

    Schmas [Chapitre 5]http://www.w3.org/2001/XMLSchema

    Instances de schmashttp://www.w3.org/2001/XMLSchema-instance

  • Espaces de noms

    32

    XSLT [Chapitre 8]http://www.w3.org/1999/XSL/Transform

    XSL-FO [Chapitre 9]http://www.w3.org/1999/XSL/Format

    DocBook [Section 1.5]http://docbook.org/ns/docbook

    Schematron [Chapitre 7]http://purl.oclc.org/dsdl/schematron

  • 33

    Chapitre 5. Schmas XML5.1. IntroductionLes schmas XML permettent comme les DTD [Chapitre 3] de dfinir des modles de documents. Il est ensuitepossible de vrifier qu'un document donn respecte un schma. Les schmas ont t introduits pour combler leslacunes des DTD.

    5.1.1. Inconvnients des DTD Syntaxe non XML

    Manque de concision dans les descriptions des contenus en particulier dans les elements de contenu mixte.

    Modularit trs limite

    Pas de gestion des espaces de noms

    5.1.2. Apports des schmas XML Syntaxe XML

    Nombreux types de donnes prdfinis (nombres, dates, ) Possibilit de dfinir de nouveaux types

    Approche objet pour une hirarchie de types Modularit accrue

    Prise en compte des espaces de noms [Chapitre 4]

    5.2. Un premier exempleVoici un exemple de schma XML dfinissant le type de document de la blibiographie [bibliography.xml]. Ceschma est volontairement rudimentaire pour un premier exemple. Il n'est pas trs prcis sur les contenus decertains lments. Un exemple plus complet peut tre donn pour la bibliographie. Le cours est essentiellementbas sur des exemples.

    Schma XML pour bibliography.xml

  • Schmas XML

    34

    lment racine xsd:schema avec la dclaration de l'espace de noms des schmas associ au prfixe xsd.Documentation du schma.Dclaration de l'lment bibliography avec le type Bibliography.Dbut de la dfinition du type Bibliography.Dclaration de l'lment book dans le contenu du type Bibliography.Dclaration des attributs key et lang de l'lment book avec le type xsd:NMTOKEN.

    Ce schma dclare l'lment bibliography du type Bibliography qui est ensuite introduit par. Ce type est alors dfini comme une suite d'autres lments introduite par le constructeur. Les deux attributs key et lang de l'lment book sont introduits par les dclarations.

    Dans tout ce chapitre, la convention suivante est applique. Les noms des lments sont en minuscules alors queles noms des types commencent par une majuscule comme les classes du langage Java. Les noms de l'lment etde son type ne se diffrencient souvent que par la premire lettre comme bibliography et Bibliographydans l'exemple prcdent.

    5.3. Structure globale d'un schmaUn schma XML se compose essentiellement de dclarations d'lments et d'attributs et de dfinitions de types.Chaque lment est dclar avec un type qui peut tre, soit un des types prdfinis, soit un nouveau type dfinidans le schma. Le type spcifie quels sont les contenus valides de l'lments ainsi que ses attributs. Un nouveautype est obtenu soit par construction, c'est--dire une description explicite des contenus qu'il autorise, soit pardrivation, c'est--dire modification d'un autre type. Un schma peut aussi contenir des imports d'autres schmas,des dfinitions de groupes d'lments et d'attributs et des contraintes de cohrences.

    L'espace de noms des schmas XML est identifi par l'URL http://www.w3.org/2001/XMLSchema. Ilest gnralement associ, comme dans l'exemple prcdent au prfixe xsd ou xs. Tout le schma est inclusdans l'lment xsd:schema. La structure globale d'un schma est donc la suivante.

    ...

    Les lments, attributs et les types peuvent tre globaaux ou locaux. Ils sont globaux lorsque leur dclarationou leur dfinition est enfant direct de l'lment xsd:schema. Sinon, ils sont locaux. Ces objets et eux seulspeuvent tre rfrencs dans tout le schma pour tre utiliser. Dans le premier exemple de schma donn ci-dessus,l'lment bibliography est global alors que l'lment title est local. La dclaration de ce dernier intervientau sein de la dfinition du type Bibliography qui est global. Seuls les types globaux sont nomms. Dans leschma ci-dessus, le type de l'lment book est anonyme. Les lments et attributs sont toujours nomms, qu'ilssoient globaux ou locaux. Ils doivent, bien sr, avoir un nom pour apparatre dans un document.

    Les objets globaux et locaux se comportent diffrement vis vis de l'espace de noms cible du schma[Section 5.13]. Les objets globaux appartiennent toujours cet espace de noms. Les objets locaux, aucontraire, appartiennent ou n'appartiennent pas l'espace de noms cible suivant les valeurs des attributs form,elementFormDefault et attributeFormDefault.

  • Schmas XML

    35

    Les lments sont dclars par l'lment xsd:element et les attributs par l'lment xsd:attribute. Lestypes sont dfinis par les lments xsd:simpleType et xsd:complexType.

    5.3.1. Attributs de l'lment xsd:schemaL'lment racine schema peut avoir les attributs suivants.

    targetNamespaceLa valeur de cet attribut est l'URI qui identifie l'espace de noms cible [Section 5.13], c'est-a-dire l'espace denoms des lments et types dfinis par le schma. Si cet attribut est absent, les lements et types dfinis n'ontpas d'espace de noms.

    elementFormDefault et attributeFormDefaultCes deux attributs donnent la valeur par dfaut de l'attribut form [Section 5.13] pour respectivement leslments et les attributs. Les valeurs possibles sont qualified et unqualified. La valeur par dfautest unqualified.

    blockDefault et finalDefaultCes deux attributs donnent la valeur par dfaut des attributs block et final [Section 5.10.3]. Lesvaleurs possibles pour blockDefault sont #all ou une liste de valeurs parmi les valeurs extension,restriction et substitution. Les valeurs possibles pour finalDefault sont #all ou une listede valeurs parmi les valeurs extension, restriction, list et union.

    Dans l'exemple suivant, le schma dclare que l'espace de noms cible est http://www.liafa.jussieu.fr/~carton et que tous les lments doivent tre qualifis dans les documentsvalides. L'espace de noms par dfaut est dclar gal l'espace de noms cible afin de simplifier l'criture du schma.

    ...

    5.3.2. Rfrence explicite un schmaIl est possible dans un document de donner explicitement le schma devant servir le valider. On utilise undes attributs schemaLocation ou noNamespaceSchemaLocation dans l'lment racine du document valider. Ces deux attributs se trouvent dans l'espace de noms des instances de schmas identifi par l'URLhttp://www.w3.org/2001/XMLSchema-instance. L'attribut schemaLocation est utilis lors del'utilisation d'espaces de noms alors que l'attribut noNamespaceSchemaLocation est utlis lorsque ledocument n'utili