21
Thierry BOULANGER 3 ième édition XML par la pratique Bases indispensables Concepts et cas pratiques

Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

ISBN

: 97

8-2-

7460

-944

6-8

29,9

0 €

Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange de données structurées. Il détaille les concepts fondamentaux de XML et s’attache à les présenter au travers de cas pratiques faciles à implémenter.

Après la découverte de la syntaxe du langage et des normes de validité d’un document XML, vous serez en mesure de créer vos premiers documents XML en vous appuyant sur les contextes sui-vants :

- Concevoir des documents et des grammaires XML simples, en employant les DTD, les Schémas XML, RELAX NG.

- Lier des documents XML entre eux avec Xlink et XPointer.- Extraire les informations d’un document XML en réalisant des

requêtes XQuery.- Mettre en forme des documents XML grâce à la recommandation

XSL (eXtensible StyleSheet Language).- S’initier aux technologies XSLT et XSL-FO et créer un document

PDF à partir de données XML.- Intégrer XML à vos solutions Internet en exploitant le protocole

SOAP.- Comprendre les échanges entre Javascript, DOM et XML.- Utiliser RSS pour vos solutions de syndication de contenu, SMIL

dans vos ouvrages multimédia, XHTML et XFORM pour vos pages Web interactives.

- Comprendre la fédération d’identités avec SAML- Optimiser le traitement des données XML avec le format binaire EXI- Comprendre la conception d’interfaces homme machine en XML,

XAML et JFXML

Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr.

XML par la pratique Bases indispensables, concepts et cas pratiques

Pour plus d’informations :

XML

par

la p

ratiq

ue Après plusieurs années passées en tant

que développeur freelance, Thierry BOULANGER a rejoint le groupe Atos, en tant qu’Ingénieur d’étude. Grâce à son expérience du développement et notamment de sites web, l’actualisa-tion de ce livre fournit aux lecteurs des données essentielles à leur maî-trise du XML.

Thierry BOULANGER

Téléchargementwww.editions-eni.fr.fr

sur www.editions-eni.fr : b Exemples XML, XSLT, XSL-FO, SMIL, SVGb Exemple d’encodage/décodage EXIb Exemple de SSO avec Googleb Exemples d’interfaces XAML, HTML5,

Winform

3ième édition

Nouvelle édition

XMLpar la pratique

Bases indispensables Concepts et cas pratiques

Les chapitres du livre

Introduction • Partie 1 : Un langage hié-rarchique • Présentation du langage XML • De l’importance de la validation • Relax NG • Naviguer dans les docu-ments XML • Présentation de XQuery • SAML : Sécuriser les échanges avec XML • Optimisation du XML : l’EXI • Mise en application • Partie 2 : Les ap-plications du XML • Les transforma-tions • CSS et XLS : mise en applica-tion • Partie 3 : XML et le Web • Les services web • Le protocole SOAP et les parseurs XML • XForms • XML et Ja-vaScript • Le XML dans les interfaces homme-machine • WML, SMIL, RDF et RSS • Partie 4 : Les langages issus du XML • SVG (Scalable Vector Graphics) • Autres langages dérivés de XML

Page 2: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

1Table des matières

Introduction

Partie 1 : Un langage hiérarchique

Chapitre 1Présentation du langage XML

1. De SGML à XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2. Les bases de XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.1 Rappel sur HTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.2 Votre premier document XML . . . . . . . . . . . . . . . . . . . . . . . . . . 192.3 Les avantages de XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3. La syntaxe XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.1 La première ligne du document XML . . . . . . . . . . . . . . . . . . . . . 23

3.1.1 Déclaration XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.1.2 Codage des caractères. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.1.3 Paramètres de validation et de styles . . . . . . . . . . . . . . . . 24

3.2 Les éléments ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.2.1 Les éléments vides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.2.2 La sensibilité à la casse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.2.3 Les caractères non autorisés . . . . . . . . . . . . . . . . . . . . . . . . 253.2.4 Les caractères autorisés . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.2.5 La première lettre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.2.6 Les noms spéciaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.3 Les attributs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.4 La racine d’un document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.5 Les commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Les éléments à télécharger sont disponibles à l'adresse suivante :http://www.editions-eni.fr

Saisissez la référence ENI de l'ouvrage RI3PRAXML dans la zone de recherche et validez. Cliquez sur le titre du livre puis sur le bouton de téléchargement.

Page 3: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

2Bases indispensables, concepts et cas pratiques

XML par la pratique

3.6 Les espaces de noms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.6.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.6.2 Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.6.3 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Chapitre 2De l'importance de la validation

1. La validation par DTD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311.1 Le vocabulaire employé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

1.1.1 Les documents bien formés . . . . . . . . . . . . . . . . . . . . . . . . 311.1.2 Les documents valides . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341.1.3 Les parseurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

1.2 Construction d’une DTD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351.3 Lier une DTD aux données XML . . . . . . . . . . . . . . . . . . . . . . . . 36

1.3.1 Déclarations DTD au sein du document XML. . . . . . . . . 361.3.2 Déclarations DTD dans un fichier .dtd. . . . . . . . . . . . . . . 37

1.4 Définir des éléments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

2. Les différents types de déclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . 382.1 Les groupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

2.1.1 Les mots clés ANY et EMPTY . . . . . . . . . . . . . . . . . . . . . . 392.1.2 Les opérateurs ?, + et * . . . . . . . . . . . . . . . . . . . . . . . . . . . 392.1.3 L’opérateur de choix | . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402.1.4 Les données textuelles #PCDATA . . . . . . . . . . . . . . . . . . 40

2.2 Les attributs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412.2.1 Liste d’attributs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412.2.2 Les attributs IMPLIED, REQUIRED et FIXED. . . . . . . . . 42

2.3 Les types d’attributs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422.3.1 Les données textuelles (type CDATA et énumérations) . 432.3.2 Les attributs de type NOTATION . . . . . . . . . . . . . . . . . . 432.3.3 Les attributs de types ID ou IDREF . . . . . . . . . . . . . . . . . 432.3.4 Les attributs de type ENTITY . . . . . . . . . . . . . . . . . . . . . . 442.3.5 Les attributs de type NMTOKEN . . . . . . . . . . . . . . . . . . . 45

Page 4: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

3Table des matières

2.4 Les entités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452.4.1 Les entités internes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462.4.2 Les entités externes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2.5 Les sections conditionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

3. Introduction à la notion de schémas XML . . . . . . . . . . . . . . . . . . . . . 473.1 Quelles sont les différences entre DTD et XMLSchema ? . . . . . 48

3.1.1 L’apport du typage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483.1.2 L’apport de la syntaxe XML. . . . . . . . . . . . . . . . . . . . . . . . 49

3.2 Comment construire un schéma ? . . . . . . . . . . . . . . . . . . . . . . . 493.2.1 Construction "en poupées russes" . . . . . . . . . . . . . . . . . . . 503.2.2 Construction par clonage. . . . . . . . . . . . . . . . . . . . . . . . . . 53

3.3 Notions supplémentaires de construction . . . . . . . . . . . . . . . . . 543.3.1 Les groupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.3.2 Le compositeur choice . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.3.3 Le compositeur all. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

3.4 Comment utiliser les types ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.4.1 Les types prédéfinis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.4.2 Créer ses propres types. . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.4.3 Autres méthodes de dérivation . . . . . . . . . . . . . . . . . . . . . 59

3.5 Comment lier un schéma à un document XML ? . . . . . . . . . . . 60

Chapitre 3Relax NG

1. Principe de Relax NG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

2. Syntaxe XML et syntaxe compacte. . . . . . . . . . . . . . . . . . . . . . . . . . . 622.1 Syntaxe XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

2.1.1 Choice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642.1.2 Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652.1.3 Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662.1.4 Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682.1.5 Énumérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682.1.6 Listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

Page 5: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

4Bases indispensables, concepts et cas pratiques

XML par la pratique

2.1.7 Interleave. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692.2 Syntaxe compacte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

2.2.1 Choice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702.2.2 Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712.2.3 Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712.2.4 Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722.2.5 Énumérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722.2.6 Listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722.2.7 Interleave. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

3. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

Chapitre 4Naviguer dans les documents XML

1. Préambule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

2. XPath : un langage de désignation . . . . . . . . . . . . . . . . . . . . . . . . . . . 762.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762.2 Modèle de données XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782.3 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

3. XLL : langage de description de liens. . . . . . . . . . . . . . . . . . . . . . . . . . 803.1 Présentation et vocabulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803.2 XLink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813.3 XPointer : langage d’adressage de XML . . . . . . . . . . . . . . . . . . . 87

4. XBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924.2 Exemple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

5. XInclude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

5.1.1 L’attribut href . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945.1.2 L’attribut parse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945.1.3 L’attribut encoding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

5.2 Déclaration DTD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955.3 Exemple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

Page 6: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

5Table des matières

Chapitre 5Présentation de XQuery

1. Présentation de XQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 971.1 XQuery et le SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981.2 Un processeur XQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981.3 Une première requête . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

2. Le langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1002.1 Les commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1012.2 Position dans un arbre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

3. Les expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013.1 Expressions de comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

3.1.1 Comparaison générale . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013.1.2 Comparaison de valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . 1023.1.3 Comparaison de nœuds . . . . . . . . . . . . . . . . . . . . . . . . . . 103

3.2 Expressions conditionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1043.3 Expressions d’ensemble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

3.3.1 Union. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053.3.2 Intersect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053.3.3 Except . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

3.4 Les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1063.5 Les expressions FLWOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

3.5.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1063.5.2 For, in et return. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1063.5.3 Imbrication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1073.5.4 Let . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1073.5.5 Where . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1083.5.6 Order by . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

3.6 Les expressions quantifiées some et every . . . . . . . . . . . . . . . . 1093.7 Les fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

3.7.1 Les fonctions incluses dans XQuery . . . . . . . . . . . . . . . . 1103.7.2 Créer ses fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

3.8 Les jointures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

Page 7: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

6Bases indispensables, concepts et cas pratiques

XML par la pratique

4. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

Chapitre 6SAML : sécuriser les échanges avec XML

1. Présentation du langage SAML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1131.1 Le protocole. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1141.2 Les liaisons (binding) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1171.3 profiles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

2. Vers le SSO OASIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1192.1 Qu'est-ce que le SSO ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1192.2 Le SSO en détail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1202.3 Web Browser SSO Profile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

Chapitre 7Optimisation du XML : l’EXI

1. L'EXI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1251.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1251.2 Les inconvénients du XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1261.3 Optimiser le XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

2. Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282.1 Le mécanisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1312.2 Les bibliothèques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

3. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

Chapitre 8Mise en application

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

2. DTD : la librairie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1352.1 Définition de la grammaire de la liste d’ouvrages . . . . . . . . . . 1362.2 Exemple de fichier de données XML . . . . . . . . . . . . . . . . . . . . . 138

Page 8: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

7Table des matières

3. Tester si un document XML est valide en PHP . . . . . . . . . . . . . . . . 140

4. XMLSchema : la bibliothèque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1434.1 Schéma de description d’un livre . . . . . . . . . . . . . . . . . . . . . . . . 1444.2 Schéma de description d’un employé . . . . . . . . . . . . . . . . . . . . 1454.3 Exemple de fichier de données XML . . . . . . . . . . . . . . . . . . . . . 145

5. Relax NG : la bibliothèque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1465.1 Syntaxe d’un livre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1465.2 Syntaxe compacte d’un employé. . . . . . . . . . . . . . . . . . . . . . . . 147

6. Tester les chemins XPath à l’aide de XPath Visualizer . . . . . . . . . . 148

7. Créer des requêtes XQuery sur un document XML . . . . . . . . . . . . . 1517.1 Des requêtes simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1517.2 Les instructions FLWOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1527.3 Exercice : créer une fonction qui teste l’acidité . . . . . . . . . . . . 152

8. Le SSO en JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1558.1 Les bibliothèques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1558.2 Étude de cas avec Google . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1568.3 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1568.4 Test de l'implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1568.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

Partie 2 : Les applications du XML

Chapitre 9Les transformations

1. Qu’est-ce que XSL ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

2. Lier un document XML à une feuille de style XSL . . . . . . . . . . . . . . 165

3. Structure de base d’un document XSL . . . . . . . . . . . . . . . . . . . . . . . 165

4. XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1664.1 Qu’est-ce qu’une transformation XSLT ? . . . . . . . . . . . . . . . . . 1664.2 Les règles de gabarit (template rules) . . . . . . . . . . . . . . . . . . . . 1684.3 Application des règles de gabarit . . . . . . . . . . . . . . . . . . . . . . . . 172

Page 9: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

8Bases indispensables, concepts et cas pratiques

XML par la pratique

4.4 Les éléments de transformation . . . . . . . . . . . . . . . . . . . . . . . . 1724.5 Créer des éléments avec xsl:element . . . . . . . . . . . . . . . . . . . . . 1734.6 Créer des attributs avec xsl:attribute . . . . . . . . . . . . . . . . . . . . 1744.7 Créer des ensembles d’attributs nommés

avec xsl:attribute-set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1744.8 Créer du texte avec xsl:text . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1754.9 Créer des commentaires avec xsl:comment . . . . . . . . . . . . . . . 1754.10 Copier un nœud avec xsl:copy. . . . . . . . . . . . . . . . . . . . . . . . . . 1764.11 Générer du texte avec xsl:value-of. . . . . . . . . . . . . . . . . . . . . . . 1774.12 Calculer avec xsl:number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784.13 Importer des règles avec xsl:apply-imports. . . . . . . . . . . . . . . . 1794.14 Répéter un traitement avec xsl:for-each . . . . . . . . . . . . . . . . . . 1794.15 Traitement conditionnel par xsl:if . . . . . . . . . . . . . . . . . . . . . . 1814.16 Traitement conditionnel par xsl:choose . . . . . . . . . . . . . . . . . . 182

5. XSL-FO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1825.1 Initialisation et structure du document . . . . . . . . . . . . . . . . . . 1835.2 La disposition des pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1845.3 La zone de contenu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1865.4 L’ordre d’apparition des types de page . . . . . . . . . . . . . . . . . . . 1885.5 Insérer du contenu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1895.6 Générer le document PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

Chapitre 10CSS et XLS : mise en application

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

2. Application d’une feuille de style CSS à un document XML . . . . . 1942.1 Le document XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1942.2 La feuille de style CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

3. Application d’une feuille de style XSL . . . . . . . . . . . . . . . . . . . . . . . 1993.1 Le document XML de base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1993.2 La transformation XSL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

Page 10: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

9Table des matières

4. Transformation XSL d’un document XML . . . . . . . . . . . . . . . . . . . 2044.1 Le document XML de base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2044.2 La transformation XSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2064.3 Autres exemples de transformation . . . . . . . . . . . . . . . . . . . . . 207

4.3.1 Transformation d’un document XML en texte . . . . . . . 2074.3.2 Transformation d’un document en CSV . . . . . . . . . . . . 209

5. Création d’un document PDF avec XSL-FO . . . . . . . . . . . . . . . . . . . 2115.1 L’exemple complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2115.2 La génération du document PDF avec l’outil FOP . . . . . . . . . . 215

6. Une dernière astuce pour intégrer du XML au HTML. . . . . . . . . . . 2176.1 Inclusion simple de contenu XML dans du HTML . . . . . . . . . 2186.2 Inclusion par "data island" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

7. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

Partie 3 : XML et le Web

Chapitre 11Les services web

1. De SGML aux services web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2251.1 De SGML à XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2261.2 Les services web : l’avenir prévisible de XML . . . . . . . . . . . . . . 226

2. La notion de services web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2272.1 Qu’est-ce qu’un service web ? . . . . . . . . . . . . . . . . . . . . . . . . . . 2282.2 Le Web des services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

3. Les annuaires de services web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2303.1 WSDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2303.2 UDDI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

3.2.1 Annuaires UDDI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313.2.2 Les interfaces UDDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323.2.3 À propos d’UDDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

4. Introduction à SOAP, le protocole des services web . . . . . . . . . . . . 234

Page 11: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

10Bases indispensables, concepts et cas pratiques

XML par la pratique

Chapitre 12Le protocole SOAP et les parseurs XML

1. Principe de base de SOAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2351.1 Appel d’une méthode distante. . . . . . . . . . . . . . . . . . . . . . . . . . 2361.2 La requête SOAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371.3 La réponse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

2. Mise en application de SOAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2392.1 De quoi avez-vous besoin ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2392.2 Déroulement d’une transaction SOAP . . . . . . . . . . . . . . . . . . . 2402.3 Interopérabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241

3. L’interprétation des documents XML : les parseurs. . . . . . . . . . . . . 2423.1 Que fait le parseur XML ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2423.2 Introduction aux parseurs XML DOM . . . . . . . . . . . . . . . . . . . 2433.3 Introduction aux parseurs XML SAX . . . . . . . . . . . . . . . . . . . . 2433.4 DOM ou SAX ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443.5 XML Pull Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2453.6 Stax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

Chapitre 13XForms

1. XHTML : XML + HTML ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

2. Les principes fondamentaux de XHTML . . . . . . . . . . . . . . . . . . . . . 2482.1 Qu’est-ce qu’un document XHTML conforme ? . . . . . . . . . . . 2482.2 La structure d’un document XHTML . . . . . . . . . . . . . . . . . . . . 249

3. Les différences entre HTML 4.0 et XHTML 1.0. . . . . . . . . . . . . . . . 250

4. Les formulaires XHTML : les XForms. . . . . . . . . . . . . . . . . . . . . . . . 2524.1 Les limites imposées par les formulaires HTML. . . . . . . . . . . . 253

4.1.1 Les sept types d’éléments des formulaires HTML . . . . . 2534.1.2 Les deux méthodes de traitement

des formulaires HTML : GET et POST. . . . . . . . . . . . . . 2574.1.3 Les limites d’accessibilité des formulaires HTML . . . . . 258

Page 12: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

11Table des matières

4.2 Principes fondamentaux des XForms . . . . . . . . . . . . . . . . . . . . 2584.3 Les contrôles de formulaires XForms . . . . . . . . . . . . . . . . . . . . 2594.4 Déclarer des XForms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2594.5 Maîtriser les composants XForms . . . . . . . . . . . . . . . . . . . . . . . 261

4.5.1 Les zones de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2614.5.2 Choix multiples (boutons radio, cases à cocher,

zones de sélections multiples et menus) . . . . . . . . . . . . . 2624.5.3 Charger des fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2634.5.4 Les groupes d’options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2644.5.5 Les événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2644.5.6 Les valeurs initiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654.5.7 Les méthodes de soumission . . . . . . . . . . . . . . . . . . . . . . 265

4.6 Un exemple simple de XForms . . . . . . . . . . . . . . . . . . . . . . . . . 266

5. XHTML5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2685.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2685.2 Ce qui change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

6. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

Chapitre 14XML et JavaScript

1. Le JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2791.1 Présentation rapide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2791.2 Limites du JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2801.3 JavaScript et les navigateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

2. DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2812.1 DOM HTML et XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2812.2 DOM et JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2822.3 Un exemple d’utilisation de JavaScript avec DOM . . . . . . . . . 283

3. XMLHttpRequest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2853.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2853.2 AJAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2863.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

Page 13: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

12Bases indispensables, concepts et cas pratiques

XML par la pratique

4. jQuery et le XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2884.1 jQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288

4.1.1 Les avantages de jQuery. . . . . . . . . . . . . . . . . . . . . . . . . . 2894.1.2 Le fonctionnement de base . . . . . . . . . . . . . . . . . . . . . . . 2904.1.3 Interroger du XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2914.1.4 Traduire le XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2914.1.5 Générer du XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

5. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293

Chapitre 15Le XML dans les interfaces homme-machine

1. Le XAML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2951.1 Une interface pour le Web et le bureau. . . . . . . . . . . . . . . . . . . 2951.2 Les styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300

2. Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3022.1 Une interface pour le Web et le bureau. . . . . . . . . . . . . . . . . . . 3022.2 Les styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

3. Le JavaFX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306

4. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

Chapitre 16WML, SMIL, RDF et RSS

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

2. WML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3092.1 Présentation du langage WML. . . . . . . . . . . . . . . . . . . . . . . . . . 3102.2 La syntaxe du langage WML . . . . . . . . . . . . . . . . . . . . . . . . . . . 3102.3 Différences entre WML et HTML. . . . . . . . . . . . . . . . . . . . . . . 3132.4 Les besoins pour créer et publier des documents WML . . . . . . 3142.5 Comment rendre le WML plus dynamique ? . . . . . . . . . . . . . . 314

3. SMIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3153.1 Structure d’un document SMIL. . . . . . . . . . . . . . . . . . . . . . . . . 316

Page 14: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

13Table des matières

3.2 Les bases pour construire des animations interactives SMIL . 3173.2.1 Les éléments <seq> et <par> . . . . . . . . . . . . . . . . . . . . 3173.2.2 Les itérations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318

3.3 SMIL, pour aller plus loin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

4. RDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3194.1 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

4.1.1 Les métadonnées. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3204.1.2 Vers un Web sémantique... . . . . . . . . . . . . . . . . . . . . . . . 320

4.2 Principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3214.2.1 Ressources, propriétés et déclarations. . . . . . . . . . . . . . . 3214.2.2 Exemple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3214.2.3 RDF, pour aller plus loin . . . . . . . . . . . . . . . . . . . . . . . . . 322

5. RSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3235.1 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3235.2 Les différentes versions de RSS . . . . . . . . . . . . . . . . . . . . . . . . . 3245.3 Construire un flux RSS 0.91, 1.0 ou 2.0 . . . . . . . . . . . . . . . . . . 325

5.3.1 Structure d’un document RSS 0.91 . . . . . . . . . . . . . . . . . 3255.3.2 Structure d’un document RSS 1.0 . . . . . . . . . . . . . . . . . . 3285.3.3 Structure d’un document RSS 2.0 . . . . . . . . . . . . . . . . . . 332

5.4 Comment exploiter les flux RSS sur un site ? . . . . . . . . . . . . . 335

6. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335

Partie 4 : Les langages issus du XML

Chapitre 17SVG (Scalable Vector Graphics)

1. Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

2. Interpréter le SVG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

3. La syntaxe de SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3403.1 L’initialisation du document . . . . . . . . . . . . . . . . . . . . . . . . . . . 3403.2 Ajouter des éléments graphiques . . . . . . . . . . . . . . . . . . . . . . . . 342

Page 15: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

14Bases indispensables, concepts et cas pratiques

XML par la pratique

3.3 Appliquer des transformations : translations, rotations, échelle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346

3.4 Opérations sur les objets graphiques. . . . . . . . . . . . . . . . . . . . . 3503.5 Ajouter du texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3523.6 Appliquer des filtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3543.7 Cas pratique : Concevoir un histogramme en SVG . . . . . . . . . 3563.8 Décomposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3573.9 Exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

4. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

Chapitre 18Autres langages dérivés de XML

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361

2. Les sous-ensembles de XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

3. Des langages qui s’inspirent de XML . . . . . . . . . . . . . . . . . . . . . . . . 3633.1 YAML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3633.2 JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363

4. XML au service des échanges B to B . . . . . . . . . . . . . . . . . . . . . . . . . 3644.1 Les services web XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3654.2 Les langages "dédiés" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366

5. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

Page 16: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

97

Chapitre 5

Présentation de XQuery

Présentation de XQuery

1. Présentation de XQuery

XML Query (plus communément appelé XQuery) est une spécification duW3C.

De nos jours, de nombreux documents sont au format XML. Il était nécessairede créer un langage simple pour pouvoir effectuer des requêtes sur ces docu-ments.

Réaliser des requêtes permet d’extraire des informations particulières dans undocument en réalisant des tris, en isolant des résultats... Par exemple, il estpossible d'obtenir tous les prix supérieurs à 40 euros dans un document XMLqui représente un catalogue de vente de produits.

XPath 2.0 a pour objectif de désigner les objets d’un document XML, d'adres-ser les noeuds des arbres XML 1.0 et XML 1.1.

XPath est inclus dans XQuery.

En informatique, l'expression désigne une combinaison de valeurs, devariables d’opérateurs et de fonctions qui va être interprétée par un pro-gramme et va générer un résultat. XQuery est un langage d’expression.

XQuery utilise une syntaxe sensible à la casse. Les éléments, les attributs et lesvariables doivent avoir des noms valides XML.

Page 17: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

© E

dit

ions

EN

I -

All r

ights

rese

rved

98Bases indispensables, concepts et cas pratiques

XML par la pratique

1.1 XQuery et le SQL

XQuery peut être comparé à un autre langage, le SQL (Structured Query Lan-gage, ou langage de requête structurée). Le SQL provient des travaux dumathématicien Edgar Frank Codd, qui est l’inventeur de l’algèbre relation-nelle. Ce langage a été créé pour traiter les données alors que celles-ci deve-naient de plus en plus importantes dans les systèmes d’information. Le SQLest utilisé dans des SGBDR (système de gestion de base de données relation-nelles) comme par exemple Oracle, MySQL, Dbase…

Ainsi, le SQL est étroitement lié aux relations et donc aux opérations sur lesensembles comme l’union, l’intersection ou bien la différence.

Les similitudes entre SQL et XQuery

SQL et XQuery sont deux langages de requête qui se ressemblent. L’un etl’autre permettent de réaliser des requêtes dans des documents XML et dansdes SGBDR. Il existe des similitudes jusque dans la syntaxe, c’est ce que nousverrons plus loin dans les expressions FLWOR.

Les différences entre SQL et XQuery

XQuery parcourt des données hiérarchiques et SQL généralement des donnéesrelationnelles. Cela implique que les systèmes dans lesquels opèrent les deuxlangages sont complètement différents. SQL permet de supprimer ou demodifier des données. À ce jour, XQuery ne permet pas d’effacer des données,ni de les modifier directement dans la source.

1.2 Un processeur XQuery

Pour utiliser XQuery, il faut un éditeur de texte et un processeur XQuery. Unprocesseur est un programme qui réalise les requêtes et génère le résultat decelles-ci.

Il existe différents processeurs, fournis sous formes d’applications exécutablesou écrits dans un langage que vous pouvez utiliser dans vos programmes, sivous le connaissez. Par exemple, Java et .NET sont des langages de program-mation qui utilisent XQuery.

Page 18: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

99Présentation de XQueryChapitre 5

AltovaXML est un processeur XQuery. Il permet d’exécuter des requêtes quevous pouvez écrire dans un fichier à l’extension .xd. Il permet aussi de validerles documents XML et les DTD. C’est une application gratuite que vous pou-vez trouver à l'adresse : http://www.altova.com/altovaxml.html. Cette appli-cation peut s’utiliser en ligne de commande ou dans vos programmes. Pourl’utiliser en ligne de commande, vous pouvez copier AltovaXML.exe dans lerépertoire de votre choix.

Pour exécuter une requête il faut taper :

Altovaxml /xquery chemin_vers_le-fichier-xd

1.3 Une première requête

Le document XML suivant représente une série de plats chauds ou froids :

<?xml version="1.0"?>

<menu>

<plat>

<froid>salade</froid>

<froid>crudités</froid>

<chaud>frites</chaud>

<chaud>hamburger</chaud>

</plat>

</menu>

Nous souhaitons extraire de ce document uniquement les plats froids. Pourcela, nous créons un fichier d'extension .xd, que nous appelons requete1.xd.

Sur la première ligne, par l’intermédiaire de la fonction doc, nous indiquonsdans quel document XML nous travaillons.

Remarque

Les fonctions seront vues plus en détail ultérieurement.

Nous opérons comme ceci :

doc('Chemin_vers_mon_fichier_XML/Nom_de_mon_fichier_xml')

Page 19: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

© E

dit

ions

EN

I -

All r

ights

rese

rved

100Bases indispensables, concepts et cas pratiques

XML par la pratique

Nous écrivons notre requête à la suite en laissant un espace :

doc('Chemin_vers_mon_fichier_XML/Nom_de_mon_fichier_xml')

//menu/plat/froid

Remarque

Attention de ne pas ajouter un « / » à la fin, cela génère une erreur.

2. Le langage

Avec XQuery, il est possible d’extraire des résultats d’un document XMLstocké sur son ordinateur ou sur un serveur.

Les syntaxes sont les suivantes :

– En local :

doc('chemin_vers_document_xml')

– Sur un serveur :

doc('http://adressse_du_document_xml')

Remarque

Il ne faut pas confondre doc et document de xslt qui ne fonctionne pas avecQuery. document est une syntaxe réservée à XSLT permettant de charger unou plusieurs documents XML à partir d’URI.

XQuery permet d’utiliser les arguments des éléments dans un documentXML.

La syntaxe est la suivante :

doc('chemin_vers_document_xml') //noeud[@argument expression]

Exemple avec un identifiant âge :

doc('chemin_vers_document_xml') //enfant[@age=12]

Page 20: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

101Présentation de XQueryChapitre 5

2.1 Les commentaires

Comme XML, XQuery utilise des commentaires. Ces commentaires ne sontpas interprétés par le processeur et servent à faire comprendre à quoi est des-tinée la requête écrite.

Le commentaire débute par une parenthèse ouvrante, suivie de deux points etse termine par une parenthèse fermante précédée de deux points.

Exemple de commentaire :

(: ceci est un commentaire dans XQuery :)

2.2 Position dans un arbre

Pour obtenir des éléments particuliers dans un arbre, nous devons indiquer ledocument sur lequel nous travaillons puis ajouter un espace, deux slash etenfin le ou les éléments souhaités.

Exemple pour des éléments salaire :

doc('position.xml') //departement/informatique/salaire

3. Les expressions

3.1 Expressions de comparaison

3.1.1 Comparaison générale

Sur les éléments et les arguments d’un arbre, nous pouvons utiliser les opéra-teurs de comparaison :

Opérateur Signification

= Est égal

!= N’est pas égal

Page 21: Bases indispensables, concepts et cas pratiques XML · 29,90 € ISBN : 978-2-7460-9446-8 Ce livre sur XML est destiné à toute personne concernée par le stockage ou l’échange

© E

dit

ions

EN

I -

All r

ights

rese

rved

102Bases indispensables, concepts et cas pratiques

XML par la pratique

Pour obtenir les éléments où tous les enfants ont plus de douze ans au moins,il faut écrire par exemple :

document('chemin_vers_document_xml') //enfant[@age>=12]

Pour les chaînes de caractères, il faut entourer dans la comparaison l’expres-sion de droite par des guillemets.

Exemple avec un argument ville, ci-dessous nous obtenons les élémentsenfants pour qui l'attribut ville est Nancy :

doc('chemin_vers_document_xml') //enfant[@ville= "Nancy"]

Remarque

Attention, nous vous rappelons que XQuery est sensible à la casse.

3.1.2 Comparaison de valeurs

Les expressions de comparaison utilisent les mots clés eq, ne, lt, gt, ge, le :

– eq pour "equal", soit en français "égal à".

– ne pour "non equal", soit en français "n'est pas égal à".

– lt pour "less than", soit en français "inférieur à".

– gt pour "greater than", soit en français "supérieur à".

– le et ge pour "less or equal" et "greater or equal", soit en français "inférieurou égal" et "supérieur ou égal".

Ci-dessous, la requête retourne les enfants de l'arbre famille qui ont pour pré-nom Mickael.

doc('test.xml') //famille/enfant[./prenom eq "Mickael"]

> Est supérieur

>= Est supérieur ou égal

< Est inférieur

<= Est inférieur ou égal

Opérateur Signification