このセクション:
•名前空間
•外部関数
•照合順序
XMLSpy のXQuery 1.0 エンジンは、World Wide Web Consortium(ワールド・ワイド・ウェブ・コンソーシアム) (W3C) の2010 年 12 月 14 日版の XQuery 1.0 勧告に準拠します。 XQuery 標準は、多数の機能の実装についての裁量を提供します。 下には、XQuery 1.0 エンジンがどのようにこれらの機能を実装するかについて説明するリストが下に挙げられています。
XQuery 1.0 エンジン はスキーマを認識します。
UTF-8 および UTF-16 文字のエンコードは、サポートされています。
以下の 名前空間 URI と関連するバインドは定義済みです。
名前空間 |
プレフィックス |
名前空間 URI |
XML スキーマ型 |
xs: |
http://www.w3.org/2001/XMLSchema |
スキーマインスタンス |
xsi: |
http://www.w3.org/2001/XMLSchema-instance |
内蔵の 関数 |
fn: |
http://www.w3.org/2005/xpath-functions |
Local 関数 |
local: |
http://www.w3.org/2005/xquery-local-functions |
次の点に注意してください:
•XQuery 1.0 エンジンは、上にリストされたプレフィックスを名前空間に対応するバウンドとして認識します。
•Since the 上にリストされた内蔵の 関数 名前空間は、 XQuery内のデフォルトの関数です。 内蔵の関数 が呼び出される際、名前空間、 fn: プレフィックス を使用する必要はありません。 (例えば、 string("Hello") がfn:string 関数を呼び出す場合。) しかし、プレフィックス fn: は、クエリプロローグ内で名前空間を宣言することなく内蔵の関数を呼び出す時に使用することができます。 (サンプル: fn:string("Hello")).
• クエリプロローグ内でdefault function 名前空間 式を宣言することにより、デフォルトの関数 名前空間をすることにより変更することができます。
•XML スキーマ 名前空間空の型を使用する場合、 プレフィックス xs: は、名前空間を明確に宣言することなく、また、これらのプレフィックスをクエリプロローグ内でバインドすることなく使用することができます。 (サンプル: xs:date および xs:yearMonthDuration。) XML スキーマ 名前空間のために、他のプレフィックスを使用する場合は、クエリプロローグ内で明確に宣言されている必要があります。 (サンプル: declare 名前空間 alt = "http://www.w3.org/2001/XMLSchema"; alt:date("2004-10-04").)
•untypedAtomic, dayTimeDuration, および yearMonthDuration データ型 が 23 January 2007 の CR 共に、XPath データ型 名前空間から XML スキーマ 名前空間へ移動されていることに注意してください。ですから以下となります: xs:yearMonthDuration。
関数のための名前空間、 型コンストラクタ、ノード テスト、が間違って割り当てられている場合、エラーが発生します。 しかし、一部の関数はスキーマデータ型と同じ名前を持つことに注意してください。 例: fn:string および fn:boolean。 (xs:string および xs:boolean は宣言されています) 名前空間 プレフィックス、関数または 型コンストラクタが使用されるか決定します。
XQuery 1.0 エンジンを使用して、実行される XQuery ドキュメント内の XMLドキュメントは、整形式である必要があります。 しかし、 XML スキーマに従い有効である必要はありません。 XML ファイル が外部スキーマと関連付けられ、また有効な場合、 ポストスキーマ検証情報が XML データのために生成され、クエリ検証のために使用されます。
静的分析フェーズは、外部レファレンスの存在 (例、モジュールのため)、呼び出された関数と変数が定義済みであるか、 など構文などのクエリのアスペクトをチェックします。静的分析フェーズでエラーが検知されると、実行は停止されます。
クエリが実際に作動中にランタイム中に動的な型チェックは実行されます。型がオペレーションの必要条件と整合性を持たない場合、エラーが報告されます。 例えば、 式 xs:string("1") + 1 は、エラーを返します。型 xs:string のオペランドを足し算のオペレーションが実行できないためです。
ライブラリモジュールは、再利用のため関数と変数を保管します。 XQuery 1.0 エンジンは単一の外部 XQuery ファイルに保管されているモジュールをサポートします。このようなモジュール ファイルはプロローグにターゲット名前空間に関連するモジュール宣言を含む必要があります。 以下はモジュールサンプルです:
module namespace libns="urn:module-library";
declare variable $libns:company := "Altova";
declare function libns:webaddress() { "http://www.altova.com" };
すべての関数および変数は、モジュールに関連した名前空間に属するモジュール内で宣言されています。モジュールはクエリプロローグ内の import module ステートメントを使用して XQuery ファイルにインポートする際に使用されます。 import module ステートメントは、 ライブラリモジュールファイル内で直接宣言された、関数と変数のみをインポートします。 例:
import module namespace modlib = "urn:module-library" at "modulefilename.xq";
| if | ($modlib:company = "Altova") |
| then | modlib:webaddress() |
| else | error("No match found.") |
外部関数 は、サポートされていません。例えば、 external キーワードを仕様する式など。以下参照:
declare function hoo($param as xs:integer) as xs:string external;
デフォルトの照合順序は、 Unicode コードポイントをベースにした文字列を比較する Unicode-コードポイント照合順序です。 その他にサポートされる照合順序は、 ICU 照合順序 は ここ にリストされるとおりです。特定の照合順序を使用する場合、サポートされる照合順序のリスト 内に与えられているとおり URI を提供します。fn:max と fn:min 関数を含む文字列の比較は、指定された照合順序により行われます。 照合順序オプションが指定されていない場合、 デフォルトの Unicode-コードポイント照合順序 が使用されます。
•xs:integer データ型には任意の精度があり、表記できる桁数に制限はありません。
•xs:decimal データ型には小数点の後に 20 桁の制限があります。
•xs:float と xs:double データ型には 15 桁の精度の制限があります。
Pragma 命令 は、サポートされていません。 発生した場合、 無視されフォールバックの式が検証されます。