スケーラブルデータベースサーバ HiRDB Version 8 SQLリファレンス
XQuery問合せ本体には,XQuery問合せの結果を定義するXQuery式を指定します。
XQuery問合せ本体::= XQuery式 XQuery式 ::= XQueryシーケンス連結式 |
XQuery式は,次の表に示す式を組み合わせて指定します。
表1-67 XQuery式を構成する式
項番 | 式 | 説明 |
---|---|---|
1 | XQueryシーケンス連結式 | XQueryシーケンスを連結する式です。 |
2 | FLWOR式 |
|
3 | XQuery限定式 | 指定したXQueryシーケンスを構成するXQuery項目のどれか(some),又はすべて(every)が指定した条件を満たすかどうかを判定する式です。 |
4 | XQuery条件式 | 指定した条件の判定結果に応じてXQuery式を選択し,選択したXQuery式を評価する式です。 |
5 | XQuery論理式 | 論理演算(OR,AND)を行う式です。 |
6 | XQuery比較式 | 比較を行う式です。比較には値比較,汎用比較,ノード比較があります。 |
7 | XQuery範囲式 | 連続する整数(xs:int型)の基本単位値のXQueryシーケンスを生成する式です。 |
8 | XQuery算術式 | 加算,減算,乗算,除算,剰余算を行う式です。 |
9 | XQueryシーケンス集合演算式 | ノードから構成されるXQueryシーケンスに対して,和,共通部分,差を求める式です。 |
10 | XQuery単項式 | 単項演算を行う式です。 |
11 | XQuery値式 | 値を指定する式です。 |
12 | XQueryパス式 | XQueryデータモデルの木をたどって,特定のノードを選択する式です。 |
13 | XQuery基本式 | XQueryパス式を構成する基本的な構成要素です。 次に示すものがあります。
|
XQueryシーケンスを連結します。
複数のXQueryシーケンスを連結すると,連結対象のXQueryシーケンスが左から順に評価され,そのXQueryシーケンスに含まれるXQuery項目が結果のXQueryシーケンスの末尾に追加されていきます。連結結果のXQueryシーケンスは,連結対象のXQueryシーケンスのすべてのXQuery項目を含みます。また,連結結果のXQueryシーケンスに含まれるXQuery項目の数は,連結対象のXQueryシーケンスに含まれるXQuery項目の数の合計となります。
XQueryシーケンス連結式 ::= XQuery式単独 〔, XQuery式単独 〕… XQuery式単独 ::= { FLWOR式|XQuery限定式|XQuery条件式|XQuery論理式} |
XQueryシーケンス連結式の使用例を次に示します。
項番 | 例 | 結果 | 説明 |
---|---|---|---|
1 | 1, 2, 3, 4, 5 | (1, 2, 3, 4, 5) | 1から5までのXQuery整数定数の評価結果であるxs:int型の基本単位値一つから構成される,XQueryシーケンス五つを連結したXQueryシーケンスを返します。 |
2 | (1, 2, 3), (), (4, 5) | (1, 2, 3, 4, 5) | xs:int型の基本単位値1,2,3から構成されるXQueryシーケンス,空のXQueryシーケンス,及び xs:int型の基本単位値4,5から構成されるXQueryシーケンスを連結したXQueryシーケンスを返します。 「1, 2, 3, 4, 5」で表現されるXQuery式と同じ評価結果になります。 |
XQueryシーケンスをXQuery変数に割り当て,XQuery変数を含むXQuery式を評価し,その結果のXQueryシーケンスを返却します。
XQuery変数の割り当て方法及びXQuery式の評価方法を次に示します。
W3Cの規格ではFLWOR式は,FOR句,LET句,WHERE句,ORDER BY句,及びRETURN句から構成されますが,HiRDBでは,FOR句,LET句及びRETURN句だけサポートしています。
FLWOR式 ::= { FOR句 | LET句 }〔 { FOR句 | LET句 }〕… RETURN句 FOR句 ::= for $ XQuery変数名 in XQuery式単独 〔, $ XQuery変数名 in XQuery式単独 〕… LET句 ::= let $ XQuery変数名 : 等号演算子 XQuery式単独 〔, $ XQuery変数名 : 等号演算子 XQuery式単独〕… RETURN句 ::= return XQuery式単独 |
FOR句及びLET句を一つ以上の任意の組み合わせで指定することができます。
複数のFOR句やLET句を指定した場合,各句がネストして指定されたものとして扱います。
(例)
次に示すXQuery式1とXQuery式2の内容は同じです。
for $XQuery変数名1 in XQuery式単独1 let $XQuery変数名2 := XQuery式単独2 for $XQuery変数名3 in XQuery式単独3 let $XQuery変数名4 := XQuery式単独4 return XQuery式単独5
for $XQuery変数名1 in XQuery式単独1 return let $XQuery変数名2 := XQuery式単独2 return for $XQuery変数名3 in XQuery式単独3 return let $XQuery変数名4 := XQuery式単独4 return XQuery式単独5
次に示す方法でRETURN句の評価を繰り返します。
for $XQuery変数名1 in XQuery式単独1 , $XQuery変数名2 in XQuery式単独2 return XQuery式単独3
for $XQuery変数名1 in XQuery式単独1 return for $XQuery変数名2 in XQuery式単独2 return XQuery式単独3
XQuery式単独を評価した結果をXQuery変数に関連付け,RETURN句を評価します。
FLWOR式の例を次に示します。
<書籍情報 書籍ID="452469630"> <タイトル>リレーショナルデータベース解説</タイトル> <カテゴリ>データベース </カテゴリ> <著者>伊藤栄一</著者> <著者>木村幸一</著者> <価格>3000</価格> </書籍情報> |
項番 | 例 | 結果 | 説明 |
---|---|---|---|
1 | for $a in $book/著者 return fn:string($a) |
("伊藤栄一", "木村幸一") | 「書籍情報」要素ノードの子であるすべての「著者」要素ノードに対して,fn:string関数を適用し,文字列として表現した結果を返します。 |
2 | for $i in (10, 20), $j in (1,2) return ($i + $j) |
(11, 12, 21, 22) | for $i in (10, 20) return for $j in (1, 2) return ( $i + $j ) と同じ結果を返します。 |
3 | let $a := $book/著者 return $a/fn:string() |
("伊藤栄一", "木村幸一") | 「書籍情報」要素ノードの子であるすべての「著者」要素ノードに対して,fn:string関数を適用し,文字列として表現した結果を返します。 |
4 | for $i in (1,2) let $a := $book/著者[$i] return fn:string($a) |
("伊藤栄一", "木村幸一") | 「書籍情報」要素ノードの子である「著者」要素ノードのうち,1番目の要素ノード及び2番目の要素ノードに対して,fn:string関数を適用し,文字列として表現した結果を返します。 |
5 | let $a := $book/著者 for $i in (1,2) return fn:string($a[$i]) |
("伊藤栄一", "木村幸一") | 「書籍情報」要素ノードの子である「著者」要素ノードのうち,1番目の要素ノード及び2番目の要素ノードに対して,fn:string関数を適用し,文字列として表現した結果を返します。 |
6 | for $a in $book/著者 return fn:count($a) |
(1,1) | 「書籍情報」要素ノードの子であるそれぞれの「著者」要素ノードに対して,fn:count関数を適用した結果1を連結したXQueryシーケンスを返します。 |
7 | let $a := $book/著者 return fn:count($a) |
(2) | 「書籍情報」要素ノードの子である「著者」要素ノードから成るXQueryシーケンスに対して,fn:count関数を適用した結果である2を返します。 |
指定したXQueryシーケンスを構成するXQuery項目のどれか(some),又はすべて(every)が指定した条件を満たすかどうかを判定し,その結果を返却します。
XQuery限定式::= { some | every } $ XQuery変数名 in XQuery式単独 [ , $ 変数名 in XQuery式単独 ]… satisfies XQuery式単独 |
XQuery 限定式の例を次に示します。
<XQuery変数bookが表す要素>
<書籍情報 書籍ID="452469630"> <タイトル>リレーショナルデータベース解説</タイトル> <カテゴリ>データベース </カテゴリ> <著者>伊藤栄一</著者> <著者>木村幸一</著者> <価格>3000</価格> </書籍情報> |
<XQuery限定式の例と結果>
項番 | 例 | 結果 | 説明 |
---|---|---|---|
1 | some $text in $book /著者/text() satisfies ( $text eq "木村幸一" ) | 真 | 「書籍情報」要素ノードの子である「著者」要素ノードが持つテキストノードの内容の一つが"木村幸一"に等しいため,真となります。 |
2 | some $i in (1, 2, 3), $j in (4, 5, 6) satisfies $i + $j >= 6 | 真 | ‘some’を指定した場合,$i+$j>=6となるXQuery項目の組み合わせ(例:$i=1,$j=5)を含むため,XQuery限定式の結果は真となります。 |
3 | every $i in (1, 2, 3), $j in (4, 5, 6) satisfies $i + $j >= 6 | 偽 | ‘every’を指定した場合,すべてのXQuery項目の組み合わせが$i+$j>=6となるわけではないため(例:$i=1,$j=4),XQuery限定式の結果は偽となります。 |
指定した条件の判定結果に応じてXQuery式を選択し,選択したXQuery式を評価した結果を返却します。
XQuery条件式 ::= if ( XQuery式 ) then XQuery式単独 else XQuery式単独 |
XQuery条件式の例を次に示します。
<XQuery変数book1が表すXML要素>
<書籍情報 書籍ID="452469630"> <タイトル>リレーショナルデータベース解説</タイトル> <カテゴリ>データベース </カテゴリ> <著者>伊藤栄一</著者> <著者>木村幸一</著者> <価格>3000</価格> </書籍情報> |
<XQuery変数book2が表すXML要素>
<書籍情報 書籍ID="452469631"> <タイトル> XML入門教科書</タイトル> <著者>中村弘子</著者> <価格>2500</価格> </書籍情報> |
<XQuery条件式の例と結果>
項番 | 例 | 結果 | 説明 |
---|---|---|---|
1 | if ($book1/価格 > $book2/価格) then $book1 else $book2 |
then句で指定された,XQuery変数book1が示す要素ノード | $book1が示す要素ノードの子である「価格」要素ノードの型付き値(=3000)は,$book2が示す要素ノードの子である「価格」要素ノードの型付き値(=2500)より大きいため,$book1が示す要素ノードが結果となります。 |
XQuery比較式に対して論理演算(OR,AND)を行った結果を返却します。
又は,XQuery比較式の評価結果をそのまま返却します。
XQuery論理式 ::= XQueryOR式 XQueryOR式 ::= XQueryAND式 〔or XQueryAND式 〕… XQueryAND式 ::= XQuery比較式〔and XQuery比較式〕… |
or演算子を指定した場合は,XQueryAND式の評価結果に対してOR論理演算をします。
XQueryAND式を単独で指定した場合は,そのXQueryAND式の評価結果をそのまま返します。
OR論理演算をする場合に,各XQueryAND式の評価結果がブーリアン値(xs:boolean型の基本単位値)の単一XQueryシーケンスでない場合は,暗黙的にブーリアン値(xs:boolean型の基本単位値)の単一XQueryシーケンスに変換してから演算します。
第1演算項及び第2演算項のブーリアン値によるOR論理演算の結果を,次の表に示します。
表1-68 XQuery論理式でのOR論理演算の結果
項番 | 第1演算項 | 第2演算項 | |
---|---|---|---|
真 | 偽 | ||
1 | 真 | 真 | 真 |
2 | 偽 | 真 | 偽 |
and演算子を指定した場合は,XQuery比較式の評価結果に対してAND論理演算をします。
XQuery比較式を単独で指定した場合は,そのXQuery比較式の評価結果をそのまま返します。
AND論理演算をする場合に,各XQuery比較式の評価結果がブーリアン値(xs:boolean型の基本単位値)の単一XQueryシーケンスでない場合は,ブーリアン値(xs:boolean型の基本単位値)の単一XQueryシーケンスに変換してから演算します。
第1演算項及び第2演算項のブーリアン値によるAND論理演算の結果を,次の表に示します。
表1-69 XQuery論理式でのAND論理演算の結果
項番 | 第1演算項 | 第2演算項 | |
---|---|---|---|
真 | 偽 | ||
1 | 真 | 真 | 偽 |
2 | 偽 | 偽 | 偽 |
XQuery範囲式に対して比較を行った結果を返却します。
又は,XQuery範囲式の評価結果をそのまま返却します。
XQuery比較式 ::= XQuery範囲式 〔{値比較|汎用比較|ノード比較} XQuery範囲式〕 値比較 ::= { eq|ne|lt|le|gt|ge} 汎用比較 ::= {=|!=|<|<=|>|>=|<>} ノード比較 ::= {is|<<|>>} |
値比較,汎用比較,又はノード比較を指定した場合は,XQuery範囲式の評価結果を比較します。
XQuery範囲式を単独で指定した場合は,そのXQuery範囲式の評価結果をそのまま返却します。
単一の基本単位値同士を比較します。
各指定での比較方法を次の表に示します。
表1-70 値比較の比較方法
項番 | 値比較演算子 | 真となる条件 |
---|---|---|
1 | eq | 第1比較項と第2比較項の値が等しい |
2 | ne | 第1比較項と第2比較項の値が等しくない |
3 | lt | 第1比較項の値が第2比較項の値より小さい |
4 | le | 第1比較項の値が第2比較項の値以下である |
5 | gt | 第1比較項の値が第2比較項の値より大きい |
6 | ge | 第1比較項の値が第2比較項の値以上である |
次に示す手順で比較を行います。
比較項のXQueryデータ型が比較できない組み合わせの場合はエラーになります。比較できるXQueryデータ型の組み合わせを次の表に示します。
表1-71 比較可能なXQueryデータ型の組み合わせ
第1演算項のXQueryデータ型 | 第2演算項のXQueryデータ型 | ||||||
---|---|---|---|---|---|---|---|
xs:stirng | 数値データ型 | xs:dateTime | xs:date | xs:time | xs:hexBinary | s:boolean | |
xs:stirng | ○ | × | × | × | × | × | × |
数値データ型 | × | ○ | × | × | × | × | × |
xs:dateTime | × | × | ○ | × | × | × | × |
xs:date | × | × | × | ○ | × | × | × |
xs:time | × | × | × | × | ○ | × | × |
xs:hexBinary | × | × | × | × | × | ○※ | × |
xs:boolean | × | × | × | × | × | × | ○※ |
xs:double型で比較する場合の比較結果を,演算子ごとに次の表に示します。
表1-72 xs:double型で比較する場合の比較結果(eq演算子)
項番 | 第1演算項 (xs:double型に変換した値) |
第2演算項(xs:double型に変換した値) | ||||||
---|---|---|---|---|---|---|---|---|
+0 | -0 | +INF | -INF | NaN | 左記以外の負数 | 左記以外 | ||
1 | +0 | 真 | 真 | 偽 | 偽 | 偽 | 偽 | 偽 |
2 | -0 | 真 | 真 | 偽 | 偽 | 偽 | 偽 | 偽 |
3 | +INF | 偽 | 偽 | 真 | 偽 | 偽 | 偽 | 偽 |
4 | -INF | 偽 | 偽 | 偽 | 真 | 偽 | 偽 | 偽 |
5 | NaN | 偽 | 偽 | 偽 | 偽 | 偽 | 偽 | 偽 |
6 | 上記以外の負数 | 偽 | 偽 | 偽 | 偽 | 偽 | 比較結果 | 比較結果 |
7 | 上記以外 | 偽 | 偽 | 偽 | 偽 | 偽 | 比較結果 | 比較結果 |
表1-73 xs:double型で比較する場合の比較結果(ne演算子)
項番 | 第1演算項 (xs:double型に変換した値) |
第2演算項(xs:double型に変換した値) | ||||||
---|---|---|---|---|---|---|---|---|
+0 | -0 | +INF | -INF | NaN | 左記以外の負数 | 左記以外 | ||
1 | +0 | 偽 | 偽 | 真 | 真 | 真 | 真 | 真 |
2 | -0 | 偽 | 偽 | 真 | 真 | 真 | 真 | 真 |
3 | +INF | 真 | 真 | 偽 | 真 | 真 | 真 | 真 |
4 | -INF | 真 | 真 | 真 | 偽 | 真 | 真 | 真 |
5 | NaN | 真 | 真 | 真 | 真 | 真 | 真 | 真 |
6 | 上記以外の負数 | 真 | 真 | 真 | 真 | 真 | 比較結果 | 比較結果 |
7 | 上記以外 | 真 | 真 | 真 | 真 | 真 | 比較結果 | 比較結果 |
表1-74 xs:double型で比較する場合の比較結果(lt演算子)
項番 | 第1演算項 (xs:double型に変換した値) |
第2演算項(xs:double型に変換した値) | ||||||
---|---|---|---|---|---|---|---|---|
+0 | -0 | +INF | -INF | NaN | 左記以外の負数 | 左記以外 | ||
1 | +0 | 偽 | 偽 | 真 | 偽 | 偽 | 偽 | 真 |
2 | -0 | 偽 | 偽 | 真 | 偽 | 偽 | 偽 | 真 |
3 | +INF | 偽 | 偽 | 偽 | 偽 | 偽 | 偽 | 偽 |
4 | -INF | 真 | 真 | 真 | 偽 | 偽 | 真 | 真 |
5 | NaN | 偽 | 偽 | 偽 | 偽 | 偽 | 偽 | 偽 |
6 | 上記以外の負数 | 真 | 真 | 真 | 偽 | 偽 | 比較結果 | 比較結果 |
7 | 上記以外 | 偽 | 偽 | 真 | 偽 | 偽 | 比較結果 | 比較結果 |
表1-75 xs:double型で比較する場合の比較結果(le演算子)
項番 | 第1演算項 (xs:double型に変換した値) |
第2演算項(xs:double型に変換した値) | ||||||
---|---|---|---|---|---|---|---|---|
+0 | -0 | +INF | -INF | NaN | 左記以外の負数 | 左記以外 | ||
1 | +0 | 真 | 真 | 真 | 偽 | 偽 | 偽 | 真 |
2 | -0 | 真 | 真 | 真 | 偽 | 偽 | 偽 | 真 |
3 | +INF | 偽 | 偽 | 真 | 偽 | 偽 | 偽 | 偽 |
4 | -INF | 真 | 真 | 真 | 真 | 偽 | 真 | 真 |
5 | NaN | 偽 | 偽 | 偽 | 偽 | 偽 | 偽 | 偽 |
6 | 上記以外の負数 | 真 | 真 | 真 | 偽 | 偽 | 比較結果 | 比較結果 |
7 | 上記以外 | 偽 | 偽 | 真 | 偽 | 偽 | 比較結果 | 比較結果 |
表1-76 xs:double型で比較する場合の比較結果(gt演算子)
項番 | 第1演算項 (xs:double型に変換した値) |
第2演算項(xs:double型に変換した値) | ||||||
---|---|---|---|---|---|---|---|---|
+0 | -0 | +INF | -INF | NaN | 左記以外の負数 | 左記以外 | ||
1 | +0 | 偽 | 偽 | 偽 | 真 | 偽 | 真 | 偽 |
2 | -0 | 偽 | 偽 | 偽 | 真 | 偽 | 真 | 偽 |
3 | +INF | 真 | 真 | 偽 | 真 | 偽 | 真 | 真 |
4 | -INF | 偽 | 偽 | 偽 | 偽 | 偽 | 偽 | 偽 |
5 | NaN | 偽 | 偽 | 偽 | 偽 | 偽 | 偽 | 偽 |
6 | 上記以外の負数 | 偽 | 偽 | 偽 | 真 | 偽 | 比較結果 | 比較結果 |
7 | 上記以外 | 真 | 真 | 偽 | 真 | 偽 | 比較結果 | 比較結果 |
表1-77 xs:double型で比較する場合の比較結果(ge演算子)
項番 | 第1演算項 (xs:double型に変換した値) |
第2演算項(xs:double型に変換した値) | ||||||
---|---|---|---|---|---|---|---|---|
+0 | -0 | +INF | -INF | NaN | 左記以外の負数 | 左記以外 | ||
1 | +0 | 真 | 真 | 偽 | 真 | 偽 | 真 | 偽 |
2 | -0 | 真 | 真 | 偽 | 真 | 偽 | 真 | 偽 |
3 | +INF | 真 | 真 | 真 | 真 | 偽 | 真 | 真 |
4 | -INF | 偽 | 偽 | 偽 | 真 | 偽 | 偽 | 偽 |
5 | NaN | 偽 | 偽 | 偽 | 偽 | 偽 | 偽 | 偽 |
6 | 上記以外の負数 | 偽 | 偽 | 偽 | 真 | 偽 | 比較結果 | 比較結果 |
7 | 上記以外 | 真 | 真 | 偽 | 真 | 偽 | 比較結果 | 比較結果 |
任意の長さのXQueryシーケンス同士を比較します。
次に示す手順で比較を行います。
表1-78 汎用比較と対応する値比較
項番 | 汎用比較演算子 | 対応する値比較 |
---|---|---|
1 | = | eq |
2 | !=,<> | ne |
3 | < | lt |
4 | <= | le |
5 | > | gt |
6 | >= | ge |
表1-79 xs:untypedAtomic型の基本単位値の型変換
項番 | 他方の基本単位値XQueryデータ型 | 型変換後のXQueryデータ型 |
---|---|---|
1 | 数値データ型 | xs:double |
2 | xs:untypedAtomic | xs:string |
3 | xs:string | xs:string |
4 | 上記以外 | 他方の基本単位値と同じXQueryデータ型 |
ノードIDと,文書順序に基づいてノード同士を比較します。
ノードIDとは,XQueryデータモデルで表現した木の中のすべてのノードに割り当てられている,木で一意な識別子です。
各指定での比較方法を次の表に示します。
表1-80 ノード比較の比較方法
項番 | ノード比較演算子 | 真となる条件 |
---|---|---|
1 | is | 比較する二つのノードのノードIDが等しい。 |
2 | << | 第1比較項のノードが第2比較項のノードよりも文書順序で前に出現する。 |
3 | >> | 第1比較項のノードが第2比較項のノードよりも文書順序で後に出現する。 |
次に示す手順で比較を行います。
XQuery比較式の例を次に示します。
<XQuery変数bookが表す要素>
<書籍情報 書籍ID="452469630"> <タイトル>リレーショナルデータベース解説</タイトル> <カテゴリ>データベース </カテゴリ> <著者>伊藤栄一</著者> <著者>木村幸一</著者> <価格>3000</価格> </書籍情報> |
<XQuery比較式の例と結果>
項番 | 例 | 結果 | 説明 |
---|---|---|---|
1 | $book[ @書籍ID eq "452469630" ] |
「書籍情報」要素ノード | XQuery変数bookが表す「書籍情報」要素ノードに属する「書籍ID」属性ノードの型付き値が”452469630”と等しいため,結果は,XQuery変数bookが表す「書籍情報」要素ノードとなります。 |
2 | (1, 2) = (2, 3) | 真 | 第1比較項の2番目のXQuery項目と,第2比較項の1番目のXQuery項目の間でeqの関係が成り立つため,結果は真となります。 |
3 | (1, 2) != (2, 3) | 真 | 第1比較項の1番目のXQuery項目と,第2比較項の1番目のXQuery項目の間でneの関係が成り立つため,結果は真となります。 |
連続する整数値(xs:int型)の基本単位値から構成されるXQueryシーケンスを返却します。
又は,XQuery算術式の評価結果をそのまま返却します。
XQuery範囲式 ::= XQuery算術式 〔to XQuery算術式〕 |
toを指定した場合は,XQuery算術式の評価結果を比較します。
XQuery算術式を単独で指定した場合は,そのXQuery算術式の評価結果をそのまま返却します。
toを指定した場合,次の規則に従って生成したXQueryシーケンスを返却します。
XQuery範囲式の例を次に示します。
項番 | 例 | 結果 | 説明 |
---|---|---|---|
1 | ( 1 to 10 ) | (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) | 1から10までの整数値から成るXQueryシーケンスを生成します。 |
加算,減算,乗算,除算,剰余算を行った結果を返却します。
又は,XQueryシーケンス集合演算式の評価結果をそのまま返却します。
XQuery算術式 ::= XQuery加減算式 XQuery加減算式 ::= XQuery乗除算式 〔{+|-} XQuery乗除算式〕… XQuery乗除算式 ::= XQueryシーケンス集合演算式 〔{*|div|idiv|mod} XQueryシーケンス集合演算式〕… |
演算子(+,−)を指定した場合は,XQuery乗除算式の評価結果に対して,加算又は減算を行います。
XQuery乗除算式を単独で指定した場合は,そのXQuery乗除算式の評価結果をそのまま返却します。
各演算子の意味と機能を次の表に示します。
表1-81 XQuery加減算式での演算子の機能
項番 | 演算子 | 意味 | 機能 |
---|---|---|---|
1 | + | 加算 | 第1演算項に第2演算項を加えます。 |
2 | - | 減算 | 第1演算項から第2演算項を減らします。 |
演算子(*,div,idiv,mod)を指定した場合は,XQueryシーケンス集合演算式の評価結果に対して,乗算,除算又は剰余算を行います。
XQueryシーケンス集合演算式を単独で指定した場合は,そのXQueryシーケンス集合演算式の評価結果をそのまま返却します。
各演算子の意味と機能を次の表に示します。
表1-82 XQuery乗除算式での演算子の機能
項番 | 演算子 | 意味 | 機能 |
---|---|---|---|
1 | * | 乗算 | 第1演算項に第2演算項を掛けます。 |
2 | div | 除算 | 第1演算項を第2演算項で割ります。 |
3 | idiv | 整数除算 | 第1演算項を第2演算項で割った商を切り捨てた整数値を求めます。 |
4 | mod | 剰余算 | 第1演算項(仮にaとします)を第2演算項(仮にbとします)で割ったときの剰余を求めます。演算結果は,a - (a idiv b) * bとなります。 |
XQuery算術式では,次に示す手順で,加算,減算,乗算,除算,剰余算を行います。
表1-83 演算項のXQueryデータ型と演算結果のXQueryデータ型の関係(+演算子)
項番 | 第1演算項 | 第2演算項 | ||
---|---|---|---|---|
xs:int | xs:decimal | xs:double | ||
1 | xs:int | xs:int | xs:decimal | xs:double |
2 | xs:decimal | xs:decimal | xs:decimal | xs:double |
3 | xs:double | xs:double | xs:double | xs:double |
表1-84 演算項のXQueryデータ型と演算結果のXQueryデータ型の関係(-演算子)
項番 | 第1演算項 | 第2演算項 | ||
---|---|---|---|---|
xs:int | xs:decimal | xs:double | ||
1 | xs:int | xs:int | xs:decimal | xs:double |
2 | xs:decimal | xs:decimal | xs:decimal | xs:double |
3 | xs:double | xs:double | xs:double | xs:double |
表1-85 演算項のXQueryデータ型と演算結果のXQueryデータ型の関係(*演算子)
項番 | 第1演算項 | 第2演算項 | ||
---|---|---|---|---|
xs:int | xs:decimal | xs:double | ||
1 | xs:int | xs:int | xs:decimal | xs:double |
2 | xs:decimal | xs:decimal | xs:decimal | xs:double |
3 | xs:double | xs:double | xs:double | xs:double |
表1-86 演算項のXQueryデータ型と演算結果のXQueryデータ型の関係(div演算子)
項番 | 第1演算項 | 第2演算項 | ||
---|---|---|---|---|
xs:int | xs:decimal | xs:double | ||
1 | xs:int | xs:decimal | xs:decimal | xs:double |
2 | xs:decimal | xs:decimal | xs:decimal | xs:double |
3 | xs:double | xs:double | xs:double | xs:double |
表1-87 演算項のXQueryデータ型と演算結果のXQueryデータ型の関係(idiv演算子)
項番 | 第1演算項 | 第2演算項 | ||
---|---|---|---|---|
xs:int | xs:decimal | xs:double | ||
1 | xs:int | xs:int | xs:int | xs:int |
2 | xs:decimal | xs:int | xs:int | xs:int |
3 | xs:double | xs:int | xs:int | xs:int |
表1-88 演算項のXQueryデータ型と演算結果のXQueryデータ型の関係(mod演算子)
項番 | 第1演算項 | 第2演算項 | ||
---|---|---|---|---|
xs:int | xs:decimal | xs:double | ||
1 | xs:int | xs:int | xs:decimal | xs:double |
2 | xs:decimal | xs:decimal | xs:decimal | xs:double |
3 | xs:double | xs:double | xs:double | xs:double |
表1-89 演算項の少なくとも一方がxs:double型である場合の演算結果(+演算子)
項番 | 第1演算項 (xs:double型に変換した値) |
第2演算項(xs:double型に変換した値) | ||||||
---|---|---|---|---|---|---|---|---|
+0 | -0 | +INF | -INF | NaN | 左記以外の負数 | 左記以外 | ||
1 | +0 | +0 | +0 | +INF | -INF | NaN | 加算結果 | 加算結果 |
2 | -0 | +0 | -0 | +INF | -INF | NaN | 加算結果 | 加算結果 |
3 | +INF | +INF | +INF | +INF | NaN | NaN | +INF | +INF |
4 | -INF | -INF | -INF | NaN | -INF | NaN | -INF | -INF |
5 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
6 | 上記以外の負数 | 加算結果 | 加算結果 | +INF | -INF | NaN | 加算結果 | 加算結果 |
7 | 上記以外 | 加算結果 | 加算結果 | +INF | -INF | NaN | 加算結果 | 加算結果 |
表1-90 演算項の少なくとも一方がxs:double型である場合の演算結果(-演算子)
項番 | 第1演算項 (xs:double型に変換した値) |
第2演算項(xs:double型に変換した値) | ||||||
---|---|---|---|---|---|---|---|---|
+0 | -0 | +INF | -INF | NaN | 左記以外の負数 | 左記以外 | ||
1 | +0 | +0 | +0 | -INF | +INF | NaN | 減算結果 | 減算結果 |
2 | -0 | -0 | +0 | -INF | +INF | NaN | 減算結果 | 減算結果 |
3 | +INF | +INF | +INF | NaN | +INF | NaN | +INF | +INF |
4 | -INF | -INF | -INF | -INF | NaN | NaN | -INF | -INF |
5 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
6 | 上記以外の負数 | 減算結果 | 減算結果 | -INF | +INF | NaN | 減算結果 | 減算結果 |
7 | 上記以外 | 減算結果 | 減算結果 | -INF | +INF | NaN | 減算結果 | 減算結果 |
表1-91 演算項の少なくとも一方がxs:double型である場合の演算結果(*演算子)
項番 | 第1演算項 (xs:double型に変換した値) |
第2演算項(xs:double型に変換した値) | ||||||
---|---|---|---|---|---|---|---|---|
+0 | -0 | +INF | -INF | NaN | 左記以外の負数 | 左記以外 | ||
1 | +0 | +0 | -0 | NaN | NaN | NaN | 乗算結果 | 乗算結果 |
2 | -0 | -0 | +0 | NaN | NaN | NaN | 乗算結果 | 乗算結果 |
3 | +INF | NaN | NaN | +INF | -INF | NaN | -INF | +INF |
4 | -INF | NaN | NaN | -INF | +INF | NaN | +INF | -INF |
5 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
6 | 上記以外の負数 | 乗算結果 | 乗算結果 | -INF | +INF | NaN | 乗算結果 | 乗算結果 |
7 | 上記以外 | 乗算結果 | 乗算結果 | +INF | -INF | NaN | 乗算結果 | 乗算結果 |
表1-92 演算項の少なくとも一方がxs:double型である場合の演算結果(div演算子)
項番 | 第1演算項 (xs:double型に変換した値) |
第2演算項(xs:double型に変換した値) | ||||||
---|---|---|---|---|---|---|---|---|
+0 | -0 | +INF | -INF | NaN | 左記以外の負数 | 左記以外 | ||
1 | +0 | NaN | NaN | +0 | -0 | NaN | 除算結果 | 除算結果 |
2 | -0 | NaN | NaN | -0 | +0 | NaN | 除算結果 | 除算結果 |
3 | +INF | +INF | -INF | NaN | NaN | NaN | -INF | +INF |
4 | -INF | -INF | +INF | NaN | NaN | NaN | +INF | -INF |
5 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
6 | 上記以外の負数 | -INF | INF | -0 | +0 | NaN | 除算結果 | 除算結果 |
7 | 上記以外 | INF | -INF | +0 | -0 | NaN | 除算結果 | 除算結果 |
表1-93 演算項の少なくとも一方がxs:double型である場合の演算結果(idiv演算子)
項番 | 第1演算項 (xs:double型に変換した値) |
第2演算項(xs:double型に変換した値) | ||||||
---|---|---|---|---|---|---|---|---|
+0 | -0 | +INF | -INF | NaN | 左記以外の負数 | 左記以外 | ||
1 | +0 | 0除算エラー | 0除算エラー | 0 | 0 | 型変換エラー | 整数除算結果 | 整数除算結果 |
2 | -0 | 0除算エラー | 0除算エラー | 0 | 0 | 型変換エラー | 整数除算結果 | 整数除算結果 |
3 | +INF | 0除算エラー | 0除算エラー | 型変換エラー | 型変換エラー | 型変換エラー | 型変換エラー | 型変換エラー |
4 | -INF | 0除算エラー | 0除算エラー | 型変換エラー | 型変換エラー | 型変換エラー | 型変換エラー | 型変換エラー |
5 | NaN | 0除算エラー | 0除算エラー | 型変換エラー | 型変換エラー | 型変換エラー | 型変換エラー | 型変換エラー |
6 | 上記以外の負数 | 0除算エラー | 0除算エラー | 0 | 0 | 型変換エラー | 整数除算結果 | 整数除算結果 |
7 | 上記以外 | 0除算エラー | 0除算エラー | 0 | 0 | 型変換エラー | 整数除算結果 | 整数除算結果 |
表1-94 演算項の少なくとも一方がxs:double型である場合の演算結果(mod演算子)
項番 | 第1演算項 (xs:double型に変換した値) |
第2演算項(xs:double型に変換した値) | ||||||
---|---|---|---|---|---|---|---|---|
+0 | -0 | +INF | -INF | NaN | 左記以外の負数 | 左記以外 | ||
1 | +0 | NaN | NaN | +0 | +0 | NaN | 剰余算結果 | 剰余算結果 |
2 | -0 | NaN | NaN | -0 | -0 | NaN | 剰余算結果 | 剰余算結果 |
3 | +INF | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
4 | -INF | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
5 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
6 | 上記以外の負数 | NaN | NaN | 第1演算項(xs:double型に変換した値) | 第1演算項(xs:double型に変換した値) | NaN | 剰余算結果 | 剰余算結果 |
7 | 上記以外 | NaN | NaN | 第1演算項(xs:double型に変換した値) | 第1演算項(xs:double型に変換した値) | NaN | 剰余算結果 | 剰余算結果 |
減算演算子(-)の前には,空白(X'20'),TAB(X'09'),NL(X'0a')又はCR(X'0d')のどれかを指定してください。空白(X'20'),AB(X'09'),NL(X'0a')又はCR(X'0d')を指定しない場合,減算演算子の直前に指定した名前の一部と見なされます。例えば,'a-b'と指定した場合は名前として解釈しますが,'a - b'や'a -b'と指定した場合は,XQuery算術式として解釈します。
XQuery算術式の例を次に示します。
項番 | 例 | 結果(XQueryデータ型) |
---|---|---|
1 | 4 - 2 | 2 (xs:int) |
2 | 5 div 2 | 2.5 (xs:decimal) |
3 | 5 idiv 2 | 2 (xs:int) |
4 | 5 mod 2 | 1 (xs:int) |
ノードから構成されるXQueryシーケンスを順序付けられた集合として,和集合演算,共通集合演算又は差集合演算を行った結果のXQueryシーケンスを返却します。
又は,XQuery単項式の評価結果をそのまま返却します。
XQueryシーケンス集合演算式 ::= XQuery和集合式 XQuery和集合式 ::= {XQuery共通集合式|XQuery差集合式} 〔{union|垂直棒} {XQuery共通集合式|XQuery差集合式}〕… XQuery共通集合式 ::= XQuery単項式 〔intersect XQuery単項式〕… XQuery差集合式 ::= XQuery単項式 〔except XQuery単項式〕… |
union又は垂直棒(|)を指定した場合は,XQuery共通集合式又はXQuery差集合式の評価結果である二つのXQueryシーケンス中に含まれる異なるすべてのノードから構成されるXQueryシーケンスを求めます。
XQuery共通集合式又はXQuery差集合式を単独で指定した場合は,そのXQuery共通集合式又はXQuery差集合式の評価結果をそのまま返却します。
intersectを指定した場合は,XQuery単項式の評価結果である二つのXQueryシーケンスの両方に含まれる異なるすべてのノードから構成されるXQueryシーケンスを求めます。
XQuery単項式を単独で指定した場合は,そのXQuery単項式の評価結果をそのまま返却します。
exceptを指定した場合は,一つ目のXQuery単項式の評価結果であるXQueryシーケンスに含まれるが,二つ目のXQuery単項式の評価結果であるXQueryシーケンスに含まれない異なるすべてのノードから構成されるXQueryシーケンスを求めます。
XQuery単項式を単独で指定した場合は,そのXQuery単項式の評価結果をそのまま返却します。
XQuery中のXQueryシーケンス集合演算式(union,intersect,及びexcept)とSQLの問合せ本体中の集合演算(UNION,及びEXCEPT)では,評価順序が異なりますので注意してください。
<XQueryシーケンス集合演算式の例と結果>
項番 | 例 | 結果 |
---|---|---|
1 | (A,B) union (A,B) | (A, B) |
2 | (A,B) union (B,C) | (A, B, C) |
3 | (A,B) intersect (A,B) | (A, B) |
4 | (A,B) intersect (B,C) | (B) |
5 | (A,B) except (A,B) | () |
6 | (A,B) except (B,C) | (A) |
XQuery値式に対して,単項演算を行った結果を返却します。
又は,XQuery値式の評価結果をそのまま返却します。
XQuery単項式 ::= 〔{-|+}〕… XQuery値式 |
単項演算子(-, +)を指定した場合は,XQuery値式に対して,単項演算を行った結果を返却します。
XQuery値式を単独で指定した場合は,XQuery値式の評価結果をそのまま返却します。
各演算子の意味と機能を次の表に示します。
表1-95 XQuery単項式での演算子の機能
項番 | 演算子 | 意味 | 機能 |
---|---|---|---|
1 | - | 負符号 | 符号を反転します。 |
2 | + | 正符号 | 符号を反転しません。 |
XQuery単項式では,次に示す手順で単項演算を行います。
XQueryパス式を評価した結果を返却します。
XQuery値式 ::= XQueryパス式 |
評価する値をXQueryパス式で指定します。
XQueryパス式は,XQueryデータモデルでのノードを特定し,その評価結果を返却します。
XQueryパス式 ::= {/〔相対パス式〕 | //相対パス式 | 相対パス式} 相対パス式 ::= ステップ式 〔{/ | // }ステップ式 〕… ステップ式 ::= {軸ステップ式 | フィルタ式} 軸ステップ式 ::= 軸ステップ〔 XQuery述語 〕… 軸ステップ ::= {軸 {名前テスト |種別テスト}| 省略軸ステップ} 名前テスト ::= {修飾名 | * | 接頭辞:* | *:局所名} 省略軸ステップ ::= {〔@〕{名前テスト | 種別テスト}|.. } フィルタ式 ::= XQuery基本式〔 XQuery述語 〕… XQuery述語 ::= 左角括弧 XQuery式 右角括弧 |
文脈項目のノードが属する木の根となるノードを特定します。
文脈項目がノードでない場合はエラーになります。
文脈項目のノードが属する木の根となるノード及びそのノードが持つすべての子孫ノードを特定します。
文脈項目がノードでない場合はエラーになります。
XQueryパス式の先頭以外で指定する'/'は,ステップ式の区切りを意味します。ステップ式を評価して得られたXQueryシーケンスは,左側から右側に向かって評価されます。
例えば,'E1/E2'という相対パス式は,次のように評価します。
斜線の左側のステップ式を評価した結果のXQueryシーケンスは,基本単位値を含むことはできません。
'/descendant-or-self::node()/'の省略記法です。
左側に指定したステップ式を評価結果した後の各文脈項目での,子孫ノード及び文脈項目自身から構成されるXQueryシーケンスに対して右側に指定したステップ式を評価します。
二つの斜線の左側のステップ式を評価した結果のXQueryシーケンスは,基本単位値を含むことはできません。
軸ステップ式は,文脈項目を基点として,指定された木のたどり方で到達可能なノードに対して,指定された名前,ノードの種別及び条件に従って絞り込んだ結果のノードのXQueryシーケンスを返します。このXQueryシーケンス中のノードが次の文脈項目になります。
文脈項目がノードでない場合はエラーになります。
軸ステップは,文脈項目を基点として,指定された軸を経由して到達可能なノード中の,名前テスト又は種別テストに合致するノードのXQueryシーケンスを返します。このXQueryシーケンス中のノードが次の文脈項目になります。
表1-96 軸の一覧
項番 | 軸 | 説明 | 文脈位置の割り当て |
---|---|---|---|
1 | child:: | 子ノードを示します。 | 文書順 |
2 | descendant:: | 子孫ノードを示します。 | |
3 | attribute:: | 文脈項目であるノードに属する属性ノードを示します。 | |
4 | self:: | 文脈項目であるノード自身を示します。 | |
5 | descendant-or-self | 子孫ノード及び文脈項目であるノード自身を示します。 | |
6 | following-sibling:: | 文脈項目であるノードの兄弟となるノードの中で,後の文書順序にあるノードを示します。文脈項目であるノードが属性ノードである場合,結果は空のXQueryシーケンスです。 | |
7 | following:: | 文脈項目であるノードの子孫ではなく,後の文書順序にあるノードを示します。なお,属性ノードは選択されません。 | |
8 | parent:: | 親ノードを示します。文脈項目であるノードが親ノードを持たない場合,結果は空のXQueryシーケンスです。 | |
9 | ancestor:: | 祖先ノードを示します。 | 逆文書順 |
10 | preceding-sibling:: | 文脈項目であるノードの兄弟となるノードで,前の文書順序にあるノードを示します。文脈項目であるノードが属性ノードの場合,結果は空のXQueryシーケンスです。 | |
11 | preceding:: | 文脈項目であるノードの祖先でなく,前の文書順序にあるノードを示します。なお,属性ノードは含まれません。 | |
12 | ancestor-or-self:: | 祖先ノードと,文脈項目であるノード自身を示します。 |
図1-17 軸
軸で指定されたたどり方で到達可能なノード中から,名前が合致するノードを絞り込む場合に指定します。
軸で指定されたたどり方でたどって得られたノード中から,種別が合致するノードを絞り込む場合に指定します。
種別テストには,次の表に示すものがあります。
表1-97 種別テスト一覧
項番 | 種類 | 指定方法 | 説明 |
---|---|---|---|
1 | 文書テスト | document-node() | 文書ノードに合致します。 |
2 | document-node(要素テスト) | 要素ノードを子ノードとして必ず一つだけ持ち,その他の子ノードがコメントノード又は処理命令ノードだけである文書ノードのうち,子ノードの要素ノードが要素テストに合致する文書ノードに合致します。 | |
3 | 要素テスト | element() | 任意の要素ノードに合致します。 |
4 | element(*) | ||
5 | element(修飾名) | XML要素のうち,指定した修飾名の展開後修飾名と等価な展開後修飾名を持つ要素ノードに合致します。 | |
6 | 属性テスト | attribute() | 任意の属性ノードに合致します。 |
7 | attribute(*) | ||
8 | attribute(修飾名) | XML属性のうち,指定した修飾名の展開後修飾名と等価な展開後修飾名を持つ属性ノードに合致します。 | |
9 | 処理命令テスト | processing-instruction() | 任意の処理命令ノードに合致します。 |
10 | processing-instruction(処理命令ターゲット) | 処理命令ノードのうち,指定した処理命令ターゲットと一致する処理命令ターゲットプロパティの値を持つ処理命令ノードに合致します。 | |
11 | コメントテスト | comment() | 任意のコメントノードに合致します。 |
12 | テキストテスト | text() | 任意のテキストノードに合致します。 |
13 | 任意種別テスト | node() | 任意の種別のノードに合致します。 |
軸ステップを簡略化して記述する場合に指定します。
表1-98 省略軸ステップの指定例
項番 | 省略軸ステップ | 同じ意味を持つ省略しない記法 | 意味 |
---|---|---|---|
1 | /elem/ElemName | /elem/child::ElemName | 「elem」評価後での文脈項目の子ノード中の,「ElemName」という名前の子ノードを意味します。 |
2 | /elem/@AttrName | /elem/attribute::AttrName | 「elem」評価後での文脈項目の属性ノード中の,「AttrName」という名前の属性ノードを意味します。 |
3 | /elem/attribute() | /elem/attribute::attribute() | 「elem」評価後での文脈項目のすべての属性ノードを意味します。 |
4 | /elem/.. | /elem/parent::node() | 「elem」評価後での文脈項目の親ノードを意味します。 |
XQuery基本式を評価します。XQuery述語を指定した場合は,XQuery基本式の評価結果であるXQueryシーケンスのXQuery項目をXQuery述語で指定した条件で絞り込みます。
文脈項目を絞り込む条件をXQuery式で指定します。
各文脈項目に対してXQuery述語に指定したXQuery式を評価します。
XQuery述語の評価結果は,次のようになります。
XQueryパス式の例を次に示します。
項番 | 例 | 説明 |
---|---|---|
1 | child::書籍情報 | 文脈項目の子ノードである「書籍情報」要素ノードを選択します。 |
2 | 書籍情報 | 'child::書籍情報'の省略記法です。 |
3 | attribute::書籍ID | 文脈項目の書籍ID属性ノードを選択します。 |
4 | @書籍ID | 'attribute::書籍ID'の省略記法です。 |
5 | attribute::* | 文脈項目に属するすべての属性ノードを選択します。 |
6 | parent::element() | 文脈項目の親ノードである要素ノードを選択します。 |
7 | 書籍情報[カテゴリ="プログラミング"] | 子ノードとして,「カテゴリ」要素ノードを持ち,その型付き値プロパティの値が"プログラミング"である「書籍情報」要素ノードを選択します。 |
8 | 書籍情報[@書籍ID = "12345"] | 文脈項目の子ノードであり,書籍ID属性の値が"12345"である「書籍情報」要素ノードを選択します。 |
9 | 著者[2] | 文脈項目の子ノードである,2番目の「著者」要素ノードを選択します。 |
XQueryパス式を構成する基本的な構成要素です。
XQuery基本式には,次に示すものがあります。
XQuery基本式 ::= {XQuery定数|XQuery変数参照| 括弧付きXQuery式|文脈項目式|XQuery関数呼出し} |
各XQuery基本式について説明します。
XQuery定数は,基本単位値を直接表現するための式です。解析時に値が決定します。
XQuery中で指定できるXQuery定数を次の表に示します。
表1-99 XQuery定数
項番 | XQuery定数 | 結果 | 解釈するXQueryデータ型 | ||
---|---|---|---|---|---|
形式 | 説明 | ||||
1 | XQuery数値定数 | XQuery整数定数※ | 〔符号〕符号なし整数 (例) -123 45 6789 |
符号なし整数は,数字の並びで表します。 符号は,+又は−で表します。 |
xs:int |
2 | XQuery10進数定数 | 〔符号〕〔整数部〕.〔小数部〕 (例) 12.3 -456. .789 |
整数部と小数部は符号なし整数で表します。整数部か小数部のどちらか一方は必ず指定する必要があります。 | xs:decimal | |
3 | XQuery浮動小数点定数 | 仮数{E|e}指数 (例) 1.0E2 .5E+67 |
仮数は,XQuery整数定数又はXQuery10進数定数で表します。指数は1〜3けたのXQuery整数定数で表します。指数は10のべき乗を表します。 | xs:double | |
4 | XQuery文字列定数 | {"文字列"| '文字列'} (例) "HiRDB" 'HITACHI' '''06.9.13' |
文字列は文字の並びで表します。 引用符で囲んだ文字列中に引用符そのものを指定する場合は,引用符を2個続けて書いてください。 アポストロフィで囲んだ文字列中にアポストロフィそのものを指定する場合は,アポストロフィを2個続けて書いてください。 次に示す文字列は,対応する文字を意味します。
|
xs:string |
XQuery変数参照は,XQuery式中でXQuery変数の値を返却します。
XQuery変数参照 ::= $ XQuery変数名 |
参照したいXQuery変数の修飾名を指定します。
指定した修飾名を持つ有効なXQuery変数の値を返却します。該当するXQuery変数が複数該当する場合は,最も内側のFLWOR式やXQuery限定式で指定したXQuery変数の値を返却します。
変数名がPRICEであるXQuery変数の値より大きい型付き値プロパティを持つ「価格」XML要素を,子のXML要素として持つ「書籍情報」XML要素に表します。
/書籍情報[価格> $PRICE] |
XQuery式を評価した結果を返却します。括弧で囲まれたXQuery式の評価を先に行う場合に使用します。
また,括弧内にXQuery式を指定しない場合は,空のXQueryシーケンスを表します。
括弧付きXQuery式 ::= ( 〔 XQuery式 〕 ) |
括弧付きXQuery式の例を次に示します。
項番 | 例 | 結果 | 説明 |
---|---|---|---|
1 | (2 + 4) * 5 | ( 30 ) | 括弧で囲まれた'2+4'が先に評価されます。'2+4'を括弧で囲わない場合は,XQuery乗除算式である'4*5'を先に評価するため,結果は22になります。 |
文脈項目式は,文脈項目式を評価する直前の文脈項目を構成するXQueryシーケンスを返却します。
文脈項目式 ::= ピリオド ピリオド ::= . |
文脈項目式の例を次に示します。
項番 | 例 | 結果 | 説明 |
---|---|---|---|
1 | (1 to 20)[ . mod 5 eq 0] | (5, 10, 15, 20) | まず,XQuery範囲式により,1から20までの整数値から構成されるXQueryシーケンスが生成されます。生成されたXQueryシーケンスの各XQuery項目が文脈項目となり,範囲式に続くXQuery述語が評価されます。この評価の結果が真となるXQuery項目から構成されるXQueryシーケンスが結果となります。 |
XQuery関数呼出しは,XQuery関数を呼び出し,評価した結果を返却します。
関数呼出し ::= XQuery関数名 ( 〔 引数 〔 , 引数〕… 〕 ) 引数 ::= XQuery式単独 |
呼び出すXQuery関数の修飾名を指定します。
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.