文書モデルに対する有効な XML SELECT
コマンドは、SELECT ... FROM ... WHERE ... ORDER BY ...
という形式です。その他のSELECT
コマンド句の使用は禁止されています。
XML要素の完全修飾名は次のようになります:
"model"
.
"document name"
.[path
to
element].
"element name"
属性の完全修飾名は次のようになります:
"model"
.
"document name"
.[path
to
element].
"element name"
.[@]
"attribute name"
要素や属性の部分修飾名は、部分名が一意であれば使用できます。
FROM Clause
FROM
句は、生成する文書を指定します。文書名は他の仮想グループと似ています: "model"."document name"
.
Syntax Rules
FROM
句には、希望する文書を指定する単項式句を1つだけ含めることができます。
SELECT
Clause
SELECT
句は、XML文書のどの部分を出力用に生成するかを決定します。
以下は構文の例です:
SELECT
*
FROM
model.doc
SELECT
model.doc.root.parent.element.*
FROM
model.doc
SELECT
element, element1.@attribute
FROM
model.doc
Syntax Rules
SELECT *
と は等価で、文書のすべての要素と属性を出力するように指定します;SELECT "xml"
- XML クエリの
SELECT
句には、*
、"xml"
、または指定されたドキュメントの要素および属性参照のみを含めることができます。それ以外の表現は使用できません; SELECT
句が要素または属性参照(*
または"xml"
以外)を含む場合、指定された要素、属性、およびそれらの祖先要素だけが生成された文書に含まれます;element.*
は、要素、その属性、すべての子コンテンツを出力することを指定します。
WHERE Clause
WHERE
句は、基礎となるマッピングクラスに含まれる値に基づいて、生成されたドキュメントからコンテンツをフィルタリングする方法を指定します。ほとんどの述語は、XML SELECT
コマンドで有効です。しかし、異なる文書部分からの値参照を組み合わせることは、常に許されるとは限りません。
CRITERIA は、マッピング・クラスに直接関連するコンテキストに論理的に適用されます。ルート・マッピング・クラスから始めて、出力ドキュメントのトップ・レベルの繰り返し要素をすべて記述するルート・コンテキストがあります。ルートまたはその他のコンテキストに適用された Criteria は、関連するマッピング・クラスのクエリを変更して、子孫マッピング・クラスからの値のチェックを含む、Criteria の効果を適用します。
以下は構文の例です:
SELECT
element, element1.@attribute
FROM
model.doc
WHERE
element1.@attribute = 1
SELECT
element, element1.@attribute
FROM
model.doc
WHERE
context(element1, element1.@attribute) = 1
Syntax Rules
- 各 Criteria の接続詞は、単一のコンテキストを参照する必要があり、マッピング・クラスに適用される基準、
rowlimit
関数を含む基準、またはrowlimitexception
関数を含む基準にすることができます; - マッピング・クラスに適用される Criteria は、コンテキスト関数を介してそのマッピング・クラスに関連付けられます。コンテキスト関数がないことは、Criteriaがルートコンテキストに適用されることを意味します;
あるコンテキストにおいて、関係するすべてのマッピング・クラスがコンテキストの親、コンテキスト自体、またはコンテキストの子孫のいずれかである場合に限り、Criteria は複数のマッピング・クラスにまたがることができます。
Sibling Root Mapping Classes
Implied root context user criteria against a document model with sibling root mapping classes are not generally semantically correct. It is applied as if each conjunct is applied to only a single root mapping class. This behaviour is the same as in prior releases but may be fixed in a future release.
XML SELECT Command-specific Functions
XML SELECT
コマンド関数はスカラー関数に似ていますが、WHERE
句のヒントとして機能します。これらの関数は、XML SELECT
コマンドでのみ有効です。
Context Function
CONTEXT(arg1, arg2)
接続詞を含むコンテキストを選択します。
Syntax Rules
- コンテキスト関数は接続詞全体に適用されます。
- 最初の引数は、criteria conjunct が適用されるコンテキストのマッピングクラスからの要素または属性参照でなければなりません。
- 2番目のパラメータは関数の戻り値です。
rowlimit Function
この関数は、指定されたコンテキストで処理される行を制限します。
ROWLIMIT(arg)
Syntax Rules
- 最初の引数は、行制限が適用されるコンテキストのマッピング・クラスからの要素または属性参照でなければなりません;
rowlimit
関数は、右側の式が正の整数または制限する行に等しい等式比較基準で使用する必要があります;- 行LIMITまたは行LIMIT例外は、与えられたコンテキストに1つだけ適用できます。
rowlimitexception Function
この関数は、与えられたコンテキストに対して処理される行数を制限し、行数を超えた場合は例外をスローします。
ROWLIMITEXCEPTION(arg)
Syntax Rules
- 最初の引数は、行数制限例外が適用されるコンテキストのマッピング・クラスからの要素または属性参照でなければなりません;
rowlimitexception
関数は、右側の式が正の整数または制限する行に等しい等式比較基準で使用する必要があります;- 行数制限または行数制限例外は、与えられたコンテキストに1つだけ適用できます。
ORDER BY Clause
XML SELECT
コマンドのORDER BY
句は、参照されるマッピング・クラス・クエリの順序を指定します。
Syntax Rules
- 各項目による順序は、マッピング・クラスからの出力値に結び付けられた要素または属性参照でなければなりません;
- 順序または項目による順序は、それぞれのマッピングクラスに適用される相対順序です。