Sélection et filtrage en XQuery
- Page précédente Ajout de XQuery
- Page suivante Fonctions en XQuery
Document d'exemple XML
Nous allons continuer à utiliser le document "books.xml" dans les exemples ci-dessous (le même fichier XML que dans les chapitres précédents).
Sélectionner et filtrer les éléments
Comme vu dans les chapitres précédents, nous utilisons les expressions d'accès 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 où $x/price>30 trier par $x/title return $x/title
- for
- (optionnel) Lie une variable à chaque élément retourné par l'expression in
- let
- (optionnel)
- où
- (optionnel) Définir une condition
- trier par
- (optionnel) Définir l'ordre du résultat
- retourner
- Définir ce qui est retourné dans le résultat
instruction for
L'instruction for lie une variable à chaque élément retourné par l'expression in. L'instruction for peut générer une itération. Plusieurs instructions for peuvent exister dans une même expression FLWOR.
Pour itérer un certain nombre de fois dans une instruction for, vous pouvez utilisermot-clé à :
pour $x en (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é à Peut être utilisé pour calculer les itérations :
pour $x à $i in doc("books.xml")/bookstore/book/title retourner <book>{$i}. {data($x)}</book>
Résultat :
<book>1. Everyday Italian</book> <book>2. Harry Potter</book> <book>3. XQuery Kick Start</book> <book>4. Learning XML</book>
De même dans l'instruction forIl est permis de multiples expressions inVeuillez utiliser la virgule pour séparer chaque expression in :
pour $x en (10,20), $y en (100,200) retourner <test>x={$x} et y={$y}</test>
Résultat :
<test>x=10 et y=100</test> <test>x=10 et y=200</test> <test>x=20 et y=100</test> <test>x=20 et y=200</test>
instruction let
La directive let peut effectuer une allocation de variable et éviter de répéter plusieurs fois la même expression. La directive let ne cause pas d'itération.
let $x := (1 to 5) return <test>{$x}</test>
Résultat :
<test>1 2 3 4 5</test>
Directive where
La directive 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
Directive order by
La directive 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="en">Everyday Italian</title> <title lang="en">Learning XML</title> <title lang="en">XQuery Kick Start</title>
Directive return :
La directive return spécifie le contenu à renvoyer.
for $x in doc("books.xml")/bookstore/book return $x/title
Résultat :
<title lang="en">Everyday Italian</title> <title lang="en">Harry Potter</title> <title lang="en">XQuery Kick Start</title> <title lang="en">Learning XML</title>
- Page précédente Ajout de XQuery
- Page suivante Fonctions en XQuery