最新のWeb開発のチュートリアル
 

XQueryの選択とフィルタリング


XML文書の例

私たちは、使用する"books.xml"以下の例では、文書(same XML file as in the previous chapters)

見る"books.xml"ブラウザでファイルを


選択するとフィルタリングの要素

私たちは前の章で見てきたように、我々はパス式のいずれかで、またはFLWOR式を持つ要素を選択し、フィルタリングされています。

次FLWOR式を見てください:

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
  • 以下のために- (optional)式におけるによって返された各項目に変数をバインドします
  • 聞かせて- (optional)
  • どこ- (optional)条件を指定
  • 順序が- (optional)結果のソート順を指定します
  • 返す - 結果に戻るには何を指定します

句について

句の中での発現によって返された各項目に変数をバインドします。 反復における節の結果を得るために。 同じFLWOR式の句のために複数存在することができます。

ループ句の中に特定の回数には、次のように使用することができます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>

また、句の中の式の中に2つ以上ので許可されています。 式の中で、各を区切るにはカンマを使用します。

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句

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句

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>