7.5.24 変換先ノードやファンクションの入力値にXPath式を指定する
変換先ノードやファンクションの入力値にXPath式を指定します。
- 〈この項の構成〉
(1) 使用するファンクション
変換先ノードやファンクションの入力値にXPath式を指定するには,XPathファンクションを使用します。
(2) 設定手順
変換先ノードやファンクションの入力値にXPath式を指定する手順を次に示します。
-
パレットからXPathファンクション(xpath)を選択して,マッピングビューアに配置します。
-
次のどちらかの方法で[XPath]ダイアログを表示させます。
-
XPathファンクションを右クリックして,[設定]を選択します。
-
XPathファンクションをダブルクリックします。
[XPath]ダイアログの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「1.6.42 XPathダイアログ」を参照してください。
-
-
[XPath]ダイアログで値を入力します。
XPathファンクションのファンクション名とXPath式を入力します。
-
[OK]ボタンをクリックします。
XPathファンクションの使用方法については,「7.19 XPathファンクションの使用方法」を参照してください。
(3) 指定できるXPath
XPathの仕様の詳細については,マニュアル「XML Processor ユーザーズガイド」を参照してください。ここでは,XPathファンクションで指定する文字列などについて説明します。
-
エスケープが必要な文字は,データ変換定義の生成時に次に示す実体参照,または文字参照に置き換えます。
-
左アングルブラケット(<):<
-
右アングルブラケット(>):>
-
アンパサンド(&):&
-
ダブルクォーテーション("):"
-
アポストロフィ('):'
-
-
実体参照,および文字参照を含むXPath式は使用できません。
-
XPathのid関数は使用できません。
-
XSLTで定義されている関数や拡張関数は使用できません。
-
N対1変換(入力スキーマを複数指定した場合の変換)で,2番目以降に定義されているスキーマ内のパスをXPathファンクションで指定する場合,XPath式は「$<スキーマの論理名(=BPの変数名)>/<要素パス>」としてください。なお,「$」を使用した変数の指定は,この指定以外はできません。
指定例を次の図に示します。
図7‒25 N対1変換でのパスの指定例 -
N対1変換時で,次のすべての条件に当てはまる場合は,XPath関数のnamespace-uriを使用してXPath式を指定してください。
-
指定するパスに名前空間接頭辞が含まれる
-
1の名前空間接頭辞がほかのスキーマですでに定義されていて,URIが異なる
指定できないパスの例を次の図に示します。
図7‒26 N対1変換時にパスが指定できないケース 上記の図の例では,XPath関数のnamespace-uriを使用することで,名前空間接頭辞を含まないXPath式を指定できます。変数input5のstr1要素を指定する場合は,次に示すXPath式となります。
$input5/*[local-name()='root' and namespace-uri()='test2']/…/*[local-name()='str1' and namespace-uri()='test2']
-
-
デフォルト名前空間を含むパスを指定する場合は,XPath関数のnamespace-uriを使用してURIを指定する必要があります。
-
次に示す名前空間接頭辞は使用できません。
-
cscから始まる名前空間接頭辞
-
xsl
-
xsi
-
(4) 検証処理
XPathファンクションで実施する検証について次に示します。
(a) ダイアログおよびマッピング定義での検証
XPathファンクションでは,ダイアログで[OK]ボタンをクリックしたとき,またはマッピング定義の検証を実行したときに,構文をチェックします。このとき,XPath式に不正がある場合はエラーを表示します。
(b) 注意事項
XPathファンクションの検証処理は,指定したXPath式がXPathおよびXSLTの構文に沿っているかどうかを確認するものであるため,構文として正しい場合でも,パスの指定ミスや関数の使用誤りなどによって,意図した変換にならないケースがあります。そのため,XPathファンクションを使用したマッピングが意図した変換になっていることを,csctransformコマンドでデータ変換を実行して確認してください。
csctransformコマンドの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「csctransform(データ変換のテスト)」を参照してください。