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>
Clause Let
Déclaration d'une variable et/ou affectation de sa valeur. Une variable est toujours précédée par le symbole "$"
let $var := "maVariable"
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>
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.
for $i at $pos in (0, 1, 2, 3, 4, 5)
where $pos mod 2 eq 0
return $i
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)