Exemple
Soit le document XML suivant, situé à l'URL http://www.example.com/ et nommé exemple.xml :
Dupond Albert 23/09/1958 Dupont Alphonse 23/12/1975 Dupont Isabelle 12/03/1967 ...
La requête FLWR suivante :
for $b in document ("http://example.com/exemple.xml")//employe where $b/nom = "Dupont" return { $b/prenom, $b/date_naissance } va renvoyer le résultat suivant :
Alphonse 23/12/1975 Isabelle 12/03/1967
Modèle de données
- Toutes les valeurs manipulées par XQuery (ainsi que XPath2 et XSLT 2) sont des séquences (ou listes) d' items. Il n'y a pas de séquences imbriquées: une séquence de séquences est toujours "mise à plat".
- Les items se répartissent en deux grands groupes:
- les nœuds XML, qui eux-mêmes sont de six espèces différentes: document, élément, attribut, texte, commentaire, processing-instruction.
- Les types de base (empruntés aux Schémas XML) au nombre de 48, comprenant notamment les types numériques (entiers, décimaux, flottants), les chaines de caractères et dérivés, les dates, instants et durées.
- Les types de bases peuvent être étendus par l'importation de Schémas (fonctionnalité optionnelle).
Exemples:
- L'expression 1 to 5 retourne la séquence d'items de type entier: 1 2 3 4 5.
- L'expression for $i in 1 to 5 return $i * $i retourne la séquence d'items de type entier: 1 4 9 16 25.
- L'expression for $i in 1 to 3 return { $i } retourne la séquence de nœuds éléments: 1 2 3.
- Une séquence n'est pas obligatoirement d'un type homogène. Par exemple l'expression (1, 2), 2.5, (true(), "du texte") retourne la séquence d'items 1 2 2.5 true() "du texte" de types respectivement entier (2 fois), décimal, booléen, chaine de caractères.
Caractéristiques du langage
- XQuery est un langage fonctionnel (où toute construction retourne une valeur) donc sans effet de bord, c'est-à-dire ne modifiant pas directement les données sur lesquelles il travaille. XQuery Scripting est une exception à ce principe.
- Contrairement à la plupart des langages fonctionnels, XQuery ne possède pas de fonctions de second ordre (pouvant être argument d'autres fonctions). Ceci change dans XQuery 1.1.
- XQuery peut optionnellement être fortement typé (au sens des Schémas XML) à la compilation et à l'exécution.
- Ces aspects sont partagés avec XSLT 2, qui est un langage proche de XQuery dans ses fonctionnalités.
- La programmation en XQuery est en général d'un style plus "impératif" qu'en XSLT, c'est-à-dire qu'elle nécessite la connaissance a priori de la structure des données XML manipulées. Inversement XSLT spécifie de façon déclarative des traitements sur chaque type de nœuds XML, indépendamment les uns des autres. La programmation en XQuery est donc plus naturelle, mais un peu moins puissante et modulaire qu'en XSLT.
- L'extension XQuery Scripting offre un modèle de programmation plus classique.