XQuery selecteren en filteren
Het XML-voorbeelddocument
In de onderstaande voorbeelden gebruiken we het document "books.xml" (hetzelfde XML-bestand als in de vorige hoofdstukken).
Bekijk het bestand "books.xml" in uw browser .
Elementen selecteren en filteren
Zoals we in de vorige hoofdstukken hebben gezien, selecteren en filteren we elementen met een Path-expressie of met een FLWOR-expressie.
Bekijk de volgende FLWOR-expressie:
for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
- for - (optioneel) bindt een variabele aan elk item dat wordt geretourneerd door de in-expressie
- laat - (optioneel)
- waarbij - (optioneel) een criterium specificeert
- order by - (optioneel) specificeert de sorteervolgorde van het resultaat
- return - specificeert wat er moet worden geretourneerd in het resultaat
de voor clausule
De for-clausule bindt een variabele aan elk item dat wordt geretourneerd door de in-expressie. De for-clausule resulteert in iteratie. Er kunnen meerdere for-clausules in dezelfde FLWOR-expressie voorkomen.
Om een bepaald aantal keren in een for-clausule te herhalen, kunt u het to - sleutelwoord gebruiken:
for $x in (1 to 5)
return <test>{$x}</test>
Resultaat:
<test>1</test>
<test>2</test>
<test>3</test>
<test>4</test>
<test>5</test>
Het at -sleutelwoord kan worden gebruikt om de iteratie te tellen:
for $x at $i in doc("books.xml")/bookstore/book/title
return <book>{$i}. {data($x)}</book>
Resultaat:
<book>1. Everyday Italian</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Learning XML</book>
Het is ook toegestaan met meer dan één expressie in de for-clausule. Gebruik komma's om elk in expressie te scheiden:
for $x in (10,20), $y in (100,200)
return <test>x={$x} and y={$y}</test>
Resultaat:
<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>
De let-clausule
De let-clausule staat variabele toewijzingen toe en voorkomt dat dezelfde uitdrukking vele malen wordt herhaald. De let-clausule resulteert niet in iteratie.
let $x := (1 to 5)
return <test>{$x}</test>
Resultaat:
<test>1 2 3 4 5</test>
de waar-clausule
De where-clausule wordt gebruikt om een of meer criteria voor het resultaat op te geven:
where $x/price>30 and $x/price<100
De volgorde door Clausule:
De order by-clausule wordt gebruikt om de sorteervolgorde van het resultaat te specificeren. Hier willen we het resultaat sorteren op categorie en titel:
for $x in doc("books.xml")/bookstore/book
order by $x/@category, $x/title
return $x/title
Resultaat:
<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>
de terugkeer clausule
De retourclausule geeft aan wat moet worden geretourneerd.
for $x in doc("books.xml")/bookstore/book
return $x/title
Resultaat:
<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>