XQuery SélectionetFiltrage
Document XML d'exemple
Nous continuerons à utiliser ce document "books.xml" dans les exemples ci-dessous (le même fichier XML utilisé dans les chapitres précédents).
。
Sélection et filtrage des éléments
Comme vous l'avez vu dans les chapitres précédents, nous utilisons des expressions de chemin ou des expressions FLWOR pour sélectionner et filtrer des éléments.
Regardez l'expression FLWOR suivante :
where $x/price>30
order by $x/title
return $x/title
- for - (facultatif) lie une variable à chaque élément renvoyé par l'expression in
- let - (facultatif)
- where - (facultatif) définit une condition
- order by - (facultatif) définit l'ordre de tri des résultats
- return - spécifie ce qu'il faut renvoyer dans le résultat
instruction for
L'instruction for associe une variable à chaque élément renvoyé par l'expression in. L'instruction for peut produire des itérations. Plusieurs instructions for peuvent exister dans la même expression FLWOR.
Pour boucler un nombre spécifié de fois dans une instruction for, vous pouvez utiliser le mot-clé to :
return <test>{$x}</test>
Résultat :
<test>2</test>
<test>3</test>
<test>4</test>
<test>5</test>
Le mot-cléat peut être utilisé pour compter les itérations :
return <book>{$i}. {data($x)}</book>
Résultat :
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Learning XML</book>
Plusieurs expressions in sont également autorisées dans l'instruction for. Utilisez des virgules pour séparer chaque expression in :
return <test>x={$x} and y={$y}</test>
Résultat :
<test>x=10 and y=200</test>
<test>x=20 and y=100</test>
<test>x=20 and y=200</test>
instruction let
L'instruction let effectue une affectation de variable et peut éviter de répéter plusieurs fois la même expression. L'instruction let ne provoque pas d'itérations.
return <test>{$x}</test>
Résultat :
instruction where
L'instruction where est utilisée pour définir une ou plusieurs conditions (critères) pour les résultats.
instruction order by
L'instruction order by est utilisée pour spécifier l'ordre de tri des résultats. Ici, nous allons trier les résultats par category et title :
order by $x/@category, $x/title
return $x/title
Résultat :
instruction return :
L'instruction return spécifie ce qu'il faut retourner.
return $x/title
Résultat :