7.19.1 変換先ノードへの代入
XPathファンクションを使用して変換先ノードに値を代入する方法を説明します。
- 〈この項の構成〉
(1) 単純型ノード値の代入
単純型ノードの値を変換先ノードへ代入する場合は,単純型ノードのロケーションパスをXPathファンクションに指定します。
- 参考
-
ロケーションパスは,XML文書の階層構造の中から特定のノードを指定するための記述方法です。
ロケーションパスの詳細な仕様については,「XML Path Language (XPath) Version 1.0‐2 Location Paths」を参照してください。
次に代入例を示します。
上記の例では,変換元の「/InputData/value」の値が変換先の「/OutputData/result」に代入されます。
(2) 属性ノード値の代入
属性ノードの値を変換先ノードへ代入する場合は,属性ノードのロケーションパスをXPathファンクションに指定します。属性ノードは「@属性名」と表記します。
次に代入例を示します。
上記の例では,変換元の「/InputData/@id」の値が変換先の「/OutputData/result」に代入されます。
(3) 名前空間に属するノード値の代入
名前空間に属するノードの値を変換先ノードへ代入する場合は,名前空間接頭辞を含んだロケーションパスをXPathファンクションに指定します。
次に代入例を示します。
上記の例では,変換元の「/sample:InputData/sample:value」の値が変換先の「/OutputData/result」に代入されます。
デフォルト名前空間に属するノードの値を変換先ノードへ代入する場合は,名前空間URIを明示的に指定する必要があります。
上記の例では,変換元の「/InputData/value」の値を変換先の「/OutputData/result」に代入する場合,次のXPath式となります。
(4) 演算結果の代入
演算子を使用することで変換先ノードへ演算の結果を代入することができます。
次に代入例を示します。
上記の例では,変換元の「/InputData/value」の3倍の値が変換先の「/OutputData/result」に代入されます。
演算子の仕様については,「XML Path Language (XPath) Version 1.0‐3 Expressions」を参照してください。
(5) XPath関数の結果の代入
XPath関数の結果を変換先ノードへ代入することができます。
次に代入例を示します。
上記の例では,namespace-uri関数の結果(変換元sample:InputDataの名前空間URI)が変換先の「/OutputData/result」に代入されます。
XPath関数の仕様については,「XML Path Language (XPath) Version 1.0‐4 Core Function Library」を参照してください。
(6) 複数変数指定時のノード値の代入
変換元に複数の変数を指定している場合のノード値の代入方法を次に示します。
(a) 1番目に定義されている変数のノード値
1番目に定義されている変数のノード値の代入は,(1)〜(3)で示した方法と同じです。
次に代入例を示します。
(b) 2番目以降に定義されている変数のノード値
2番目以降に定義されている変数のノード値を代入する場合は,(1)〜(3)で示したロケーションパスの先頭に”$変数名”を付与します。
次に代入例を示します。