Sélection et filtrage XQuery

Document d'exemple XML

Nous allons continuer à utiliser le document "books.xml" dans les exemples suivants (le même fichier XML que dans les chapitres précédents).

Voyez le fichier "books.xml" dans votre navigateur.

Sélectionner et filtrer les éléments

Comme vu dans les chapitres précédents, nous utilisons les expressions de chemin ou les expressions FLWOR pour sélectionner et filtrer les éléments.

Voyez l'expression FLWOR suivante :

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
for
(optionnel) Liez une variable à chaque élément retourné par l'expression in
let
(optionnel)
where
(optionnel) Définir une condition
order by
(optionnel) Définir l'ordre des résultats
return
définir le contenu retourné dans les résultats

instruction for

L'instruction for lie une variable à chaque élément retourné par une expression in. L'instruction for peut générer une itération. Plusieurs instructions for peuvent coexister dans une expression FLWOR.

Pour effectuer un nombre spécifique de boucles dans une instruction for, vous pouvez utilisermot-clé à

pour $x dans (1 à 5)
return <test>{$x}</test>

Résultat :

<test>1</test>
<test>2</test>
<test>3</test>
<test>4</test>
<test>5</test>

Mot-clé at Peut être utilisé pour calculer l'itération :

for $x at $i in doc("books.xml")/bookstore/book/title
return <book>{$i}. {data($x)}</book>

Résultat :

<book>1. Italien Quotidien</book>
<book>2. Harry Potter</book>
<book>3. Démarrer avec XQuery</book>
<book>4. Apprendre XML</book>

De même dans la déclaration forPermet plusieurs expressions inUtilisez une virgule pour séparer chaque expression in :

for $x in (10,20), $y in (100,200)
return <test>x={$x} and y={$y}</test>

Résultat :

<test>x=10 and y=100</test>
<test>x=10 and y=200</test>
<test>x=20 and y=100</test>
<test>x=20 and y=200</test>

Déclaration let

La déclaration let peut effectuer une allocation de variable et éviter les répétitions multiples d'une même expression. La déclaration let ne provoque pas d'itération.

let $x := (1 to 5)
return <test>{$x}</test>

Résultat :

<test>1 2 3 4 5</test>

Déclaration where

La déclaration where est utilisée pour définir une ou plusieurs conditions (critères) pour les résultats.

where $x/price>30 and $x/price<100

Déclaration order by

La déclaration order by est utilisée pour définir l'ordre de tri des résultats. Ici, nous devons trier les résultats en fonction de category et title :

for $x in doc("books.xml")/bookstore/book
order by $x/@category, $x/title
return $x/title

Résultat :

<title lang="en">Harry Potter</title>
<title lang="fr">Italien Quotidien</title>
<title lang="en">Learning XML</title>
<title lang="en">XQuery Kick Start</title>

Déclaration return :

La déclaration return spécifie le contenu à retourner.

for $x in doc("books.xml")/bookstore/book
return $x/title

Résultat :

<title lang="fr">Italien Quotidien</title>
<title lang="en">Harry Potter</title>
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>