XQuery seleksie en filter
Die XML-voorbeelddokument
Ons sal die "books.xml"-dokument in die voorbeelde hieronder gebruik (dieselfde XML-lêer as in die vorige hoofstukke).
Kyk na die "books.xml"-lêer in jou blaaier .
Kies en filter elemente
Soos ons in die vorige hoofstukke gesien het, selekteer en filter ons elemente met óf 'n Pad-uitdrukking óf met 'n FLWOR-uitdrukking.
Kyk na die volgende FLWOR-uitdrukking:
for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
- for - (opsioneel) bind 'n veranderlike aan elke item wat deur die in uitdrukking teruggestuur word
- laat - (opsioneel)
- waar - (opsioneel) 'n kriteria spesifiseer
- orden volgens - (opsioneel) spesifiseer die sorteervolgorde van die resultaat
- terugkeer - spesifiseer wat om terug te gee in die resultaat
Die vir Klousule
Die for-klousule bind 'n veranderlike aan elke item wat deur die in-uitdrukking teruggestuur word. Die for-klousule lei tot iterasie. Daar kan veelvuldige vir klousules in dieselfde FLWOR uitdrukking wees.
Om 'n spesifieke aantal kere in 'n for-klousule te lus, kan jy die na sleutelwoord gebruik:
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>
Die by sleutelwoord kan gebruik word om die iterasie te tel:
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 word ook toegelaat met meer as een in uitdrukking in die for-klousule. Gebruik komma om elkeen in uitdrukking te skei:
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>
Die laat Klousule
Die laat-klousule laat veranderlike opdragte toe en dit vermy om dieselfde uitdrukking baie keer te herhaal. Die laat-klousule lei nie tot iterasie nie.
let $x := (1 to 5)
return <test>{$x}</test>
Resultaat:
<test>1 2 3 4 5</test>
Die waar Klousule
Die where-klousule word gebruik om een of meer kriteria vir die resultaat te spesifiseer:
where $x/price>30 and $x/price<100
Die bevel deur Klousule
Die volgorde volgens klousule word gebruik om die sorteervolgorde van die resultaat te spesifiseer. Hier wil ons die resultaat volgens kategorie en titel rangskik:
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>
Die terugkeerklousule
Die terugkeerklousule spesifiseer wat teruggestuur moet word.
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>