XQueryの選択とフィルタリング
XMLサンプルドキュメント
以下の例では、「books.xml」ドキュメントを使用します(前の章と同じXMLファイル)。
要素の選択とフィルタリング
前の章で見たように、Path式またはFLWOR式のいずれかを使用して要素を選択およびフィルタリングしています。
次のFLWOR式を見てください。
for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
- for-(オプション)in式によって返される各項目に変数をバインドします
- let-(オプション)
- ここで、-(オプション)は基準を指定します
- order by-(オプション)結果の並べ替え順序を指定します
- return-結果で何を返すかを指定します
for句
for句は、in式によって返される各項目に変数をバインドします。for句は反復をもたらします。同じFLWOR式に複数のfor句が含まれる場合があります。
for句で特定の回数ループするには、toキーワードを使用できます。
for $x in (1 to 5)
return <test>{$x}</test>
結果:
<test>1</test>
<test>2</test>
<test>3</test>
<test>4</test>
<test>5</test>
atキーワードを使用して、反復をカウントできます。
for $x at $i in doc("books.xml")/bookstore/book/title
return <book>{$i}. {data($x)}</book>
結果:
<book>1. Everyday Italian</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Learning XML</book>
for句の式に複数を使用することもできます。式でそれぞれを区切るには、コンマを使用します。
for $x in (10,20), $y in (100,200)
return <test>x={$x} and y={$y}</test>
結果:
<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>
let節
let句は変数の割り当てを許可し、同じ式を何度も繰り返すことを回避します。let句は反復を引き起こしません。
let $x := (1 to 5)
return <test>{$x}</test>
結果:
<test>1 2 3 4 5</test>
where句
where句は、結果の1つ以上の基準を指定するために使用されます。
where $x/price>30 and $x/price<100
条項による注文
order by句は、結果の並べ替え順序を指定するために使用されます。ここでは、結果をカテゴリとタイトルで並べ替えます。
for $x in doc("books.xml")/bookstore/book
order by $x/@category, $x/title
return $x/title
結果:
<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句は、何が返されるかを指定します。
for $x in doc("books.xml")/bookstore/book
return $x/title
結果:
<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>