このセクションでは XML Transformer ツールの構成および適用の方法について説明します。このツールは XML を変換するために XSLT のような機能を提供します。
このセクションの内容:
Table of Contents | ||
---|---|---|
|
XML Transformer ツールとは
多くの場合、SOAP メッセージには大きな XML ペイロードが含まれます。ペイロードのごく一部にだけ着目し、レスポンスまたはリクエストの少数の要素だけを使用して回帰コントロールを作成したい場合もあるでしょう。しかし、他の要素を一つずつ無視するのは非常にめんどうな可能性があります。このような場合、XML Transformer ツールを使用すると効率的です。
XML Transformer ツールは XML を変換するために XSLT のような機能を提供します。このツールは、SOAP レスポンスまたはリクエストの少数の要素だけを使って回帰コントロールを作成したい場合に非常に便利です。
XML Transformer ツールの構成
XML Transformer を構成するには、次の操作を行います。
- メインのテスト スイート ノードを選択して [テストまたは出力の追加...] ボタンをクリックします。
- [テストの追加] ウィザードで [標準テスト] > [XML Transformer] を選択し、[終了] ボタンをクリックします。テスト スイートに [XML Transformer] ノードが表示されます。
- [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 値を使用して回帰コントロールを追加できます。XML Transformer を含む SOAP Client ノードを右クリックし、ショートカット メニューの [回帰コントロールの作成] をクリックします。 XML Transformer ノードの下に [変換された XML] > [Diff] ノードが表示されます。このノードを選択すると、XML Transformer ツールで [Selected XPaths] リストに選択した XPath が表示されます。
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 レスポンスの完全性を維持
Anchor | ||||
---|---|---|---|---|
|
デフォルトでは空要素は抽出されません。 したがって、書き込み可能なデータ ソースで使用する XML レスポンスの完全性に影響をあたえる可能性があります。たとえば、
Code Block |
---|
<e>5</e> <e/> <e>6</e> |
Code Block |
---|
ROW 1 = 5 ROW 2 = 6 |
- [空要素の抽出方法] をオンにします。
- (任意) すべての空の抽出された要素に追加するプレースホルダー値が欲しい場合、任意のプレースホルダー文字列を隣のテキスト フィールドに指定します。
- 抽出対象を指定する XPath を選択し、 [修正] をクリックします。
- 抽出オプションが [内容のみ] であることを確認します。
関連する XPath の最後にある /text() を削除します。たとえば、現在の XPath が以下の場合、
Code Block /*[local-name(.)="Envelope" and namespace-uri(.)="http://schemas.xmlsoap.org/soap/envelope/"]/.../*[local-name(.)="i" and namespace-uri(.)=""][1]/text()
次のように修正します。
Code Block /*[local-name(.)="Envelope" and namespace-uri(.)="http://schemas.xmlsoap.org/soap/envelope/"]/.../*[local-name(.)="i" and namespace-uri(.)=""][1]
- 必要に応じて追加の XPath にステップ 3-5 を繰り返します。