このセクションでは XML Transformer ツールの構成および適用の方法について説明します。このツールは XML を変換するために XSLT のような機能を提供します。
このセクションの内容:
XML Transformer ツールの構成
以下のオプションを設定できます:
- 名前: Transformer ツールの名前を指定します。
- ツリー/リテラル/要素: 期待する XML レスポンスを指定します。期待する XML をリテラル、ツリー、または簡単な要素フォームで参照するために、 [リテラル] タブ、 [ツリー] タブ、および [要素] タブが利用可能です。
- 選択された要素: パラメータライズした値として追加したい要素を指定します。
- 要素の抽出: 要素を追加するには、 [選択された要素] リストから値を選択し、 [要素の抽出] ボタンをクリックします。追加した値は [選択された要素] リストに、値が選択されたツールに関連するデータ ソース列名と値名とともに表示されます。
- 削除: XPath を削除するには、 [選択された要素] リストから値を選択し、 [削除] をクリックします。
- 修正: XPath を修正するには、 [選択された要素] リストから値を選択し、 [修正] をクリックします。[選択した XPath の変更] ダイアログが表示され、次のオプションを設定できます。
- XPath: 選択した XPath が表示されます。より一般的な XPath を求めている場合、リスト インデックスに異なる番号を入力します。たとえば、 2 番目のオカレンスのみ抽出したい場合は example [1] を [2] に変更します。XPath テキストの編集が終わったら、 [XPath の評価] をクリックして XPath 書式を検証し、 [OK] をクリックします。
- オプション: 要素全体または内容のみを抽出できます。
- 要素全体: XPath 全体を出力します。たとえば、 XPath/Parent は <parent>VALUE</parent> を出力します。次の [要素全体オプション] を構成できます。
- 抽出要素のインデックス: デフォルト値は 1 です。このオプションは、要素が 2 回以上発生した場合にどの要素を抽出するかを制御します。
- 内容のみ: [内容のみ] を選択すると、値のみを出力します。たとえば、 XPath/Parent は VALUE を出力します。[内容のみ] は選択した要素のテキスト内容を抽出します。[すべての子ノード] は、選択した要素の子ノードをすべて抽出します。
- XPath Evaluation: [XPath の評価] ボタンをクリックすると、期待する XML に対して XPath 式を適用した結果を表示します。
- 期待される XML の保存: 期待される XML を保存するかどうかを指定します。
- XML 出力の正規化: 抽出した XML 要素を正規化するかどうかを指定します。このオプションがオンであり、かつ要素全体が抽出された場合、同じ要素中で宣言されていない名前空間を参照する接頭辞が要素中にあると、必要な名前空間の宣言が抽出された要素に追加されます。
- 変更を許可: XPath の変更を許可するかどうかを指定します。このチェックボックスをオンにすると、 [選択された要素] リストに [抽出] タブと [変更] タブが表示されます。XPath を変更するには、 [変更を許可] チェックボックスをオンにし、 [変更] タブを選択します。そして [XPath の追加] ボタンをクリックして XPath を追加し、 [修正] ボタンをクリックして XPath を変更します。[選択した XPath の変更] ダイアログが表示され、次のオプションを設定できます。
- XPath: 選択した XPath が表示されます。選択した XPath を編集して検証するには、 XPath テキストを編集してから [XPath の評価] ボタンをクリックします。そして [OK] をクリックします。
- 変更のタイプ: 入力した値が XML を変更する方法を選択できます。
- 後に付加: 変更した値が XPath の最後に追加されます。
- 前に付加: 変更した値が XPath の先頭に追加されます。
- 置換: 変更した値によって XPath 全体が置換されます。
- 変更の値: XPath を変更したい値を入力できます。
- 空要素の抽出方法: 空の XML 要素を抽出するかどうかを指定します。このチェックボックスをオンにした場合、右側のテキスト フィールドで指定した文字列によって、抽出された要素の空コンテンツが置換されます。注意: このオプションを使用する場合は、さらに構成が必要です。 「Handling Empty Elements to Maintain the Integrity of the XML Response」を参照してください。
- 出力を XML でラップする: XML Transformer ツールの出力を整形式の XML にするかどうかを指定します。
このオプションがオンの場合、コンテンツは整形式の XML で出力されます。たとえば、以下の例の XML エンコードされた値は、
<foo
次のように出力されます:
<root> <ElementName><foo></ElementName> </root>
XPath のパラメータライズ
XPath が レスポンダー スイートの 変数、環境変数、およびデータ ソース値を参照するようにパラメータライズできます。 変数を参照するための構文は、${myVariableName} です。 XML Data Bank の値と XML Data Source の値を参照する構文は ${myColumnName} です。${myColumnName}.
たとえば、データ ソース列名が ${XPath Key} の場合、次の構文を使用できます。
/*[local-name(.)="bookstore" and namespace-uri(.)=""]/*[local-name(.)="book" and
namespace-uri(.)=""][child::node()[local-name(.)="title" and text()="${XPath Key}"]]
空要素を処理して XML レスポンスの完全性を維持
デフォルトでは空要素は抽出されません。 したがって、書き込み可能なデータ ソースで使用する XML レスポンスの完全性に影響をあたえる可能性があります。たとえば、
<e>5</e> <e/> <e>6</e>
ROW 1 = 5 ROW 2 = 6
- [空要素の抽出方法] をオンにします。
- (任意) すべての空の抽出された要素に追加するプレースホルダー値が欲しい場合、任意のプレースホルダー文字列を隣のテキスト フィールドに指定します。
- 抽出対象を指定する XPath を選択し、 [修正] をクリックします。
- 抽出オプションが [内容のみ] であることを確認します。
関連する XPath の最後にある /text() を削除します。たとえば、現在の XPath が以下の場合、
/*[local-name(.)="Envelope" and namespace-uri(.)="http://schemas.xmlsoap.org/soap/envelope/"]/.../*[local-name(.)="i" and namespace-uri(.)=""][1]/text()
次のように修正します。
/*[local-name(.)="Envelope" and namespace-uri(.)="http://schemas.xmlsoap.org/soap/envelope/"]/.../*[local-name(.)="i" and namespace-uri(.)=""][1]
- 必要に応じて追加の XPath にステップ 3-5 を繰り返します。