Les instructions XQuery
FLWOR
XQuery définit la syntaxe d'itération FLWOR :
For
Let
Where
Order by
Return
Clause For
Clause qui permet d'itérer sur une séquence donnée :
Séquence de noeuds
Séquence de valeurs atomiques
Syntaxe : for $variable in Sequence
<listeValeur>
{
for $i in (1 to 4)
return <valeur> {$i} </valeur>
}
</listeValeur>
Donne :
<listeValeur>
<valeur> 1 </valeur>
<valeur> 2 </valeur>
<valeur> 3 </valeur>
<valeur> 4 </valeur>
</listeValeur>
<listeValeur> { for $i in (1 to 4) return <valeur> {$i} </valeur> } </listeValeur> Donne : <listeValeur> <valeur> 1 </valeur> <valeur> 2 </valeur> <valeur> 3 </valeur> <valeur> 4 </valeur> </listeValeur>
Clause Let
Clause Where, Order By et Return
Where : Clause qui applique un prédicat de filtre
Order By : Tri les résultats de l'itération
Return : Clause qui permet de construire le résultat. Elle est obligatoire.
let $x := (2,5,0,8)
for $i in $x
where $i mod 2 = 0
order by $i
return <valeur> {$i} </valeur>
Donne :
<valeur> 0 </valeur>
<valeur> 2 </valeur>
<valeur> 8 </valeur>
let $x := (2,5,0,8) for $i in $x where $i mod 2 = 0 order by $i return <valeur> {$i} </valeur> Donne : <valeur> 0 </valeur> <valeur> 2 </valeur> <valeur> 8 </valeur>
Syntaxe : Les autres clauses XQuery
Avec XQuery 3.0 il existe également d'autres clauses pour FLWOR :
Group by : équivalent à la clause du même nom en SQL, permet l'agrégation des résultats.
At : s'utilise avec for retourne la position de l'élément.
La liste complète peut être trouvée ici.
Syntaxe : Déclaration de fonctions
declare function local :nomFonction($var1 as element(), ....) as typeRetour {
( : Instructions :)
} ;
Complément : Quelques instructions utiles
let $doc := doc("Chemin\absolu.xml") : permet d'obtenir le nœud document du fichier passé en paramètre
____________________________________
if (condition)
then (expression)
else (expression)
___________________________________
sum({XPath Expression})
count({XPath Expression})
matches($input, $pattern, $flag)