機能
記述形式
参照項番
リテラル → 4.2.1 リテラル
QName → 2.1.5 名前(QName)
式 →4.1 式の概要
単式 → 4.1 式の概要
一般規則
変数参照は“$”記号の後に、変数名を表すQNameを続けたものです。
変数はFLWOR式のfor節、または量化式のin節でバインドされます。
すべての変数参照は、有効範囲内にある変数に照合されなければなりません。有効範囲内にない変数を参照するとエラーになります。
バインド可能な変数の数は最大100個です。
変数の有効範囲の詳細については、“4.7 FLWOR式”の一般規則、または“4.9 量化式”の一般規則を参照してください。
関数呼び出しは、関数名を表すQNameの後ろに0個以上の式の括弧付きリストが続くような構成をしています。この括弧付きリストを引数といいます。
関数名を表すQNameのネームスペース接頭辞が省略されている場合、その関数名のネームスペースはデフォルト関数ネームスペースに対応します。デフォルト関数ネームスペースは、ネームスペース接頭辞“fn”で表されるネームスペースに一致します。
関数呼び出しの関数名と引数の数が、定義された関数の名前と引数の数に一致しなければ、エラーが発生します。
関数の呼び出しは次のように評価されます。
引数の式が評価され、引数値を生成します。
各引数値に原子化を適用し、原子値のシーケンスを得ます。
原子値のシーケンスの項目のうち、xs:untypedAtomic型の項目はそれぞれ、期待される原子型へキャストされます。
上記の処理において、引数値が期待されるデータ型に変換できなかった場合、関数呼び出しは型エラーを返します。
括弧は、複数の演算子を含む式の評価順序を、任意の順序に強制するために使用します。例えば、式(fn:true() or fn:false()) and fn:false()を評価するとfalseになります。これは、括弧式(fn:true() or fn:false())が最初に評価され、その結果とfn:false()の論理和が評価されるためです。括弧がなければ、式fn:true() or fn:false() and fn:false()の評価結果はtrueになります。これは、or演算子がand演算子よりも優先度が低いためです。
空の括弧式は、空シーケンスを表します。
コンテキストアイテム式は、動的コンテキストの一構成要素であるコンテキストアイテムの値を参照します。
コンテキストアイテムは現在処理しているシーケンスの項目を表します。詳細は、“2.3.4 動的コンテキスト”を参照してください。
コンテキストアイテムが未定義の場合、コンテキストアイテム式は空シーケンスを返します。
使用例
この式は、for節で変数iに値5をバインドし、return節で変数iを参照しています。
for $i in 5 return $i
この式は、xs:string関数を呼び出して、引数に指定されたxs:double型の値12345をxs:string型の値“12345”にキャストします。
xs:string(12345)
この式は、最初に括弧式(1=3)が評価され、次に括弧式("ai"!="ue")が評価されて、最後に括弧式(1=3)の評価結果と("ai"!="ue")の評価結果の論理和が評価されます。
(1=3) or ("ai" != "ue")
この式は、空シーケンスを返します。
( )
この式では、述語[. > 3]がシーケンス(1,2,3,4,5)の各項目に対して繰り返し評価されます。このとき、述語内のコンテキストアイテム式は、述語が対象とするシーケンス(1,2,3,4,5)の各項目を表しています。この式の評価結果はシーケンス(4,5)です。
(1, 2, 3, 4, 5)[. > 3]