XQuery pour interroger des données XML
Éléments du langage et mise en oeuvre
Cours et exercices corrigés
Jacques Le Maitre/Emmanuel Bruno
Ellipses
Avant-propos
iii
I XML
1
I.1 Syntaxe d'un document XML1
I.1.1 Caractères et noms2
I.1.2 Document5
I.1.3 Éléments5
I.1.4 Appel de caractère, appel d'entité caractère et section CDATA7
I.1.5 Appel d'entité8
I.2 Déclaration de type de document9
I.3 Espaces de noms11
I.4 XML Schema14
I.4.1 Types simples15
I.4.2 Types complexes20
I.4.3 Attributs XML Schema23
I.4.4 Organisation d'un schéma XML23
I.4.5 DTD vs schéma XML26
I.4.6 Autres fonctionnalités27
I.5 Exercice27
II XDM
31
II.1 Arbres32
II.2 Système de types35
II.3 Valeurs37
II.4 Propriétés des noeuds37
II.5 Accesseurs42
II.6 Exemple45
II.7 Exercice50
III XQuery : les expressions
51
III.1 Un premier aperçu d'une requête XQuery52
III.2 Environnement d'expérimentation54
III.3 Analyse et évaluation d'une requête55
III.4 Type de séquence58
III.5 Atomisation et valeur booléenne effective61
III.6 Expressions62
III.7 Littéraux et constructeurs de valeurs atomiques63
III.8 Appel de variable64
III.9 Appel de fonction64
III.10 Accès aux sources de données XML66
III.11 Constructeurs de séquence66
III.12 Mapping et filtrage d'une séquence67
III.13 Expressions de chemin69
III.13.1 Pas dans un arbre70
III.13.2 Expressions de chemin abrégées74
III.14 Expression de filtrage76
III.15 Combinaison de séquences de noeuds78
III.16 Expressions arithmétiques78
III.17 Comparaison80
III.17.1 Comparaisons de valeurs80
III.17.2 Comparaisons générales82
III.17.3 Comparaisons de noeuds83
III.18 Expressions logiques84
III.19 Expression conditionnelle84
III.20 Constructeurs de noeud85
III.20.1 Constructeur direct de noeud élément85
III.20.2 Constructeur calculé de noeud élément90
III.20.3 Espaces de noms visibles d'un noeud élément construit91
III.20.4 Constructeur calculé de noeud attribut93
III.20.5 Constructeur calculé de noeud texte94
III.20.6 Constructeur de noeud instruction de traitement94
III.20.7 Constructeur de noeud commentaire95
III.20.8 Constructeur calculé de noeud document96
III.20.9 Accesseurs des noeuds construits97
III.21 Expression FLWOR97
III.21.1 Relation d'ordre établie par la clause order by99
III.21.2 Sémantique d'une expression FLWOR103
III.22 Expression quantifiée105
III.23 Expressions sur les types de séquence106
III.23.1 Test d'appartenance à un type106
III.23.2 Expression typeswitch107
III.23.3 Conversion109
III.23.4 Test de convertibilité110
III.23.5 Expression treat as110
III.24 Validation110
III.25 Exercices112
IV XQuery : les modules
114
IV.1 Version de XQuery et encodage des caractères115
IV.2 Pré-déclarations116
IV.2.1 URI de base116
IV.2.2 Mode d'ordonnancement117
IV.2.3 Mode de traitement des espaces frontières117
IV.2.4 Mode de construction117
IV.2.5 Mode de copie des espaces de noms118
IV.2.6 Collation par défaut118
IV.2.7 Ordre par défaut d'une valeur vide118
IV.2.8 Espace de noms par défaut118
IV.2.9 Espace de noms120
IV.2.10 Importation de schéma121
IV.3 Déclarations de variables et de fonctions123
IV.3.1 Déclaration de variable123
IV.3.2 Déclaration de fonction124
IV.3.3 Exemples125
IV.4 Modules de bibliothèque127
IV.5 Exercice132
V De XQuery 1.0 à XQuery 3.0
139
V.1 Nouveaux opérateurs141
V.1.1 Concaténation de chaînes de caractères141
V.1.2 Mapping simple141
V.1.3 Choix en fonction d'une valeur141
V.1.4 Constructeur calculé de noeud espace de noms142
V.1.5 Récupération d'erreurs143
V.2 Extension de l'opérateur FLWOR143
V.2.1 Clauses for tumbling window et for sliding window144
V.2.2 Spécification allowing empty147
V.2.3 Clause count148
V.2.4 Clause group by149
V.3 Un nouveau type d'item : les fonctions150
V.4 Exercices153
VI Mise en oeuvre de XQuery
154
VI.1 Environnement de stockage et de développement154
VI.2 XQuery dans une page PHP155
VI.3 XQuery dans un programme Java160
VI.4 Optimisation de requêtes XQuery165
VI.5 XQuery et SQL167
A Documents XML utilisés dans le livre
171
B Fonctions de la bibliothèque
177
C Corrigés des exercices
184
D XQueryLab
195
Index
199