Bases de Données XML : interrogation d'une base BaseX avec XQuery

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

1
<listeValeur> 
2
{
3
 for $i in (1 to 4) 
4
 return <valeur> {$i} </valeur>
5
}
6
</listeValeur>
7
8
Donne : 
9
<listeValeur>
10
 <valeur> 1 </valeur>
11
 <valeur> 2 </valeur>
12
 <valeur> 3 </valeur>
13
 <valeur> 4 </valeur>
14
</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 "$"

1
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.

1
	let $x := (2,5,0,8)
2
	for $i in $x 
3
	 where $i mod 2 = 0 
4
	 order by $i
5
	 return <valeur> {$i} </valeur>
6
	
7
Donne : 
8
<valeur> 0 </valeur>
9
<valeur> 2 </valeur>
10
<valeur> 8 </valeur>

SyntaxeLes 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.

1
for $i at $pos in (0, 1, 2, 3, 4, 5)
2
where $pos mod 2 eq 0
3
return $i

SyntaxeDéclaration de fonctions

declare function local :nomFonction($var1 as element(), ....) as typeRetour {

( : Instructions :)

} ;

ComplémentQuelques 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)

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Vincent Keller, Alexandre Mertz, 2015-2016 (Contributions : Stéphane Crozat, les étudiants de l'UTC) Paternité - Partage des Conditions Initiales à l'IdentiqueRéalisé avec Scenari (nouvelle fenêtre)