299

Xml

Embed Size (px)

Citation preview

  • XMLCours et exercices

    brillant titre 20/09/07 15:28 Page 2

  • CHEZ LE MME DITEUR

    Ouvrages sur le mme sujet

    Ph. Drix. XSLT fondamental. Avec 20 design patterns prts lemploi. N11082, 2002, 500 pages.

    A. Lonjon, J.-J. Thomasson. Modlisation XML. N11521, 2006, 498 pages (collection Architecte logiciel).

    J. Protzenko, B. Picaud. XUL. N11675, 2005, 320 pages.

    C. Porteneuve, prface de T. Nitot Bien dvelopper pour le Web 2.0 Bonnes pratiques Ajax. N12028, 2007, 580 pages.

    S. Crozat. Scenari La chane ditoriale libre. N12150, 2007, 200 pages.

    R. Fleury Java/XML. N11316, 2004, 228 pages.

    J.-J. Thomasson. Schmas XML. N11195, 2002, 500 pages.

    L. Maesano, C. Bernard, X. Legalles. Services Web en J2EE et .Net. N11067, 2003, 1088 pages.

    Dans la mme collection

    H. Bersini, I. Wellesz. Lorient objet. Cours et exercices en UML 2 avec PHP, Java, Python, C# et C++ N12084, 3e dition 2007, 520 pages (collection Noire).

    X Blanc, I. Mounier. UML 2 pour les dveloppeurs. N12029, 2006, 202 pages.

    A. Tasso. Le livre de Java premier langage. N11994, 4e dition 2006, 472 pages, avec CD-Rom.

    P. Roques. UML 2 par la pratique. N12014, 5e dition 2006, 385 pages.

    Autres ouvrages

    E. Slom. Sites web. Les bonnes pratiques. N12101, 2007, 14 pages.

    R. Rimel. Mmento MySQL. N12012, 2007, 14 pages.

    C. Pierre de Geyer et G. Ponon. Mmento PHP et SQL. N11785, 2006, 14 pages.

    M. Grey. Mmento Firefox et Thunderbird N11780, 2006, 14 pages.

    R. Goetter. CSS 2 : pratique du design web . N11976, 2e dition 2007, 324 pages.

    I. Jacobson, G. Booch, J.Rumbaugh. Le Processus unifi de dveloppement logiciel. N9142, 2000, 487 pages.

    P. Rigaux, A. Rochfeld. Trait de modlisation objet. N11035, 2002, 308 pages.

    B. Meyer. Conception et programmation orientes objet. N9111, 2000, 1223 pages.

  • Alexandre Brillant

    XMLCours et exercices

    brillant titre 20/09/07 15:28 Page 1

    Modlisation - Schma - Design patterns - XSLT - XPath - SOAP - XQuery - XSL-FO SVG

  • DITIONS EYROLLES61, bd Saint-Germain75240 Paris Cedex 05

    www.editions-eyrolles.com

    Le code de la proprit intellectuelle du 1er juillet 1992 interdit en effet expressment la photocopie usage collectif sans autorisation des ayants droit. Or, cette pratique sest gnralise notamment dans les tablissements denseignement, provoquant une baisse brutale des achats de livres, au point que la possibilit mme pour les auteurs de crer des uvres nouvelles et de les faire diter correctement est aujourdhui menace.En application de la loi du 11 mars 1957, il est interdit de reproduire intgralement ou partiellement le

    prsent ouvrage, sur quelque support que ce soit, sans autorisation de lditeur ou du Centre Franais dExploitation du Droit de Copie, 20, rue des Grands-Augustins, 75006 Paris. Groupe Eyrolles, 2007, ISBN : 978-2-212-12151-3

    Remerciements Jean-Marie Gouarn pour les prcisions sur les formats OpenOffice.org et OpenXML ainsi qu Stphane Crozat

    pour les informations concernant la chane ditoriale XML Scenari.

  • Table des matires

    CHAPITRE 1

    Le document XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Rle du document XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    Le document XML : orient document ou donnes ? . . . . . . . . . . . . . . . . 2La circulation XML : notion de bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2Structure et validation dun document XML . . . . . . . . . . . . . . . . . . . . . . . 2Transformation et adaptation dun document XML. . . . . . . . . . . . . . . . . . 2Circulation des documents XML et workflows . . . . . . . . . . . . . . . . . . . . . 3

    Les bases de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3XML et les bases relationnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Les bases natives XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    Ldition dun document XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4Cas des formats orients document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4Cas des formats orients donnes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    Outils pour manipuler les documents XML . . . . . . . . . . . . . . . . . . . . . 6Les parseurs XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6Transformation dun document XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Le format XSL-FO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Le format SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    CHAPITRE 2

    Structure des documents XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Structure dun document XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    Len-tte : le prologue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Les instructions de traitement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    XML Livre Page V Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercicesVI

    Les commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11La dclaration du type de document. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Les nuds lment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Les attributs dun lment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Choix entre lments et attributs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Les nuds textes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16Les entits du document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Quelques rgles de syntaxe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Quelques conventions de nommage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Quelques exemples XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    Les espaces de noms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Application des espaces de noms dans un document XML . . . . . . . . . . . . 20Utilisation des espaces de noms dans un document XML . . . . . . . . . . . . . 22Exemples de documents XML avec espace de noms . . . . . . . . . . . . . . . . . 25

    Correction des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    CHAPITRE 3

    Validation des documents XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Rle de la validation dans lentreprise . . . . . . . . . . . . . . . . . . . . . . . . . . 31La premire forme de validation par DTD . . . . . . . . . . . . . . . . . . . . . . 32

    La dfinition dun lment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33La dfinition dun attribut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34La dfinition dune entit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    La validation par un schma W3C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Les diffrentes formes de type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38Les dfinitions globales et locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Lassignation dun schma un document XML . . . . . . . . . . . . . . . . . . . . 39Les catgories de type simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40Lutilisation des types complexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47Les dfinitions dlments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Rutilisation des dfinitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Lutilisation des cls et rfrences de cls . . . . . . . . . . . . . . . . . . . . . . . . . 60Relations entre schmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    XML Livre Page VI Lundi, 17. septembre 2007 2:54 14

  • Table des matires VII

    Documentation dun schma W3C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66Conclusion sur les schmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

    La validation avec le format RelaxNG . . . . . . . . . . . . . . . . . . . . . . . . . . 66Correction des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    CHAPITRE 4

    Modlisation XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Modlisation avec les espaces de noms . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    Lattribut targetNamespace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76La dclaration dans un document XML. . . . . . . . . . . . . . . . . . . . . . . . . . . 77La gestion des lments locaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77Consquence de linclusion avec les espaces de noms . . . . . . . . . . . . . . . 79Utilisation de limportation pour les espaces de noms. . . . . . . . . . . . . . . . 80

    Parallle avec la conception objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82Quelques rappels de programmation objet . . . . . . . . . . . . . . . . . . . . . . . . . 82Lien entre type et classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83Lien entre llment et lobjet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84Lien entre la substitution dlment et le polymorphisme . . . . . . . . . . . . . 84Lien entre labstraction dlment et la classe abstraite. . . . . . . . . . . . . . . 86Lien entres les diffrentes formes de contrle et les limitations de drivation de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86Lien entre la surcharge dun type et la surcharge de mthode . . . . . . . . . . 87Cas des lments vides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

    Patrons (Design patterns) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89Design pattern : les poupes russes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89Design pattern : les tranches de salami . . . . . . . . . . . . . . . . . . . . . . . . . . . 90Design pattern : les stores vnitiens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90Design pattern : la forme mixte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

    Modlisation avec hritage ou avec groupe . . . . . . . . . . . . . . . . . . . . . . 92La modlisation avec hritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92La modlisation avec groupe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93La modlisation avec groupe et hritage . . . . . . . . . . . . . . . . . . . . . . . . . . 94

    Modlisation avec les espaces de noms . . . . . . . . . . . . . . . . . . . . . . . . . . 95Modlisation par le design camlon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

    XML Livre Page VII Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercicesVIII

    Les dfinitions neutres dans un schma . . . . . . . . . . . . . . . . . . . . . . . . . 97Utilisation de any . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

    Correction des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

    CHAPITRE 5

    Publication de documents XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105Rle de la publication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

    Publication des donnes textes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105Publication de graphismes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

    Le format pour le Web : XHTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106Les principales balises de XHTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

    Les feuilles de styles : le langage CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . 112Le langage de requte XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

    La version 1.0 de XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123La version 2.0 de XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

    Le format XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138Lalgorithme de transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139Le langage XSLT 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139Le langage XSLT 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

    Le format XSL-FO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157Structure dun document XSL-FO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158La mise en page dun document XSL-FO . . . . . . . . . . . . . . . . . . . . . . . . . 158Intgration dun contenu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

    Le format vectoriel SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Correction des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

    CHAPITRE 6

    Les changes XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183Son rle dans lentreprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183Les changes XML-RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

    Les principes de XML-RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185Raliser des changes XML-RPC par programmation. . . . . . . . . . . . . . . . 186

    XML Livre Page VIII Lundi, 17. septembre 2007 2:54 14

  • Table des matires IX

    Les changes avec SOAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187Principal niveau de structure : lenveloppe . . . . . . . . . . . . . . . . . . . . . . . . 187Premire partie de lenveloppe : len-tte. . . . . . . . . . . . . . . . . . . . . . . . . . 188Deuxime partie de lenveloppe : le corps . . . . . . . . . . . . . . . . . . . . . . . . . 188Les changes par les services web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189Le format de description des services web : WSDL . . . . . . . . . . . . . . . . . 190Les annuaires UDDI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192Programmation des services web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

    Les changes XML avec Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

    CHAPITRE 7

    Les bases de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199Son rle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199Quelques bases de donnes relationnelles . . . . . . . . . . . . . . . . . . . . . . . 200

    La base MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200La base Oracle avec XSQL Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

    Quelques bases de donnes natives XML . . . . . . . . . . . . . . . . . . . . . . . . 206La base Open Source Xindice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206La base Open Source Berkeley DB XML . . . . . . . . . . . . . . . . . . . . . . . . . 209

    Correction des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

    CHAPITRE 8

    Programmation XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223Son rle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223Les parseurs XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224La technologie SAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

    Les avantages et inconvnients de SAX. . . . . . . . . . . . . . . . . . . . . . . . . . . 224Programmer avec SAX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

    Programmer avec DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238API DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238La technologie JAXP et DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245Programmation DOM avec PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252Programmation DOM avec ASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254Programmation DOM avec JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

    XML Livre Page IX Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercicesX

    JDOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256Les classes de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256La comparaison avec DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257La gestion des espaces de noms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258Le parsing dun document XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259Le parcours dans larborescence JDOM. . . . . . . . . . . . . . . . . . . . . . . . . . . 260La conversion avec DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262

    Programmation avec JAXB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263Le compilateur JAXB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264Lopration unmarshalling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265Lopration marshalling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265La correspondance entre les types simples des schmas et les types Java 266

    Programmation avec XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266La technologie JAXP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267Raliser des transformations XSLT avec PHP . . . . . . . . . . . . . . . . . . . . . . 269Raliser des transformations XSLT avec ASP . . . . . . . . . . . . . . . . . . . . . . 269

    Correction des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281

    XML Livre Page X Lundi, 17. septembre 2007 2:54 14

  • Remerciements

    Je tiens remercier toutes les personnes qui ont particip cet ouvrage : les relecteurs et correcteurs des ditions Eyrolles (Sophie Hincelin, Hind Boughedaoui

    et Eric Bernauer), Jean-Marie Gouarn pour ses prcisions sur les formats Open XML et Open Document, Stphane Crozat, pour son apart sur la chane ditoriale libre Scenari, mon ditrice, Muriel Shan Sei Fan, pour ses propositions damlioration.

    XML Livre Page XI Lundi, 17. septembre 2007 2:54 14

  • XML Livre Page XII Lundi, 17. septembre 2007 2:54 14

  • Avant-propos

    XML : Une galaxie en formationXML se dmocratise, tel point quil en deviendrait presque encombrant dans la mesureo son utilisation nest pas toujours justifie. Les matres mots deviennent flexibilit etouverture. La hantise des formats ferms, ncessitant des oprations coteuses de traduc-tion lorsque les informations circulent en dehors de leur cadre classique dexploitation,ont donn XML un rle majeur dans lactivit informatique. Mais XML cache enralit une grande diversit dutilisations et de fonctionnement. Les langages connatresont varis et sembotent les uns dans les autres. XML, pourtant vou la simplicit deschanges, est de ce fait devenu, force denrichissements, un ensemble consquent quilnest pas forcment ais de matriser.

    Lobjectif de ce livreCet ouvrage a pour objectif premier de vous aider comprendre les technologies XML.Seuls les points de dtail sont omis car dj disponibles dans les documents de spcification.Louvrage tente malgr tout dviter le dfaut trop frquent de naborder XML quensurface. Le but de ce livre est donc de vous faire comprendre la mcanique XML, de vousdonner tous les instruments pour travailler efficacement en ne perdant pas de temps cerner un jargon parfois inutilement complexe. En un mot : aller lessentiel pour treproductif.

    qui sadresse cet ouvrage ?Cet ouvrage sadresse avant tout des personnes qui sont ou seront amenes manipulerdes documents XML, quils soient tudiants, enseignants, dveloppeurs, architectes ouchefs de projets. Cependant, si vous ntes pas familiaris avec la programmation, cetouvrage reste nanmoins abordable puisquil propose de nombreux exemples etrappels distills au fil du texte. Lorsquun point de vocabulaire fait rfrence deslments de programmation, une explication concise laccompagne pour en faciliter lacomprhension.

    XML Livre Page XIII Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercicesXIV

    Structure de louvrage Tout au long de cet ouvrage, notamment destin des tudiants et leurs enseignants,lexpos laisse place des exercices et leur solution, pour que le lecteur approfondisse lestechnologies qui lintressent.Le chapitre 1 fait le point sur lintgration de XML dans les entreprises. En quelquesparagraphes les enjeux et lintgration logique de XML sont dvelopps.Le chapitre 2 est incontournable pour comprendre un document XML puisquil expliquela structure de base ainsi que la notion despace de noms. Il est indispensable dtudier cechapitre avant daborder les suivants.Le chapitre 3 traite de la validation par lintermdiaire des DTD et des schmas W3C.Cette notion de validation est fondamentale puisquelle sert conforter la cohrence desstructures que lon peut mettre en place. On pourrait la comparer au plan dun architecte.Le chapitre 4 approfondit lutilisation des schmas W3C et propose des techniques demodlisation. Ce chapitre est peut-tre le plus complexe et ncessite une bonne compr-hension du chapitre prcdent.Le chapitre 5 concerne la publication de vos documents. Vous y apprendrez rendre vosdocuments XML visibles, par exemple, sous forme de pages HTML ou de documents PDF.Le chapitre 6 est davantage rserv des dveloppeurs puisquil sintresse particuli-rement la communication inter-applications avec XML, notamment par le biais desservices web. Il peut galement servir des administrateurs qui ont besoin de connatre lanature des changes applicatifs.Le chapitre 7 vous initie lintgration de XML aux bases de donnes. Il sagit aussibien des bases traditionnelles de type relationnelles que des bases dites pures XML. Danscette dernire catgorie, deux exemples de base vous seront proposs avec dune part desmanipulations en ligne de commande ralisables directement, et dautre part des manipu-lations par programmation destines aux dveloppeurs.Le chapitre 8 est quant lui destin aux seuls dveloppeurs puisquil traite de laprogrammation avec XML. Les modles dits classiques, savoir SAX et DOM, ont ttudis avec diffrents langages. Dautres formes de programmation plus efficaces ontgalement t analyses, comme les systmes par mapping offrant une programmationXML presque transparente.

    XML Livre Page XIV Lundi, 17. septembre 2007 2:54 14

  • 1Le document XML

    Lobjectif de ce premier chapitre est de vous guider dans lintgration du formalisme XML dans les entreprises. Ce dernier est n dun besoin universel : savoir faire cohabiter dans un mme document de linformation et de la signification. Dune manire informelle, un document XML peut tre peru comme un document texte porteur de ces deux types de donnes.

    Rle du document XMLLentreprise fournit des services dont la production ncessite gnralement plusieurstapes. chaque tape, des informations peuvent tre produites et/ou consommes. Lerle de linformatique est doffrir un cadre de stockage et de traitement de lensemble deces informations. Pour tre comprise, toute information doit tre formalise, cest--direreprsente en respectant certaines rgles. Le choix des mots, lordre des mots, etc., toutcela a du sens pour les acteurs de lentreprise, quils soient humains ou logiciels. Undocument XML sert alors de vecteur linformation : cest une manire universelle dereprsenter des donnes et leur sens dans un cadre prcis.

    Considrons lexemple dune entreprise, organise en diffrents services, qui demande un cabinet externe de raliser des bilans de son activit. Ces bilans peuvent influencer lefonctionnement de plusieurs services, chaque service ayant ses particularits. Le cabinetfournit alors un document XML contenant ces bilans. Ce document est ensuite trait parun logiciel qui tablit un rsultat personnalis pour chaque service et propose galementaux utilisateurs des fonctions de recherche et danalyse.

    XML Livre Page 1 Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercices2

    Le document XML : orient document ou donnes ?Lorsque les donnes sont labores par des tres humains, on dit que les fichiers XMLproduits sont orients document. Lorsque les donnes sont construites automatiquementpar des programmes, on dit que les fichiers XML sont orients donnes. Un fichier XMLorient document peut tre, par exemple, un livre, un article, un message Un fichierXML orient donne est, par exemple, un sous-ensemble dune base de donnes.Il faut noter que llaboration des fichiers XML ncessite des moyens de contrle etddition plus ou moins sophistiqus. On nutilisera pas pour fabriquer un ouvrage enXML un diteur trop rudimentaire (comme le bloc-notes sous lenvironnementWindows). Ldition des documents XML sera aborde dans ce chapitre la sectionLdition de document XML.

    La circulation XML : notion de busLes donnes informatiques circulent aussi bien en interne, dans lentreprise, que verslextrieur, auprs de services et de partenaires externes. Ltendue de cette circulationrend le format de donnes dautant plus important que chaque acteur peut disposer deplates-formes dexploitation diffrentes. Le formalisme XML neutralise les diffrencespar un consensus de stockage, la plupart des langages de programmation tant mme detraiter tout type de document XML. Les caractres Unicode constituent galement unmoyen de garantir la neutralit des donnes transportes.

    Structure et validation dun document XMLOn associe un document XML un schma, qui peut tre vu comme le schma dunebase de donnes relationnelle. La validation dun document XML garantit que la struc-ture de donnes utilise respecte ce schma. On peut faire lanalogie avec le respect desrgles dorthographe et de grammaire dune langue. Les documents XML qui circulentdoivent ainsi tre en accord avec ce schma pour tre accepts par la plate-forme. Dans lecas contraire ils sont rejets et doivent tre refaits.Lorsque les flux dchanges sont denses, la validation peut prsenter pour inconvnient deconsommer des ressources. Il est difficile de raisonner pour tous les cas, mais la validationpeut tre considre comme incontournable certaines tapes de prparation du cadredexploitation. Lorsque les flux sont considrs comme stables, il est alors possible de prati-quer une forme dassouplissement des rgles dans loptique damliorer les performances.

    Transformation et adaptation dun document XMLUn document XML peut tre transform ; il nest pas fig par un metteur mais peutsuivre, par analogie avec les ateliers de production, diffrentes tapes de modification.Le format XSLT (eXtensible Stylesheet Language Transformation) est un moyen pouradapter un document XML un autre format XML. Ces processus de transformation sontcependant coteux et doivent rpondre un besoin. Conduire des transformations en

    XML Livre Page 2 Lundi, 17. septembre 2007 2:54 14

  • Le document XMLCHAPITRE 1 3

    cascade peut tre davantage pnalisant que de modifier les logiciels qui gnrent lesdocuments XML, tout dpend de la ractivit souhaite. Avec XSLT, on peut parfaite-ment imaginer excuter la nuit des programmes batch qui ralisent ces gnrations dedocuments, lune des gnrations possibles tant dans un langage de prsentation commeXHTML ou bien XSL-FO (avec indirectement PDF, RTF).Par exemple, une socit dispose dun ensemble de produits. Ces produits sont prsents la fois sur leur site Internet, dans un catalogue, et dans un logiciel interne pour les salarisLe formalisme XML peut tisser un lien entre ces diffrents mdias, les donnes tant aucur de lactivit, la prsentation ntant plus quun processus de transformation.

    Circulation des documents XML et workflowsLes flux de donnes (workflows) existants vont tre petit petit remplacs par desworkflows XML. Les fichiers XML vont circuler, senrichir au fur et mesure de cesdplacements, tre contrls, puis tre prsents aux diffrents acteurs de lactivit(commerciaux, clients).Prenons lexemple dun parc de machines quipes dautomates donc on souhaiteraitcontrler lactivit. Comme il nest pas possible de passer derrire chaque machine pourvrifier les oprations effectues, un programme de type agent recueille les informationset les envoie au format XML une borne de supervision.

    Les bases de donnesLes bases de donnes tant incontournables dans les systmes informatiques actuels,nous allons, dans les paragraphes suivants, donner quelques points de repre quant leurs relations avec XML.

    XML et les bases relationnellesPuisquil structure des donnes selon un schma fix, le formalisme XML peut-ilremplacer les bases de donnes relationnelles telles que nous les connaissons ? Larponse est clairement non et cest mme le danger dune mauvaise utilisation du forma-lisme XML. Un document XML est un fichier texte ; il nest optimis ni en espace nipour les manipulations que lon peut oprer sur ce type de fichiers. Un document XMLpourrait tre davantage peru comme une partie dun systme dinformation, car il rsoutun problme de circulation de linformation un moment donn. Il ny a pas de raisonque les bases de donnes relationnelles ne soient pas gres lavenir commeaujourdhui. Tout au plus, nous pourrons voir lapparition de solutions complmentai-res. Par exemple, le typage des champs dune table devrait offrir un typage XML limage du blob. La recherche par SQL sera peut-tre tendue pour ces types via lasolution XQuery ; le standard SQL ISO travaille sur SQL/XML (http://www.sqlx.org/).Quelques solutions existent dj a et l avec SQL Server ou Oracle, par exemple, mais cessolutions noffrent pas encore de fonctionnement vraiment homognes.

    XML Livre Page 3 Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercices4

    Les bases natives XMLLautre aspect des relations entre les bases de donnes et le formalisme XML est lutili-sation de base de donnes native XML . Cest une solution sduisante pour agglom-rer des documents et pouvoir les manipuler plus facilement. Cela peut compenser unecertaine faiblesse retrouver dans les tables des bases de donnes relationnelles lacorrespondance hirarchique des documents XML. Et puis, les documents XML tant djstructurs, lide de dstructurer ces documents en vue dune insertion dans une basesemble quelque peu inefficace.On considre quil existe deux formes de bases de donnes natives : celles gardant letexte du document XML tel quel et celles effectuant une conversion sous une forme objet(comme DOM, qui est une standardisation objet dun document XML). Il est certainque la deuxime forme peut sappuyer sur des bases objets voire relationnelles (tablespour les lments DOM : lments, textes, commentaires). Vous trouverez ladressehttp://www.rpbourret.com/xml/XMLDatabaseProds.htm quelques bases de donnes natives, avecdeux formes dimplmentation, Open Source ou propritaire. Parmi les bases disponi-bles, citons Tamino (http://www.softwareag.com/Corporate/products/tamino/default.asp) en propri-taire, ou bien XIndice (http://xml.apache.org/xindice/) en Open Source. Je nai pas de recom-mandation particulire donner. Chaque base a ses avantages et inconvnients, en termesdAPI daccs, de langage de requtes, de performance dans les traitements, lobjectiftant den mesurer lefficacit sur un chantillon reprsentatif.

    Ldition dun document XMLLdition de document XML peut prendre diverses formes, notamment en fonction de safinalit.

    Cas des formats orients documentPour raliser un ouvrage, un article en XML il nest pas conseill dutiliser un diteur detexte quelconque. La ralisation de tels documents impose de se focaliser sur le contenuet non sur la syntaxe du format de document. Pour arriver allger la part de ce travail, ilexiste des outils qui proposent ldition en WYSIWYG (what you see is what you get) :lauteur na alors plus limpression de raliser un document XML mais simplement dutili-ser un diteur graphique (comme Word ou OpenOffice.org). Ces outils utilisent souventune feuille de styles CSS (Cascading StyleSheets) qui donne une reprsentation graphi-que telles ou telles parties du document XML. Cest pourquoi, certains logiciels proposentune dition XML via un navigateur de type Mozilla Firefox ou Internet Explorer.Parmi les diteurs Open Source WYSIWYG, citons Bitflux (http://bitfluxeditor.org/), Xopus(http://xopus.com/), qui utilise Internet Explorer et masque totalement la syntaxe XML,Serna (http://www.syntext.com/products/serna/index.htm), qui effectue un rendu la frappe parXSLT et un sous-ensemble de XSL-FO et XMLMind, qui sappuie sur des feuilles destyles (http://www.xmlmind.com/xmleditor/).

    XML Livre Page 4 Lundi, 17. septembre 2007 2:54 14

  • Le document XMLCHAPITRE 1 5

    Cas des formats orients donnesDans ce type de format, il ny a pas de reprsentation facilement utilisable pour ltrehumain, lidal tant de passer par une application qui masquera la localisation des donnes.

    dition avec un formulaireCertaines solutions visent analyser les schmas des fichiers XML pour gnrer unformulaire de saisie. Cela peut tre intressant lorsque ce formulaire est disponible viaun navigateur.

    Parmi les diteurs proposant cette solution, citons EditLive! (http://www.ephox.com/) et Micro-soft, avec InfoPath (http://office.microsoft.com/en-us/infopath/default.aspx).

    diteurs plus gnralistesLes diteurs gnralistes sont une autre forme dditeurs qui sadressent plutt destechniciens. Il existe de nombreux produits, qui offrent tous la validation et la transfor-mation. Ils se dmarquent par certaines facilits.

    Les technologies XML s'intgrent dans les offres bureautiques notamment avecOpenOffice et Office 2007. Ces suites fonctionnent avec des formats incompatibles,respectivement Open Document et Open XML. Le format Open Document (1.1 aumoment de l'criture), pour la suite OpenOffice, a t ralis par l'organisation OASIS(Organization for the Advancement of Structured Information Standards) et est norma-lis ISO (ISO/IEC 26300:2006). Le format Open XML de la suite Office 2007 a t ratifipar l'organisme international ECMA (ECMA 376), il est en cours de normalisation ISO.Ces deux formats sont crs base d'archive ZIP contenant un ensemble de fichiersXML (style, police, description, donnes, relation) et d'autres ressources binaireslies (images, audio..). Bien qu'ils soient incompatibles, il existe un traducteur imparfaitsappuyant sur des transformations XSLT que l'on peut trouver ladresse suivante :http://odf-converter.sourceforge.net. Le format Open Document s'appuie davantage sur desstandards (RDF, SVG, MathML) que sur Open XML. On peut ainsi reprocher ce der-nier de sinscrire dans la continuit par rapport aux formats Microsoft Office tout ensachant que cela reprsente aussi la ralit du march. Les diffrents outils de la suitede Microsoft sassocient avec des schmas W3C. Ces schmas servent agglomrer,modifier, importer et exporter des documents XML par exemple dans une feuille Excelou une page Word. Des transformations XSLT pendant les oprations de lecture oudcriture sont galement possibles ; elles donnent la possibilit de visualiser diffremmentle document sous diffrentes vues. noter que Microsoft propose galement le formatXPS (XML Paper Specification) sous la forme d'un complment tlcharger pour lasuite Office 2007. Ce dernier est un concurrent de PDF ou de Postscript mais en versionXML. Un lecteur XPS est galement disponible sur le site de Microsoft (http://www.micro-soft.com/whdc/xps/viewxps.mspx). Il faut noter la prsence avec Adobe du format XDP (XMLData Package) comme solution XML, probablement en remplacement progressif du formatPDF, de la mme faon que ce dernier a, peu peu, clips le format Postscript.

    XML Livre Page 5 Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercices6

    Le plus connu est lditeur XMLSpy (http://www.altova.com/) pour un prix minimum de399 euros par licence. Ce logiciel a gagn en rputation avec son diteur de schmasW3C WYSIWYG. Il dispose galement dune dition par grille. En dehors de cette faci-lit, linterface est quelque peu vieillotte et offre peu dassistants la frappe.

    Stylus Studio est un autre diteur proche de XMLSpy (http://www.stylusstudio.com/) dont leprix minimum est denviron 300 euros par licence. Cette application a une certaine rpu-tation pour son diteur XSLT semi-WYSIWYG. En dehors de cette facilit, lditionmanque souvent dassistants et linterface manque dergonomie.

    EditiX (http://www.editix.com/) est un diteur dont le prix minimum est de 70 euros parlicence, qui offre une vrification syntaxique la frappe. Une arborescence est toutmoment synchronise avec le texte, ce qui facilite grandement la navigation. Lditeurnoffre pas de mode WYSIWIG mais contient de nombreux assistants en fonctiondes documents dits. Cest cet diteur que nous avons utilis pour raliser lestravaux pratiques de cet ouvrage. Vous disposez dune version dvaluation de 30 jours(http://www.editix.com/download.html).XMLCooktop (http://www.xmlcooktop.com/) est lditeur gratuit le plus connu. Attention, carsil peut suffire pour des tches XML simples, ses limitations et labsence de mainte-nance (abandon du dveloppement annonc par lauteur) rendent son utilisation dlicatedans un contexte professionnel.

    XMLNotepad 2007 (http://msdn.microsoft.com/xml) est un diteur gratuit mis disposition surla plate-forme Windows. Il semble intressant pour des documents de grandes taillesmais offre trs peu daide la saisie.

    Outils pour manipuler les documents XMLLes parseurs XML

    Un parseur a pour rle danalyser le document XML et de servir de lien avec une appli-cation de traitement. Il existe des parseurs non validants qui noffrent quune vrificationsyntaxique et des parseurs validants qui offrent galement le support des DTD/schmaW3C. Sur ces deux catgories de parseurs se greffent principalement deux catgories deservices : un service vnementiel, qui ne vise pas reprsenter un document XMLdans son intgralit, de type SAX (Simple API for XML), par exemple, et un serviceobjet, qui permet de reprsenter un document XML sous une forme objet, de typeDOM (Document Object Model), par exemple. Dans le premier cas, la reprsentation dudocument nest que partielle, alors que dans le second cas, elle est complte. Ces deuxmthodes ont leurs avantages et inconvnients. Citons seulement la consommationmmoire et la facilit des traitements (requtage). Ces concepts seront tendus dans lechapitre ddi la programmation.

    Microsoft XML Core Services (MSXML : http://msdn.microsoft.com) est une API composedun parseur validant, compatible SAX et DOM, et dun moteur de transformation 1.0.

    XML Livre Page 6 Lundi, 17. septembre 2007 2:54 14

  • Le document XMLCHAPITRE 1 7

    Xerces est disponible pour Java, C++ et Perl. Cest un logiciel Open Source ralis par legroupe apache (http://xerces.apache.org/). Il sagit probablement du parseur le plus abouti dumarch, quelle que soit la plate-forme, en terme de respect du standard et de lAPI (SAX,DOM). Ses performances sont aussi remarquables.Un certain nombre de plates-formes, comme PHP et Java, disposent dun parseur enstandard.Expat est un parseur ralis en C (http://expat.sourceforge.net/), utilis par le projet Mozilla.Il dispose dextensions pour SAX et DOM. Un ensemble de tests (benchmark) le prsentecomme beaucoup plus rapide que les autres parseurs (rsultats disponibles ladressehttp://www.xml.com/pub/a/Benchmark/article.html?page=3).Piccolo est un parseur non validant ralis en Java (http://piccolo.sourceforge.net/). Les bench-marks disponibles, qui le prsentent comme performant (http://piccolo.sourceforge.net/bench.html), peuvent tre trompeurs car ils prennent en compte danciennes versions desautres parseurs ; par exemple, les dernires versions de Xerces donnent de meilleuresperformances.

    Transformation dun document XMLLa transformation XSLT dun document XML fonctionne en complment dun parseur.Il sagit dune API qui ralise le passage dun document XML vers un document texte(souvent au format XML lui aussi). La plupart des moteurs de transformation ne grentque la version XSLT 1.0.Le toolkit MSXML de Microsoft (http://msdn.microsoft.com/) supporte la version 1.0.Le groupe Apache gre le projet Xalan (http://xalan.apache.org/) pour Java et C++ avecsupport de la version 1.0.Saxon est un projet Open Source avec galement une licence commerciale. Il fonctionnepour Java et .NET et gre les versions 1.0 et 2.0.Sablotron est une implmentation en C++ de la version 1.0 (http://www.gingerall.org/sablo-tron.html). Il peut tre employ sous forme dextension en PHP, Perl, Pascal

    Le format XSL-FOXSL-FO (Extensible Stylesheet Language Formatting Objects) est un langage de prsen-tation pour diffrents formats (PDF, RTF...).Il y a peu doutils lheure actuelle capables de raliser les transformations XSL-FO.Une premire solution propritaire est Ecrion (http://www.ecrion.com/). Elle gre en sortie lesformats PDF et PostScript.Une autre solution propritaire est XEP de RenderX (http://www.renderx.com/). Elle gre ensortie les formats PDF et PostScript.

    XML Livre Page 7 Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercices8

    La seule solution Open Source est probablement FOP (Formatting Objects Processor) dugroupe Apache (http://xmlgraphics.apache.org/fop/). Elle gre en sortie les formats PDF, Post-Script et RTF.

    Le format SVGSVG (Scalable Vector Graphics) est un langage de description des dessins en 2D. Ilexiste quelques plug-ins pour les navigateurs, dont une intgration native avec Fire-fox 2.0, le plus connu tant SVG Viewer de adobe (http://www.adobe.com/svg/viewer/install/main.html). Attention cependant, lditeur annonant la fin du support pour 2008.On retiendra comme implmentation Open Source le projet Batik pour Java (http://xmlgra-phics.apache.org/batikl) du groupe Apache.

    XML Livre Page 8 Lundi, 17. septembre 2007 2:54 14

  • 2Structure des documents XML

    Ce chapitre vous apprend structurer un document XML. La comprhension de ses composants est indispensable pour aborder les grands principes de XML.

    Structure dun document XMLCommenons par prendre un exemple simple de document XML :

    Introduction XML et la composition de documents

    On peut dores et dj analyser quun document XML est un document texte lisible. Sanscomprendre ncessairement lintgralit de la syntaxe, on en dduit quil sagit de ladescription dun cours dont lintervenant nest autre que lauteur de cet ouvrage. Le plandu cours ressort galement du document.Nous allons maintenant dcortiquer la syntaxe et en comprendre les tenants et les abou-tissants.

    XML Livre Page 9 Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercices10

    Len-tte : le prologueIl sagit de la premire ligne dun document XML servant donner les caractristiquesglobales du document, cest--dire :

    La version XML, soit 1.0 ou 1.1, sachant que la trs grande majorit des documentssont en version 1.0 et que la version 1.1 est assez dcrie (recommandation du W3C enversion 2 du 4 fvrier 2004, qui note la rsolution dune incompatibilit avec les main-frames IBM).

    Le jeu de caractres employ (encoding). Pour fonctionner, le parseur va avoir besoinde distinguer le rle de chaque caractre, certains tant rservs la syntaxe et dautresreprsentant des donnes. Pour dfinir un jeu de caractres, XML sappuie sur desstandards ISO et Unicode (voir http://www.unicode.org/). Notre standard Europe de louest(ou iso-latin) est qualifi par ISO-8859-1. Lorsque lencodage nest pas prcis, cestle standard UTF-8 qui est employ (avantage dune compatibilit ANSI). Il existebeaucoup dautres standards, citons ISO-2022-JP, Shift_JIS, EUC-JP UTF-16 a laparticularit de ncessiter lencodage de chaque caractre avec 2 octets (un mmefichier sera donc deux fois plus lourd encod en UTF-16 quen UTF-8).

    Le champ standalone dsigne lindpendance du document, au sens o il nexisteaucun lment externe qui puisse altrer la forme finale du document XML fourni lapplication par le parseur (rfrences dentits, valeurs par dfaut). Ce champprend les valeurs yes ou no. Dans la pratique, au-del de laspect informatif, il na pasgrand intrt et vous pouvez lignorer.

    Si nous reprenons notre exemple prcdent, nous avons donc comme prologue :

    noter que ce prologue est encapsul par et quil nexiste pas despaces (deblancs) entre le dbut du document et cet lment. Autre remarque qui peut surprendre :le prologue nest pas obligatoire et, dans ce cas, le parseur utilise un comportement pardfaut (version 1.0 et encoding UTF-8).

    Les instructions de traitementLes instructions de traitement (processing instruction ou PI) nont pas de rle li auxdonnes ou la structuration de votre document. Elles servent donner lapplicationqui utilise le document XML des informations. Ces dernires sont totalement libres etdpendent avant tout du concepteur de lapplication de traitement. On les positionne nimporte quel endroit du document (aprs le prologue, bien entendu). Un cas typiqueest lutilisation avec les navigateurs Mozilla Firefox ou Internet Explorer pour effectuerla transformation dun document XML en document XHTML affichable aveclinstruction :

    XML Livre Page 10 Lundi, 17. septembre 2007 2:54 14

  • Structure des documents XMLCHAPITRE 2 11

    Lemploi de cette instruction et le rle du document affichage.xsl seront clairs dans lapartie consacre aux feuilles de styles.

    Enfin, ces instructions de traitement ont galement pour fonction de pallier des manquesdans la spcification XML, par exemple pour effectuer un lien vers un langage de validationnon standard (vrifiant donc la conformit du document par rapport une grammaire) detype Relax NG (http://www.relaxng.org/).

    Les commentairesIl y a peu de chose dire sur les commentaires. Ce sont les mmes quen HTML (ceci estd au lien de parent avec SGML). Ils se positionnent nimporte o aprs le prologue etpeuvent figurer sur plusieurs lignes.

    Notre exemple contient le commentaire suivant :

    Point important : les caractres -- sont interdits comme commentaires pour une raisonque lon comprendra aisment (ambigut danalyse pour le parseur).

    La dclaration du type de documentCette dclaration optionnelle sert attacher une grammaire de type DTD (DocumentType Definition) votre document XML. Elle est introduite avant la premire balise(racine) de votre document sous cette forme :

    racine est le premier lment (la premire balise). LURI peut tre absolue ou relative audocument. Il est gnralement prfrable soit dutiliser une URI relative, pour pouvoirdplacer le document XML et sa grammaire sans difficult, ou bien dexploiter une URLdisponible depuis nimporte quel endroit (sur Internet/Intranet, par exemple).Exemple :

    Dans cet exemple, la DTD cours.dtd est localise relativement notre document XML.

    Le mot-cl SYSTEM est important et indique quil sagit dune DTD qui vous est propre.Lalternative est le mot-cl PUBLIC.

    RemarqueAttention ne pas confondre ces instructions de traitement avec le prologue qui, sils sont de syntaxe simi-laire, nont pas le mme rle.

    XML Livre Page 11 Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercices12

    Exemple :

    Ici, lURI est remplace par un identifiant public compos de :

    -: indique quil sagit dun format non compatible ISO (sinon on utilise +). IETF : organisme grant le format.

    DTD : indique la nature du document.

    HTML 2.0 Strict : description du document.

    EN : un code langue (ISO 639).On peut galement prciser, aprs lidentifiant public, une URI. Cest utile si le parseurne peut pas traduire lidentifiant public en URI exploitable.

    La dclaration de type de document peut galement hberger un bloc dinstructionspropre aux DTD (on parle alors de DTD interne). Sans rentrer dans les dtails, puisquecela sera repris dans lanalyse des DTD dans un prochain chapitre, voici un exemple deDTD interne qui sert valider notre document XML :

    ]>

    Les nuds lmentLes lments grent la structuration des donnes dun document XML, un peu lamanire des rpertoires qui servent lorganisation des fichiers. On peut les qualifier demtadonns, au sens o ils ne font pas partie rellement des donnes mais servent endsigner la nature. la place du terme lment, on peut utiliser les termes balise, tag ouencore nud.

    Pour se familiariser rapidement, reprenons lexemple prcdent. lintrieur, nous trouvonsles lments cours, intervenant et plan.

    Pour dcrire ce que contiennent les lments, on parle de modle de contenu. On trouve :

    Rien : il ny pas de contenu, llment est vide.

    Du texte : nous dtaillerons par la suite cette notion. Un ou plusieurs lments : on peut les qualifier dlments fils, llment les conte-

    nant tant appel un lment parent ( ne pas confondre avec un lment anctre,

    XML Livre Page 12 Lundi, 17. septembre 2007 2:54 14

  • Structure des documents XMLCHAPITRE 2 13

    qui indique quil existe une relation de conteneur contenu et qui est donc pluslarge).

    Un mlange de textes et dlments : cest une forme plus rare qui peut rvler uneerreur de structuration. Elle reste cependant utile, lorsque lon souhaite dcorer untexte quelconque (cas du paragraphe en HTML avec des zones en gras, italique).

    Reprenons notre exemple XML et compltons-le un peu :

    Phileas Formation XML Un paragraphe Autre paragraphe

    cours: lment racine contenant trois lments fils : intervenant, separateur etchapitre;

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

    Si maintenant nous nous penchons sur la syntaxe, nous avons donc : : balise ouvrante. : balise fermante. : balise ouverte et ferme que lon nomme balise autoferme. Cest lqui-

    valent de . Elle dsigne donc un lment vide.

    Remarque Nous effectuons une mise en page minimale laide de tabulations (on parle dindentation) afin de faireressortir la structure du document, comme les relations parent /enfant.

    RemarqueCette dernire forme est propre XML et napparat pas dans HTML.

    XML Livre Page 13 Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercices14

    Exercice 1Cration dun livre en XMLOn souhaite crire un livre en utilisant le formalisme XML. Le livre est structur en sections(au moins 2), en chapitres (au moins 2) et en paragraphes (au moins 2). Le livre doit contenir la liste des auteurs (avec nom et prnom). Tous les lments doivent possder un titre, sauf le paragraphe qui contient du texte.Proposez une structuration XML de ce document (avec 2 auteurs, 2 sections, 2 chapitres parsection et 2 paragraphes par chapitre).Vrifiez, laide de lditeur, que votre document est bien form.Attention : ne pas utiliser dattributs ; lencodage utilis est ISO-8859-1Votre document sera nomm livre1.xml.

    Les attributs dun lmentUn attribut est un couple (cl, valeur) associ la dfinition dun lment. Il est localisdans la balise ouvrante de llment. Un lment peut donc avoir de 0 n attributsuniques. Lattribut est complmentaire de llment de par son rle au sens o il ajouteune information llment ou bien encore le complte dans sa dfinition.

    Exemple :

    nom et prenom sont des attributs de llment auteur alors que email est un attribut dellment contact.

    On spare les attributs par au moins un espace (blanc simple, tabulation, retour la ligne).Les valeurs dattributs peuvent figurer sur plusieurs lignes. On utilise soit les guillemets,soit les apostrophes pour encapsuler les valeurs.

    Voici un exemple de document XML avec des attributs :

    Formation XML

    Dtails du format

    XML Livre Page 14 Lundi, 17. septembre 2007 2:54 14

  • Structure des documents XMLCHAPITRE 2 15

    Choix entre lments et attributsLattribut peut sembler superflu. En effet, ce qui scrit avec des attributs peut galementltre en sappuyant uniquement sur des lments.

    Exemple :

    Cas avec attributs :

    Cas sans attribut :

    brillant

    alexandre

    Cependant, linverse nest pas vrai car un attribut ne peut pas tre rpt dans un lment(mais il peut ltre au travers dlments diffrents).Exemple :

    Cas avec lments :

    Sil fallait supprimer les lments personne au profit dattributs, il faudrait utiliser uneconvention de nommage complexe des attributs (avec une numrotation pour chaquepersonne) ce qui ferait perdre tout intrt XML qui sert justement structurer desdonnes.

    On peut dfinir cependant quelques rgles simples pour dterminer sil est prfrabledutiliser un attribut ou un lment. Lorsquune valeur est de taille modeste, a peu dechance dvoluer vers une structure plus complexe, et nest pas rpte, alors lattributpeut tout fait convenir. Dans tous les autres cas, llment reste incontournable. Si vousavez un doute entre un attribut et un lment, alors choisissez toujours llment qui estle plus ouvert et garantira le plus facilement une volution.

    XML Livre Page 15 Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercices16

    Exercice 2Utilisation des attributsConception de livre2.xml partir de livre1.xmlOn souhaite complter la structure du document XML de lexercice prcdent par les attributsnom et prenom pour les auteurs et titre pour le livre, les sections et les chapitres.Analysez la structure du nouveau document. Y a-t-il des simplifications possibles ?Vrifiez, laide de lditeur, que votre document est bien form.

    Les nuds textesDans un document XML, ce qui est appel donne est le texte qui est associ lattribut,cest--dire sa valeur, ou llment, cest--dire son contenu. Les donnes constituent lecur du document, et tout le reste, le formalisme, ne sert qu sparer et classer ces donnes.Celles-ci sont dites terminales dans larborescence XML, dans la mesure o il ne peuty avoir de structuration supplmentaire. Dans le vocabulaire propre DOM (DocumentObject Model), que nous aborderons dans un autre chapitre, la donne apparat comme unnud texte. Elle est bien entendu lie au prologue puisque lencodage sert dsigner le jeude caractres utilis dans votre document.Dans le premier exemple XML que nous avons donn, le texte XML est une donne lie lattribut titre de llment cours. Introduction est une donne lie llment plan.Comme certains caractres sont rservs la syntaxe XML, il faut tre vigilant lors delcriture des donnes.Exemple :

    if ( ac) ...

    Dans cet exemple, on voit bien que nest pas une balise mais fait partie desdonnes lies llment calcul. Ce que nous comprenons facilement nest pas sansambigut pour un parseur qui identifiera une balise de syntaxe incorrecte.Pour rsoudre ce problme, nous disposons dentits prdfinies. Lentit en elle-mmepeut tre perue comme un raccourci vers une autre valeur, ce qui a lavantage de faci-liter la maintenance (changement de valeur avec rpercussions) et de masquer lesconflits syntaxiques.Voici la liste des entits prdfinies : < quivalent de < (less than) ; > quivalent de > (greater than) ; & quivalent de & (ampersand) ;

    XML Livre Page 16 Lundi, 17. septembre 2007 2:54 14

  • Structure des documents XMLCHAPITRE 2 17

    " quivalent de " (quote) ; ' quivalent de ' (apostrophe).Lexemple prcdent peut donc tre correctement rcrit :

    If (ac)Bien entendu, les entits prdfinies ne servent qu lever une ambigut syntaxique pourle parseur.Ces entits peuvent tre utilises dans un lment, pour du texte, ou dans un attribut, poursa valeur.Les entits prdfinies prsentes en trop grand nombre dans un mme bloc peuventalourdir inutilement le document. Dans le cas du contenu textuel dun lment (etuniquement dans ce cas), nous disposons des sections CDATA (Character Data). Cettesection doit tre considre comme un bloc de texte dont les caractres seront pris telquel par le parseur jusqu la squence de fin ]]>.Exemple :C'est un document XML]]>Dans cet exemple, nest pas considr comme une balise de structuration, maiscomme du texte.Exercice 3Utilisation des entits prdfiniesOn se propose de crer un nouveau document livre2bis.xml reprenant lexercice prcdent(livre2.xml). Placez dans 2 paragraphes un bloc de texte contenant lextrait suivant :>Pour le premier paragraphe, employez les entits prdfinies.Pour le deuxime paragraphe, employez une section CDATA.Les entits du documentNous avons dj vu une premire forme dentit travers les entits prdfinies. Si vousconcevez une DTD (Document Type Definition), sachez que vous pourrez loisir crervotre propre entit et y faire rfrence dans vos documents. Nous aborderons la syntaxedes DTD dans un prochain chapitre, mais en attendant, voici un exemple dutilisation :XML Livre Page 17 Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercices18

    ]>

    Cours ralis par &auteur;

    Lentit auteur est lie un nom et un prnom.La valeur de lentit peut tre interne ou externe (place dans un autre fichier). Attention ne pas confondre les entits que lon trouvera dans un document HTML (comme) avec celles que vous aurez votre disposition. Dans les deux cas il sagit biendune DTD qui en dlimite lutilisation. Si votre DTD ne comporte pas dentits identi-ques celles possibles dans un document HTML alors vous ne pourrez pas les employer.Il existe galement une forme dentits, qui ne sert qu la DTD, appele entits para-mtriques. Nous les aborderons dans un prochain chapitre.Enfin, il reste lentit caractre. Cette entit va nous tre utile pour employer un caractreissu de la table ISO/IEC 10646 que lon retrouve galement avec HTML (proche deUTF-16). On spcifie la valeur du caractre soit en dcimal soit en hexadcimal.Par exemple, pour reprsenter un retour la ligne sous Linux/Unix (il faut en plus lecaractre 13 pour la plate-forme Windows), on utilise :

    Forme dcimale :

    Forme hexadcimale :

    Quelques rgles de syntaxeCes rgles de syntaxe sont respecter imprativement pour quun document XML soitbien form.

    Le nom dun lment ne peut commencer par un chiffre.

    Si le nom dun lment est compos dun seul caractre il doit tre dans la plage [a-zA-Z](cest--dire une lettre minuscule ou majuscule sans accent) ou _ ou :.

    Avec au moins 2 caractres, le nom dun lment peut contenir _, -, . et : plus les carac-tres alphanumriques (attention, le caractre : est rserv un usage avec les espacesde nom que nous aborderons par la suite).

    Tous les lments ouverts doivent tre ferms.

    Un lment parent est toujours ferm aprs la fermeture des lments fils. Voici uncontre-exemple o llment fils b est incorrectement ferm aprs la fermeture de sonlment parent a : .

    Pour connatre plus prcisment les caractres autoriss, vous pouvez vous reporter lagrammaire XML du W3C disponible ladresse http://www.w3.org/TR/2006/REC-xml-20060816/#sec-well-formed.

    XML Livre Page 18 Lundi, 17. septembre 2007 2:54 14

  • Structure des documents XMLCHAPITRE 2 19

    Quelques conventions de nommageVoici quelques conventions souvent employes dans les documents XML :

    Employer des minuscules pour les attributs et les lments.

    viter les accents dans les noms dattributs et dlments pour des raisons de compa-tibilit avec les outils du march qui proviennent souvent dun univers anglo-saxon.

    Prfrer les guillemets dlimitant les valeurs dattribut.

    Sparer les noms composs de plusieurs mots par les caractres -, _, . ou une majuscule.Essayer dtre homogne dans votre document en gardant la mme convention.

    Exemples :

    Quelques exemples XMLVoici quelques exemples simples de documents XML. Certaines formes de structurationdusage courant ont t normalises par diffrents organismes comme le W3C ou leconsortium OASIS (http://www.oasis-open.org). Vous pouvez titre dexercice essayer dedistinguer chaque composante de ces documents.

    Le format MathML

    MathML est une recommandation du W3C (http://www.w3.org/Math/) servant dcrire desexpressions mathmatiques.

    x2

    +

    4&InvisibleTimes;x

    +

    4

    Trs brivement, mo dsigne un oprateur, mrow une expression, mi et mn respectivementdes oprandes variable (par exemple x) et nombre.Ici nous avons dcrit lexpression : x^2+4x+4.

    XML Livre Page 19 Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercices20

    Le format VoiceXMLVoiceXML est un standard pour dcrire des choix (processus de questions/rponses) lis des rpondeurs vocaux (http://www.voicexml.org/).

    Faire un choix : Meteo Info Merci de faire un choix

    Trs brivement, menu reprsente une liste de choix, prompt est une question, choice unerponse possible et noinput la phrase produite si aucun choix nest ralis ; le menu estrappel avec enumerate.

    Les espaces de nomsLes espaces de noms sont un concept trs commun en informatique. Nous les retrouvonsdans de nombreux langages de programmation afin de prvenir dventuels conflits. Parexemple, dans le langage de programmation Java, les packages servent dlimiter laporte dune classe. En choisissant un package, le dveloppeur lve tout conflit potentielsur le nom, car la classe sera par la suite utilise directement ou indirectement via sonpackage et son nom.

    Application des espaces de noms dans un document XMLLorsque nous crons un document XML, la structure du document est dtermine partirdes donnes que nous allons avoir grer. Mais ce que nous ne pouvons pas prvoir, cesont les donnes dorigines diverses qui peuvent tre en contradiction avec nos choix destructure initiaux. Il nest pas non plus impossible que nous ayons recouper plusieursdocuments XML afin de produire un document de synthse. Toutes ces oprationspeuvent introduire autour de nos balises et attributs des conflits potentiels, car une baliseou un attribut peut avoir du sens dans un contexte mais pas dans un autre. Cest dautantplus vrai que, ne loublions pas, un document XML est trait par une application qui nedoit pas rencontrer dambigut. Comment garantir, quand nous choisissons une balise ouun attribut, que personne na eu la mme ide dans un contexte dapplication diffrent ?Par exemple, le choix de llment titre peut reprsenter le titre dun livre, mais pourquoipas le titre de noblesse dune personnePour dlimiter la porte dune balise, dun attribut ou dune valeur dattribut, nous dispo-sons despaces de noms (namespace). Par analogie, cette notion est reprise dans laplupart des langages de programmation rcents, comme les packages en java ou les

    XML Livre Page 20 Lundi, 17. septembre 2007 2:54 14

  • Structure des documents XMLCHAPITRE 2 21

    namespaces dans lenvironnement .net. La notion despace de noms peut tre peruecomme un groupe dappartenance ou une famille. Lutilisation des espaces de nomsgarantit une forme de traabilit de la balise et vite les ambiguts dusage.Les espaces de noms sont trs souvent employs dans les spcifications W3C car cesdocuments peuvent tre mlangs dautres et entraner des conflits. On en trouve, parexemple, dans les feuilles de styles (XSLT) et dans les schmas W3C.

    Dans la figure 2-1, nous avons 3 documents provenant de socits diffrentes. Ces troisdocuments sont intgrs dans un document utilis par la socit 4. Il est impratif que cesmlanges se fassent au mieux et sans conflit. Il peut tre galement intressant, pourlapplication de traitement, de savoir diffrencier ce qui vient de telle ou telle socit.Pour que les espaces de noms aient un sens, il faut pour chacun deux un identifiantunique. Dans le cas contraire, les espaces de noms pourraient eux-mmes tre en conflit.Cet identifiant unique peut tre simplement lURL, puisquil ne peut y avoir quunpropritaire pour une URL donne (ceci est li au nom de domaine prsent dans lURL et son obtention auprs dun organisme comme lAFNIC en France). Cest un peu simi-laire un bureau denregistrement.

    Vocabulaire : qualification des lments

    Un lment qui est connu dans un espace de noms est dit qualifi ; dans le cas contraire,il est dit non qualifi. Lorsquon ignore lespace de noms dun lment, on dit quonsintresse sa forme locale. Ce vocabulaire est connatre lorsquon travaille avec unparseur dans les techniques dites SAX ou DOM.

    Figure 2-1Croisement de documents

    Comment garantirqu'il n'y a pas de

    conflit ?

    Document 1 Document 2 Document 3

    Document 4

    Socit 1 Socit 2 Socit 3

    Besoin de "traabilit" des

    balises

    Application traitant

    Socit 4

    AttentionLURL ne signifie pas quil doit y avoir un document sur votre serveur HTTP. Ce nest quun identifiant etnimporte quelle chane de caractres pourrait en ralit tre employe.

    XML Livre Page 21 Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercices22

    Utilisation des espaces de noms dans un document XMLIl existe plusieurs mthodes pour intgrer des espaces de noms. Nous allons aborder lesrgles implicites et explicites sachant que cette dernire solution est davantage employe.

    Lespace de noms par dfautUn premier usage consiste utiliser simplement lespace de noms par dfaut. Ce dernierest prcis par un pseudo-attribut xmlns (retenir que ns est pour namespace). La valeurassocie sera une URL garantissant lunicit de lespace de noms. Lespace de noms pardfaut sapplique llment o se situe sa dclaration et tout son contenu.Exemple :

    ...

    Ici llment chapitre est dans lespace de noms http://www.masociete.com. Cest galementle cas de llment paragraphe, puisquil est dans llment chapitre.Nous pouvons changer lespace de noms par dfaut mme dans les lments enfants :dans ce cas, une rgle de priorit est applique. Attention, les espaces de noms ne sontpas imbriqus ; on ne peut appliquer quun seul espace de noms la fois.Exemple :

    ...

    Llment paragraphe nappartient pas lespace de noms http://www.masociete.com maisuniquement lespace de noms http://www.autresociete.com.

    Lespace de noms expliciteLespace de noms par dfaut prsente linconvnient dtre peu contrlable sur un documentde taille importante. En effet, tout ajout ou modification dun tel espace va se rpercuter surla totalit du contenu.Pour disposer de davantage de souplesse dans ces espaces et pouvoir galement lesappliquer aux attributs et valeurs dattributs, la syntaxe introduit la notion de prfixe.

    AttentionUn espace de noms par dfaut ne concerne que les lments. Les attributs et les textes ny appartiennentpas. Le texte dun lment nest jamais dans un espace de noms puisquil reprsente la donne.

    XML Livre Page 22 Lundi, 17. septembre 2007 2:54 14

  • Structure des documents XMLCHAPITRE 2 23

    Un prfixe est une sorte de raccourci vers lURL de lespace de noms. On peut fairelanalogie avec une forme de macro ou de constante. Autre analogie, dans le langageSQL : il arrive que des champs de mme nom se trouvent dans des tables diffrentes etquune opration de jointure entre ces tables oblige distinguer chaque champ en leprfixant par un alias li chaque table.On dclare un prfixe comme un pseudo-attribut commenant par xmlns:prefixe. Unefois dclar, il est employable uniquement dans llment le dclarant et dans soncontenu. Lemploi consiste ajouter en tte de llment, de lattribut ou dune valeurdattribut, le prfixe suivi de :.Exemple :

    Llment resultat est dans lespace de noms http://www.masociete.com grce au prfixe p.

    La notion de prfixe na de sens que par rapport lURL associe. Dans la pratique,lapplication ne voit pas ce prfixe mais uniquement lURL associe telle ou telle partiedu document. Cest comme si un lment tait un couple (nom de llment, espace denoms), de faon analogue un attribut et sa valeur.Exemple :

    Document 1 :

    Document 2 :

    Les documents 1 et 2 sont strictement identiques malgr un prfixe diffrent ; res tantdans tous les cas un lment appartenant lespace de noms http://www.masociete.com.On peut dclarer et utiliser plusieurs espaces de noms grce aux prfixes.Exemple :

    Le premier lment res est dans lespace de noms http://www.masociete.com alors quellment res lintrieur est dans lespace de noms http://www.autresociete.com.

    AttentionLorsquun lment est prfix, son contenu doit ltre aussi si lon souhaite que lespace de noms sappli-que galement.

    XML Livre Page 23 Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercices24

    La suppression dun espace de nomsAucun espace de noms nest utilis lorsquil ny a pas despace de noms par dfaut ni deprfixe.Exemple :

    Llment element est dans lespace de noms http://www.masociete.com alors quellment autreelement, qui nest pas prfix, na pas despace de noms.Pour supprimer laction dun espace de noms il suffit dutiliser la valeur vide "", ce quirevient ne pas avoir despace de noms.Exemple :

    .. Aucun d'espace de noms ... Espace de nom par dfaut

    Llment element est dans lespace de noms http://www.masociete.com alors quellment autreelement nest plus dans un espace de noms. Llment encoreunelement setrouve galement dans lespace de noms http://www.masociete.com, de par lespace denoms de son parent.

    Exercice 4Utilisation des espaces de noms par dfaut et avec prfixeIl sagit de crer un document livre3.xml sur la base de livre1.xml en respectant les pointssuivants : Mettez tous les lments dans lespace de noms http://www.masociete.com sans utiliser

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

    AttentionOn ne peut pas utiliser plusieurs prfixes en mme temps sur un lment, attribut ou valeur dattribut(exemple ne pas faire p:p2:res).

    XML Livre Page 24 Lundi, 17. septembre 2007 2:54 14

  • Structure des documents XMLCHAPITRE 2 25

    Application dun esspace de noms sur un attributLes espaces de nom peuvent sappliquer via un prfixe sur un attribut ou une valeurdattribut. Cet emploi peut servir, par exemple, introduire des directives sans changerde structure. Cela peut galement servir contourner la rgle qui veut que lon ne puissepas avoir plusieurs fois un attribut de mme nom sur une dclaration dlment.Exemple :

    Dans cet exemple, nous avons qualifi lattribut quantit ainsi que les valeurs dattribut50lots et A4.

    Il existe une autre utilisation dun espace sur une valeur dattribut : un espace de nomspermet de lever lambigut sur une valeur dattribut. Prenons, par exemple, la valeur 1 :est-ce une chane de caractres ? Un nombre binaire ? Hexadcimal ? Un dcimal ? Uneseconde ? Lespace de noms sur une valeur dattribut est couramment employ dans lesschmas W3C que nous aborderons dans un autre chapitre.

    Exercice 5Utilisation des espaces de noms sur des attributsNous supposons que le livre des exercices prcdents est maintenant disponible en plusieurslangues (au moins en franais et en anglais).Proposez une mthode pour grer tous les titres et paragraphes en plusieurs langues.Crez un document livre4.xml partir de livre1.xml

    Exemples de documents XML avec espace de nomsPour vous exercer, vous pourrez analyser, dans les exemples ci-dessous, lappartenancedes diffrents lments tel ou tel espace de noms.

    Le format XLinkXLink (XML Linking Language : http://www.w3.org/XML/Linking) sert dfinir des liens entrediffrents documents. Dans la pratique, XLink est peu employ car il est plus simpledintroduire ses propres attributs ou balises pour raliser des liens.

    XML Livre Page 25 Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercices26

    xlink est le prfixe retenu pour raliser un lien. Ce lien est effectu par lattribut href versun autre document ; le label est le texte affich pour le lien ; le role est la nature du lien(un tudiant) et title est le titre du lien.

    Le format XHTML

    XHTML (eXtensible HyperText Markup Language : http://www.w3.org/TR/xhtml1/) est laversion XML du standard HTML.

    Exemple :

    Ma page Mon texte

    Les lments XHTML sont donc dans lespace de noms http://www.w3.org/1999/xhtml. noter que la prsence de lattribut lang avec ou sans prfixe xml nest lie qu uneproblmatique de compatibilit avec les navigateurs HTML. Le prfixe xml existe pardfaut pour dsigner un attribut propre au standard.

    Autre exemple introduisant des lments MathML :

    Formule mathmatique 3 x

    Outre les lments XHTML, nous trouvons des lments MathML dont lespace de nomsest http://www.w3.org/1998/Math/MathML.

    XML Livre Page 26 Lundi, 17. septembre 2007 2:54 14

  • Structure des documents XMLCHAPITRE 2 27

    Correction des exercicesLensemble des exercices a t ralis avec le logiciel EditiX (http://www.editix.com/). Uneversion dvaluation de 30 jours est librement tlchargeable (http://www.editix.com/down-load.html).

    Exercice 1

    Mon livre BrillantAlexandre BriandAristide Section 1 Chapitre 1 Premier paragraphe Deuxime paragraphe Chapitre 2 Premier paragraphe Deuxime paragraphe

    Section 2 Chapitre 1 Premier paragraphe Deuxime paragraphe Chapitre 2

    XML Livre Page 27 Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercices28

    Premier paragraphe Deuxime paragraphe

    Nous avons fait le choix de crer des balises supplmentaires telles que auteurs, sections,chapitres, paragraphes pour viter de mlanger des ensembles distincts, comme le titre.Cela prsente lavantage de crer des blocs homognes (tels que les auteurs, les sections,les chapitres).

    Exercice 2

    Premier paragraphe Deuxime paragraphe Premier paragraphe Deuxime paragraphe Premier paragraphe Deuxime paragraphe Premier paragraphe Deuxime paragraphe

    Comme llment titre disparat au profit de lattribut, nous pouvons allger notre struc-ture en liminant les blocs superflus, comme chapitres ou paragraphes.

    XML Livre Page 28 Lundi, 17. septembre 2007 2:54 14

  • Structure des documents XMLCHAPITRE 2 29

    Exercice 3

    > >]]>

    Exercice 4

    Premier paragraphe Deuxime paragraphe Premier paragraphe Deuxime paragraphe Premier paragraphe Deuxime paragraphe

    Il y a plusieurs combinaisons possibles en fonction de lutilisation du prfixe ou delespace de noms par dfaut.

    Exercice 5

    XML Livre Page 29 Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercices30

    Premier paragraphe First paragraph Deuxime paragraphe Second paragraph Premier paragraphe First paragraph Deuxime paragraphe Second paragraph Premier paragraphe First paragraph Deuxime paragraphe Second paragraph

    Le choix dutiliser un prfixe pour dsigner une langue est discutable mais tout faitoprationnel. Notre document garde toujours la mme structure quelle que soit la langueet on peut dplacer une partie de louvrage sans avoir rpter lopration pour chaquetraduction.

    XML Livre Page 30 Lundi, 17. septembre 2007 2:54 14

  • 3Validation des documents XML

    Ce chapitre vous explique comment valider un document XML. La validation est un moyen pour vrifier que votre document est conforme une grammaire.

    Rle de la validation dans lentrepriseLes changes de donnes dans lentreprise sont divers. Ils peuvent tre lis aux infra-structures (rseaux, machines, automates, bases de donnes, logiciels), aux mtiers(change entre personnes, change entre services), aux intervenants externes (dloca-lisation, fournisseurs). Bref, toutes ces circulations de donnes participent au bonfonctionnement de lentreprise. On peut faire lanalogie avec la circulation sanguine quiapporte aux diffrents organes les nutriments et loxygne indispensables.Certaines donnes sont lies une opration manuelle (saisie) et dautres une oprationautomatique (par exemple une exportation partir dune base de donnes). Dans les deuxcas, on comprendra que des erreurs sont toujours possibles, soit par une erreur de saisie,soit par une erreur de programmation.La validation va renforcer la qualit des changes en contraignant lmetteur de donneset le consommateur de donnes vrifier la cohrence des donnes structures en XML.Par cohrence, il faut entendre la fois le vocabulaire (lments, attributs et espaces denoms) mais galement, chose aussi importante, lordre et les quantits. En fin de compte,la validation revient tablir un visa sur le document XML.

    XML Livre Page 31 Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercices32

    La validation est donc importante. Il faut cependant en rserver lusage des documentsqui prsentent une certaine complexit et qui sont de taille raisonnable (moins de100 Mo, par exemple). Lorsque la taille dun document est trop leve, la validation peutdevenir trs gourmande en ressources car, comme nous allons le voir, certaines rglesncessitent une vision globale du document et donc une prsence en mmoire. Lidaltant de vrifier les temps moyens, de contrler si la ractivit dans un processus mtierest suffisante. La validation, mme si elle nest pas toujours employe en production,peut toujours servir lors du dveloppement contrler que les donnes XML sont correc-tement structures. Dans un processus de dveloppement en spirale (prototypages multi-ples qui tendent vers une version finale), les fluctuations des demandes client et les volu-tions des programmes rendent indispensable la validation ne serait-ce que pour viterdventuels problmes de rgression.

    La plupart des outils, et notamment les parseurs XML, proposent des outils de validation.Les parseurs courants supportent une ou plusieurs formes de grammaires. Les DTD(Document Type Definition), tant la forme la plus ancienne, sont prsentes dans laplupart des outils. Viennent ensuite ce quon nomme les schmas W3C, une forme degrammaire plus moderne mais galement plus complexe. Enfin, il existe dautres alterna-tives dont lavenir est encore incertain, mme si certains dveloppeurs semblent djconquis par la simplicit de RelaxNG, par exemple.

    La premire forme de validation par DTDUne DTD (Document Type Definition) est une forme de grammaire relativementancienne car issue de lunivers SGML (Standard Generalized Markup Language). Elle alavantage dtre rapide crire, tout en prsentant linconvnient dtre pauvre en possi-bilits de contrle (typage de donnes, par exemple). Autre point ngatif, les espaces denoms sont difficilement grables car il faut intgrer, dans la grammaire, les prfixes, cequi est contraire lesprit des espaces de noms.

    Une DTD peut tre interne ou externe au document XML. Lusage voudra que lon privi-lgie la forme externe pour des raisons de maintenance et de facilit daccs. Dans cettedernire forme, le parseur XML trouvera une rfrence dans chaque document XML versla DTD externe par linstruction den-tte DOCTYPE (voir le chapitre 2).Par exemple, un document XML ayant une DTD externe cours.dtd, situe dans le mmerpertoire que notre document XML (accs relatif), se prsente sous la forme :

    XML Livre Page 32 Lundi, 17. septembre 2007 2:54 14

  • Validation des documents XMLCHAPITRE 3 33

    Commenons maintenant analyser la syntaxe dune DTD. Tout dabord, il est importantde comprendre que cette syntaxe, mme si elle est lie un usage XML, nest pas basede balise mais base dinstructions, selon la syntaxe (consquence de laparent avec SGML).

    La dfinition dun lmentLlment (ou balise) est exprim par linstruction ELEMENT suivie du nom de llmentque lon souhaite dcrire et de son contenu. Ce dernier nenglobe que les lments situsdirectement sous cet lment (les lments fils).Voici une synthse de cette syntaxe :

    DEF_CONTENU peut contenir : EMPTY: llment na pas de contenu ; il est donc vide. Il peut cependant avoir des attributs. ANY: llment peut contenir nimporte quel lment prsent dans la DTD. (#PCDATA): llment contient du texte. Le caractre # est l pour viter toute ambi-

    gut avec une balise et indique au parseur quil sagit dun mot-cl. PCDATA signifieParsable Character DATA.

    Un lment plac entre parenthses comme (nom_element). Le nom dun lmentdsigne une rfrence vers un lment dcrit dans une autre partie de la DTD

    Un ensemble dlments spars par des oprateurs, le tout plac entre parenthses.Loprateur de choix, reprsent par le caractre |, indique que lun ou lautre de deuxlments (ou deux ensembles dlments) doit tre prsent. Loprateur de suite (ousquence), reprsent par le caractre ,, indique que les deux lments (ou les deuxensembles dlments) doivent tre prsents. Des parenthses supplmentairespeuvent tre utilises pour lever les ambiguts.

    Quelques exemples :

    Cela nous autorise deux documents XML, soit :

    Brillant Alexandre

    RemarquesLes mots-cls EMPTY et ANY semploient sans parenthse. Les oprateurs de choix ou de squencesappellent galement des connecteurs (ils connectent les lments).

    XML Livre Page 33 Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercices34

    ou bien :

    Brillant

    Autre cas avec loprateur de squence.

    Ici, loprateur de squence limite les possibilits un seul document XML valide :

    Alexandre Brillant

    Les contenus (lment ou groupe dlments) peuvent tre quantifis par les oprateurs *,+ et ?. Ces oprateurs sont lis au concept de cardinalit. Lorsquil ny a pas doprateur,la quantification est de 1 (donc toujours prsent).Voici le dtail de ces oprateurs : * : 0 n fois ; + : 1 n fois ; ? : 0 ou 1 fois.Quelques exemples :

    Llment plan contient un lment introduction optionnel, suivi dau moins un lmentchapitre et se termine par un lment conclusion optionnel galement.

    Llment chapitre contient de 0 n lments auteur suivi dau moins un lment para-graphe.

    Llment livre contient au moins un lment, chaque lment, tant un groupe dlmentso llment auteur, est optionnel et llment chapitre est prsent en un seul exemplaire.

    La dfinition dun attributLes attributs sont prciss dans linstruction ATTLIST. Cette dernire, tant indpendantede linstruction ELEMENT, on prcise nouveau le nom de llment sur lequel sappliquele ou les attributs. On peut considrer quil existe cette forme syntaxique :

    nom TYPE OBLIGATION VALEUR_PAR_DEFAUT

    XML Livre Page 34 Lundi, 17. septembre 2007 2:54 14

  • Validation des documents XMLCHAPITRE 3 35

    Le TYPE peut tre principalement :

    CDATA : du texte (Character Data) ; ID : un identifiant unique (combinaison de chiffres et de lettres) ; IDREF : une rfrence vers un ID ;

    IDREFS : une liste de rfrences vers des ID (sparation par un blanc) ; NMTOKEN : un mot (donc pas de blanc) ; NMTOKENS: une liste de mots (sparation par un blanc) ; Une numration de valeurs : chaque valeur est spare par le caractre |.

    LOBLIGATION ne concerne pas les numrations qui sont suivies dune valeur par dfaut.Dans les autres cas, on lexprime ainsi :

    #REQUIRED : attribut obligatoire.

    #IMPLIED : attribut optionnel.

    #FIXED : attribut toujours prsent avec une valeur. Cela peut servir, par exemple, imposer la prsence dun espace de noms.

    La VALEUR_PAR_DEFAUT est prsente pour lnumration ou lorsque la valeur est type avec#IMPLIED ou #FIXED.

    Quelques exemples :

    Llment chapitre possde ici un attribut titre obligatoire et un attribut auteuroptionnel.

    Llment crayon possde un attribut couleur dont les valeurs font partie de lensemblerouge, vert, bleu.

    La dfinition dune entitLes entits sont dclares par linstruction ENTITY. Comme nous lavons abord dans lechapitre prcdent, lentit associe un nom une valeur. Ce nom est employ dans le docu-ment XML comme une forme dalias ou de raccourci vers la valeur suivant la syntaxe&nom;. La valeur dune entit peut tre interne ou externe.

    Dans la forme interne la syntaxe pour dclarer une entit est simplement la suivante :

    XML Livre Page 35 Lundi, 17. septembre 2007 2:54 14

  • XML Cours et exercices36

    Dans la forme externe, on se retrouve avec le mme principe quavec linstructionDOCTYPE en tte du document XML assurant le lien vers une DTD. Les mots-clsSYSTEM et PUBLIC servent donc raliser un lien vers une valeur prsente dans un fichier.Exemple :

    Lentit nom est ici lie au contenu du fichier unTexte.txt.Les entits ne sappliquent pas uniquement au document XML. Elles peuvent galementservir la ralisation de la DTD pour limiter les rptitions de blocs de dfinition (parexemple, un attribut prsent dans plusieurs lments). Cette forme dentit est appeleentit paramtrique et doit tre dclare suivant la syntaxe :

    Linstruction %nom; sert utiliser une entit paramtrique dans la DTD.

    Exemple :

    Dans cet exemple, nous avons cr une entit paramtrique type_defaut qui est associe un type (CDATA) pour un attribut. Cette valeur est ensuite employe pour dfinir le typagede lattribut titre de llment chapitre.Grce aux entits paramtriques, il est galement possible dactiver ou de dsactiver desblocs de dfinition. Ces blocs suivent la syntaxe suivante :

    Si Valeur vaut INCLUDE alors la partie de DTD est active. Si Valeur vaut IGNORE cette partieest ignore.Exemple :

    ]]>

    Dans cet exemple, on dfinit un attribut langue pour un lment chapitre uniquement silentit paramtrique anglais a la valeur INCLUDE.

    RemarqueAttention ne pas confondre les caractres & et %.

    XML Livre Page 36 Lundi, 17. septembre 2007 2:54 14

  • Validation des documents XMLCHAPITRE 3 37

    Exercice 1Utilisation dune DTDCrez la DTD carnet.dtd suivante :

    Crez un document XML qui soit valide par rapport cette DTD.

    Exercice 2Cration dune DTDCrez une DTD livre.dtd partir du document livre2.xml cr dans le chapitre prcdent.

    Exercice 3Utilisation des entits paramtriquesModifiez la DTD cre dans lexercice 2 pour faire en sorte que la dfinition de lattribut titresoit unique laide dune entit paramtrique.

    La validation par un schma W3CUn schma W3C (que lon nommera par la suite schma) est une grammaire dfinie dans unformalisme XML. Sauf pour la gestion des entits, on peut considrer les schmas commeremplaant les DTD. La version officielle est la 1.0 mais une version 1.1 est en prparationau moment de la rdaction de cet ouvrage. Quelques caractristiques des schmas : gestion des espaces de noms ; types de base riches et extensi