XPath と XQuery 仕様情報

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  ユーザーマニュアル > インターフェイスと環境 > グラフィカルユーザインターフェース (GUI) > 出力ウィンドウ: XPath/XQuery >

XPath と XQuery 仕様情報

XPath 1.0 条件式

 

XPath 1.0 関数は名前空間プレフィックス無しで入力する必要があります。
4つのノードテストがサポートされています: node()text()comment()processing-instruction()

 

XPath 2.0 と 3.1 条件式

 

字列(例: 'Hello')や数値リテラル(例: 256)がサポートされます。XML スキーマ型をベースにしたその他のリテラルを作成するには、名前空間プレフィックスによるコンストラクター(例: xs:date('2004-09-02'))を使用します。XML スキーマ型に使用する名前空間プレフィックスは、XML 名前空間 http://www.w3.org/2001/XMLSchema に関連付けられている必要があり、その名前空間も XML ファイル内で宣言されている必要があります。
XPath の評価で使用される XPath 2.0 および XPath 3.1 関数は、名前空間 http://www.w3.org/2005/xpath-functions に所属しています。に所属しています。プレフィックス fn: は、慣習的にこの名前空間に関連付けられています。この名前空間は XPath の評価で使用されるデフォルトの関数名前空間で、関数にプレフィックスを与える必要はありません。プレフィックスを使用する場合は、そのプレフィックスが XML ドキュメント内で宣言されている XPath 関数の名前空間に関連付けられていることを確認してください。 関数使用の例: current-date() (関数の名前空間は XML ドキュメント内で宣言されていない)、fn:current-date() (関数名前空間が XML ドキュメント内で宣言されていないか、XML ドキュメント内で宣言されており、プレフィックス fn: に関連付けられています)。XML ドキュメント内で 関数名前空間が宣言されている場合でも、名前空間プレフィックスを省略することができます。この場合、その XPath 条件式で使用される関数は、関数のデフォルト名前空間のものとなります。
Altova XPath 拡張子は名前空間 http://www.altova.com/xslt-extensions 内にあります。

 

メモ:名前空間に関する点を要約すると、XML スキーマ名前空間からコンストラクターを使用する場合、XML ドキュメント内で XML スキーマ名前空間を宣言し、XPath 条件式では正しい名前空間プレフィックスを使用する必要がある、ということになります。XPath 関数に対してプレフィックスを使用する必要はありません。

 

Datatypes in XPath 2.0 and 3.1

XML スキーマを参照している XML ドキュメントに対して、XPath 2.0 および 3.1 条件式を評価しており、その XML ドキュメントが(スキーマに対して)妥当である場合、オペレーションにより暗黙的に目的のデータ型に変換されないデータ型に対して、コンストラクターまたはキャストを明示的に使用する必要があります。内蔵の XPath エンジンにより使用される XPath データモデルでは、XML ドキュメントから細分化されたノード値には全て、xs:untypedAtomic データ型が割り当てられています。xs:untypedAtomic 型は暗黙の型変換で通常上手く機能します。例えば、xs:untypedAtomic("1") + 1 という条件式の結果は、xs:untypedAtomic 値が加算演算子により、暗黙的に xs:double に変換されるため、 2 となります。算術演算子は、オペランドを暗黙的に xs:double に変換します。比較演算子は、比較の前に、オペランドを xs:string に変換します。

 

目的のデータ型への明示的な変換を行う必要がある場合もあります。例えば、2つの要素 startDateendDate があり、XML スキーマにて両者とも xs:date 型で定義されている場合、endDate - startDate という XPath 2.0 条件式ではエラーが発生します。この場合、xs:date(endDate) - xs:date(startDate) または (endDate cast as xs:date) - (startDate cast as xs:date) とすることで、xs:dayTimeDuration 型のシングルトンシーケンスが正しく評価されます。

 

メモ:XPath の評価で使用される XPath エンジンは、Altova XSLT エンジンで使用されるものと同一のもので、XSLT スタイルシート内で目的のデータ型に暗示的に変換されない XPath 2.0 および 3.1

 

文字とエンティティ参照の文字列長

文字ならびにエンティティ参照が、string-length() 関数の入力文字列として使用される場合、参照を解決することはできず、解決されていないテキスト文字列の長さが返されます。しかし XSLT 環境において、これら参照は意味を持つことになり、解決された文字列の長さが返されます。

 

XPath 2.0 および 3.1 関数サポート

付録を参照ください。

 

 


(C) 2018 Altova GmbH