機能
シーケンスの繰返しや、中間結果を変数にバインドする機能を提供します。また、2つ以上のXML文書を結合して計算し、データを再構成します。
記述形式
参照項番
単式 → 4.1 式の概要
QName → 2.1.5 名前(QName)
一般規則
for節は、指定された式を変数にバインドします。
return節はFLWOR式の結果を構成します。
for節には1つ以上の変数が含まれます。各変数には式が1つ対応します。変数は、対応する式の値(シーケンス)の各項目を繰返しバインドします。
for節の単式にFLWOR式を指定することはできません。
for節の目的は、タプルストリームを生成することです。タプルストリームとは、各変数がバインドする値の組合せ(タプル)を、順序付けして集めたコレクションです。
for節で生成するタプルストリームのイメージをそれぞれ以下に示します。
このfor節では、$xと$yがそれぞれ3個の項目を繰返しバインドするため、生成されるタプルストリームには9個のタプルが含まれます。
for $x in (1, 2, 3), $y in (4, 5, 6)
for節でバインドされる変数は、変数がバインドされた後に指定されるFLWOR式の部分式中においてのみ有効です。変数がバインドする式の中で、その変数を使用することはできません。
for節は、有効範囲内にある変数と同じ名前の変数で異なる式を複数回バインドすることができます。このとき変数参照で参照可能な変数の値は、有効範囲内で最後にバインドした変数の値になります。
使用例
この式は、シーケンス(3,6,9)と(2,4)の各項目の組み合わせを返します。この式の評価結果は、シーケンス (3,2,3,4,6,2,6,4,9,2,9,4)です。
for $x in (3, 6, 9) , $y in (2, 4) return ( $x, $y )
この式は、全従業員の中から息子がいる従業員を検索し、その従業員と息子の名前を返します。この式の評価結果を以下に示します。
for $emp in /employees/employee[family/son] return ( $emp/name, $emp/family/son )
この式の評価結果を以下に示します。
<name>Tanaka Tarou</name> <son>Tanaka Ken</son> <name>Shinada Megumi</name> <son>Shinada Kaoru</son> <son>Shinada Teppei</son>