Post on 02-Jun-2020
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
© 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.
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')
© 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]
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
© 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