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 :

for $x in doc("books.xml")/bookstore/book
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 :

for $x in (1 to 5)
return <test>{$x}</test>

Résultat :

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

Le mot-cléat peut être utilisé pour compter les itérations :

for $x at $i in doc("books.xml")/bookstore/book/title
return <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>

Plusieurs expressions in sont également autorisées dans l'instruction for. Utilisez des virgules 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>

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.

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

Résultat :

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

instruction where

L'instruction 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

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 :

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

Résultat :

Harry Potter
Everyday Italian
Learning XML
XQuery Kick Start

instruction return :

L'instruction return spécifie ce qu'il faut retourner.

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

Résultat :

Everyday Italian
Harry Potter
XQuery Kick Start
Learning XML
Autres extensions