XQuery Selectie en Filteren

XML instance document

We will continue to use this "books.xml" document in the following examples (the same as the XML file used in the previous chapters).

Bekijk "books.xml" in uw browser.

Kiezen en filteren van elementen

Zoals in de vorige hoofdstukken is te zien, gebruiken we paduitdrukkingen of FLWOR-uitdrukkingen om elementen te kiezen en te filteren.

Bekijk de volgende FLWOR-uitdrukking:

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
for
(optioneel) Bind een variabele aan elk item dat door een in-uitdrukking wordt geretourneerd
let
(optioneel)
where
(optioneel) Stel een voorwaarde in
order by
(optioneel) Stel de volgorde van de resultaten in
return
Bepaalt wat in de resultaten wordt geretourneerd

for-statement

Een for-statement bindt een variabele aan elk item dat door een in-uitdrukking wordt geretourneerd. Een for-statement kan een iteratie genereren. Er kunnen meerdere for-staten in dezelfde FLWOR-uitdrukking voorkomen.

Als u een specifieke hoeveelheid keren door een for-statement wilt herhalen, kunt u:Sleutelwoord to :

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>

Sleutelwoord at Kan gebruikt worden om iteraties te berekenen:

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>

Dit geldt ook voor de for-statementMeerdere in-uitdrukkingen zijn toegestaanGebruik komma's om elke in-uitdrukking te scheiden:

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

Resultaat:

<test>x=10 en y=100</test>
<test>x=10 en y=200</test>
<test>x=20 en y=100</test>
<test>x=20 en y=200</test>

let statement

De let-statement kan variabelen toewijzen en kan herhaaldelijke expressies vermijden. De let-statement veroorzaakt geen iteratie.

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

Resultaat:

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

Where-statement

De where-statement wordt gebruikt om een of meerdere voorwaarden (criteria) voor de resultaten te stellen.

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

Order by-statement

De order by-statement wordt gebruikt om de volgorde van de resultaten te bepalen. Hier willen we de resultaten sorteren op category en title:

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>

Return-statement:

De return-statement definieert het te retourneren inhoud.

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>