文書モデルに対する有効な 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

  • 各項目による順序は、マッピング・クラスからの出力値に結び付けられた要素または属性参照でなければなりません;
  • 順序または項目による順序は、それぞれのマッピングクラスに適用される相対順序です。