XQuery Vælg og Filtrer

XML eksempel dokument

Vi fortsætter med at bruge denne "books.xml"-fil i de følgende eksempler (som den XML-fil, der blev brugt i kapitlerne ovenfor).

Se "books.xml"-filen i din browser.

Vælg og filtrer elementer

Som vi så i de tidligere kapitler, bruger vi stiplusekspresioner eller FLWOR-udtryk til at vælge og filtrere elementer.

Se FLWOR-udtrykket nedenfor:

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
for
(valgfri) Binde en variabel til hver værdi, som in-udtrykket returnerer
let
(valgfri)
where
(valgfri) Angiv en betingelse
order by
(valgfri) Angiv rækkefølgen af resultaterne
return
Bestemmer indholdet, der returneres i resultaterne

for-sætning

For-sætningen kan binde en variabel til hver værdi, som in-udtrykket returnerer. For-sætningen kan generere en iteration. Der kan være flere for-sætninger i samme FLWOR-udtryk.

Hvis du vil gentage en for-sætning et bestemt antal gange, kan du brugeNøgleordet til :

for $x i (1 til 5)
return <test>{$x}</test>

Resultat:

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

Nøgleordet på Kan bruges til at beregne iterationer:

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

Resultat:

<book>1. Hverdagens italienske</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Lær XML</book>

På samme måde i for-sætningenDer kan være flere in-udtrykBrug komma til at adskille hver in-udtryk:

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

Resultat:

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

let sætning

let statement kan udføre variabeltildeling og undgå gentagelse af samme udtryk flere gange. let statement vil ikke forårsage iteration.

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

Resultat:

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

where statement

where statement bruges til at sætte en eller flere betingelser (kriterier) for resultaterne.

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

order by statement

order by statement bruges til at specificere rækkefølgen af resultaterne. Her skal vi sortere resultaterne efter category og title:

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

Resultat:

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

return statement specificerer det indhold, der skal returneres.

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

Resultat:

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