Latest web development tutorials

XQuery Sélection et filtrage

documents d'instance XML

Dans l'exemple suivant, nous allons continuer à utiliser ce "books.xml" (même fichier XML et la section ci-dessus est utilisé) document.

Voir "books.xml" fichier dans votre navigateur .


Sélectionnez et filtrer les éléments

Comme on le voit dans le chapitre précédent, nous utilisons l'expression FLWOR ou une expression de chemin pour sélectionner et éléments filtrants.

Considérons l'expression FLWOR suivante:

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
  • pour - (facultatif) pour chacun des éléments groupés renvoyés par l'expression dans une variable
  • laissez - (facultatif)
  • où - (en option) fixé une condition
  • commande par - (en option) définir l'ordre dans les résultats
  • retour - les dispositions dans les résultats renvoyés contenu

pour la déclaration

déclaration pour la variable liée à chaque article retourné par l'expression. pour la déclaration Iteration. Il peut y avoir plusieurs pour la même déclaration dans une expression de FLWOR.

Pour un certain nombre de fois dans une instruction for en boucle, vous pouvez utiliser des mots-clés à:

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

Résultats:

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

Mots - clés peuvent être utilisés pour calculer l'itération à:

for $x at $i in doc("books.xml")/bookstore/book/title
return <book>{$i}. {data($x)}</book>

Résultats:

<book>1. Everyday Italian</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Learning XML</book>

Dans la déclaration permet également de plus d'une expression. S'il vous plaît utiliser une virgule pour séparer chaque expression:

for $x in (10,20), $y in (100,200)
return <test>x={$x} and y={$y}</test>

Résultats:

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

déclaration laisse

laissez déclaration peut être répartition variable complète, et d'éviter répété la même expression. laissez déclaration ne provoque pas itération.

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

Résultats:

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

où les déclarations

où la déclaration est utilisée pour définir le résultat d'une ou plusieurs conditions (critères).

where $x/price>30 and $x/price<100

commande par déclaration

commande par déclaration pour trier les résultats d'un ordre prédéterminé. Ici, nous voulons trier les résultats en fonction de la catégorie et le titre:

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

Résultats:

<title lang="en">Harry Potter</title>
<title lang="en">Everyday Italian</title>
<title lang="en">Learning XML</title>
<title lang="en">XQuery Kick Start</title>

déclaration de retour:

déclaration de retour précise pour renvoyer le contenu.

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

Résultats:

<title lang="en">Everyday Italian</title>
<title lang="en">Harry Potter</title>
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>