XQueryの選択とフィルタリング
XML サンプルドキュメント
以下の例でもこの「books.xml」ドキュメントを引き続き使用します (上記の章で使用したのと同じ XML ファイル)。
ブラウザで「books.xml」ファイルを表示します。
要素の選択とフィルタリング
前の章で説明したように、パス式または FLWOR 式を使用して要素を選択およびフィルタリングします。
次の FLWOR 式を参照してください:
for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
where $x/price>30
order by $x/title
return $x/title
for - (オプション) in 式によって返される各項目に変数をバンドルします
let - (オプション)
where - (オプション) 条件を設定します
order by - (オプション) ) 結果がソートされる順序を設定します
return - 結果で返される内容を指定します
for ステートメント
for ステートメントは、in 式プロジェクトによって返される各値に変数をバインドできます。 for ステートメントは反復を生成します。同じ FLWOR 式内に複数の for ステートメントが存在できます。
for ステートメントで指定した回数ループするには、次のキーワードを使用できます:
for $x in (1 to 5)
return <test>{$x}</test>
return <test>{$x}</test>
結果:
<test>1</test>
<test>2</test>
<test>3</test>
<test>4</test>
<test>; 5</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>
return <book>{ $i}.{data($x)}</book>
結果:
<book>1. 日常のイタリア語</book>
<book>2. <本>3.式内でそれぞれを区切るにはカンマを使用してください:
for $x in (10,20), $y in (100,200)<book>2. <本>3.式内でそれぞれを区切るにはカンマを使用してください:
結果:
<テスト>x=10 および y=100テスト>
<テスト>x=10 および y=200テスト><テスト>x= 20 およびy=100
let ステートメント
let ステートメントは変数の代入を完了し、同じ式を複数回繰り返すことを避けます。 let ステートメントは反復を引き起こしません。
let $x := (1 to 5)
return <test>{$x}</test>
return <test>{$x}</test>
結果:
<test>1 2 3 4 5</test>
where ステートメント
where ステートメントは、結果に対する 1 つ以上の条件 (基準) を設定するために使用されます。
$x/price>30 および $x/price<100
order by ステートメント
order by ステートメントは、結果の並べ替え順序を指定するために使用されます。ここで、カテゴリとタイトルに従って結果を並べ替える必要があります:
for $x in doc("books.xml")/bookstore/book
order by $x/@category, $x/title
return $ x /title
order by $x/@category, $x/title
return $ x /title
結果:
<title lang="ja">ハリー・ポッター</title>
<title lang="ja">毎日のイタリア語</title>
<title lang= " ja">Learning XML</title>
<title lang="ja">XQuery キックスタート</title>
<title lang="ja">毎日のイタリア語</title>
<title lang= " ja">Learning XML</title>
<title lang="ja">XQuery キックスタート</title>
return ステートメント:
return ステートメントは、返されるコンテンツを指定します。
$x の doc("books.xml")/bookstore/book
return $x/title
return $x/title
結果:
<title lang="en">Everyday Italian</title>
<title lang="ja">ハリー ポッター</title>
<title lang="ja">XQuery キック スタート</title>
<title lang="ja">XML の学習</title> ;
<title lang="ja">ハリー ポッター</title>
<title lang="ja">XQuery キック スタート</title>
<title lang="ja">XML の学習</title> ;