Evaluate Response XPath アサーション

Evaluate Response XPath アサーションは、送信 XML レスポンス メッセージに対する特定の XPath クエリ パターンを設定するために使用されます。 このアサーションは、たとえば、異なるタイプの操作用にポリシーを異なるパスに分ける場合や、特別な顧客や高額のトランザクションに優先ルーティングを提供する場合に使用できます。
gateway90
Evaluate Response XPath
アサーションは、送信 XML レスポンス メッセージに対する特定の XPath クエリ パターンを設定するために使用されます。 このアサーションは、たとえば、異なるタイプの操作用にポリシーを異なるパスに分ける場合や、特別な顧客や高額のトランザクションに優先ルーティングを提供する場合に使用できます。
このアサーションでは、XPath のパターンおよび仕様に精通している必要があります。 このアサーションは、ポリシー内でルーティング アサーションの
に配置するようにしてください。
Evaluate Response XPath アサーションは、メッセージで包括的なネームスペースが使用されていない場合は、メッセージの検証に使用できます。
このアサーションによって作成されるコンテキスト変数
XPath クエリは、メッセージの特定の部分をターゲットにして、そのドキュメント構造/XML データを評価します。 アサーションを実行すると、レスポンスに対して XPath パターンが実行され、クエリの処理結果に従って 6 つのコンテキスト変数が設定されます。 以下の表では、Evaluate Response XPath アサーションによって設定されるデフォルトのコンテキスト変数について説明します。
ポリシー フラグメントで Evaluate Response XPath アサーションが使用されていて、
かつ
以下の表のコンテキスト変数を親ポリシーで使用できるようにする必要があるときは、ポリシー フラグメント内に Export Variables from Fragment アサーションを含めてそれらの変数を親ポリシーで使用できるようにします。
Evaluate Response XPath アサーションによって作成されたコンテキスト変数は、排他的正規化形式で XML を返します。 たとえば、副作用として、XML の文字エンティティ(
サポ
など)は、XPath 処理されると対応する特殊文字(??)になる可能性があります。 正規化 XML の詳細については、https://tools.ietf.org/html/rfc3076 を参照してください。
変数
説明
responseXpath.result
この変数の内容は、見つかった一致によって異なります。
  • XPath 表現が要素に一致する場合、この変数には XPath 表現に一致した最初の要素のコンテンツが含まれます。
  • XPath 表現によってその他の一致が見つかった場合、この変数には最初の一致が含まれます。
  • XPath 表現によって一致が見つからなかった場合、アサーションは失敗し、この変数は設定されません。
例:
以下のサンプル XML ドキュメントを考えます。
<test>
<data>hello</data>
<data>world</data>
</test>
responseXpath.result
変数は、以下のように設定されます。
  • XPath 表現「/test/data」は、「<data>hello</data>」と「<data>world</data>」要素の両方に一致します。 この場合、見つかった最初の要素のコンテンツである「hello」が変数に含まれます。
  • XPath 表現「/test/data[2]/text()」はどの要素にも一致しませんが、「world」には一致します。 この場合は、見つかった最初の一致である「world」が変数に含まれます。
responseXpath.results
最初の一致のみでなく、一致したすべての値が含まれる点を除いて、
responseXpath.result
に似ています。 上記の例を使用すると、XPath 表現「/test/data」は変数内で「hello」および「world」を発生させます。
responseXpath.element
クエリの結果のテキストが含まれます。 (開始タグおよび終了タグを含む)要素全体が含まれる点を除いて、
responseXpath.result
変数に似ています。
この変数には、String タイプの値が含まれます。
responseXpath.elements
最初の一致のみでなく、一致したすべての値が含まれる点を除いて、
responseXpath.element
に似ています。
この変数には、Element タイプの値が含まれます。
「Element」値を想定するアサーションは「String」値と連携して動作しないため、
requestXpath.element
s
が必要となる
requestXpath.element
は使用できません。
responseXpath.count
見つかったノードの数が含まれます。表現に一致した場合、これは 1 以上となります。
responseXpath.found
XPath 表現がレスポンスに一致するかどうかにより、「true」または「false」となります。
例:
ドキュメントに対して照合する Xpath 「/foo」があるとします。
<foo>a b c <d>e f g h</d> i j k l</foo>
  • .found
    サフィックスは、文字列値「true」を返します。
  • .result
    サフィックスは、最初に一致するノードの「ノード値」を文字列として返します。 これは、XPath 推奨事項に従った、要素とその子のすべてのテキスト ノードの連結値です。 この例では、結果は文字列「a b c e f g h i j k l」です。
  • .results
    サフィックスは、XPath に一致した各エレメントの
    .result
    サフィックスに対応する 1 つの値を含む複数値コンテキスト変数を作成します。 この例では 1 つの要素のみが一致したため、
    .results
    .result
    の値と一致する単一の値を持ちます。
  • .element
    サフィックスは、文字列型として要素全体を返します。 たとえば、<foo> 要素に一致した場合、これは文字列「<foo>a b c <d>e f g h</d> i j k l</foo>」になります。
  • .elements
    サフィックスは、Element 型の 1 つまたは複数の値を含む複数値コンテキスト変数として、一致するすべての Element 値を返します。 「
    .result
    .results
    」とは異なり
    .element
    .elements
    では、型が異なります。 サフィックス
    .element
    は文字列型の単一の値で、サフィックス
    .elements
    は潜在的に Element 型の複数値になります。
    これは、ドキュメント内に実際の要素コンテキストを必要とする(要素の文字列近似値だけではなく)構造体では、
    .elements[0]
    構造を使用する必要がある理由です。
コンテキスト変数に格納されている値は、後続の[Gateway Audit Events]ウィンドウで使用して、XPath クエリ結果を表示できます。
複数の Evaluate Response XPath アサーションの変数を同時に使用できるようにする必要がある場合(たとえば、次回の Compare Expression アサーションは結果を比較するために使用されます)、各アサーションが異なるプレフィックスを使用する必要があります。 たとえば、Evaluate Response XPath アサーション内に新しい変数プレフィックス
newPrefix
を定義します。 すると、このアサーションは、上記の表に示されているデフォルトの名前の代わりに、
newPrefix.result
newPrefix.count
newPrefix.found、および newPrefix.element
という名前の変数を作成します。
メッセージの処理全体で 1 つの変数ネームスペースが共有されるため、Evaluate Response XPath アサーションと Evaluate Request XPath アサーションの両方で使用されているプレフィックスは一意である必要があります。 同じ変数プレフィックスが両方で使用されている場合は、一方のアサーションが他方の変数を上書きします。
XPath がブール式である場合は、そのブール式が「true」と評価された場合にのみ、アサーションは成功します。 XPath がノードを選択する場合は、一致するノードのリストが空でない場合にのみ、アサーションは成功します。 その他の場合、XPath エラーを含めて、アサーションは失敗します。
Evaluate Response XPath アサーションは XPath 1.0 標準をサポートしています。
アサーションの使用
  1. 以下のいずれかを実行します。
    • アサーションをポリシー作成ウィンドウに追加するには、「アサーションの追加」を参照してください。
    • 既存のアサーションの設定を変更するには、下記の手順 2 に進みます。
  2. 以下の適切なセクションに従って、プロパティ ダイアログ ボックスを完了します。
    Web Service Policy
    Web サービス ポリシー内で Evaluate Response XPath アサーションを使用する場合:
    1. ドロップダウン リストから、[
      XML message source
      ]を選択します。 デフォルトは、
      Default Response
      メッセージ ソースを使用することですが、適格なコンテキスト変数からメッセージを取得することもできます。 適格なコンテキスト変数とは、以下の条件のどちらかに適合するものです。
    2. XPath を指定し、評価するターゲット要素をコード ボックスから選択します。 インターフェースを使用して XPath を作成する詳細な手順については、「XPath の選択」を参照してください。
    3. ここに入力する変数プレフィックスは Evaluate Response XPath アサーションや Evaluate Request XPath アサーション内で使用されるものとは異なることを確認してください。 変数プレフィックスの詳細については、このトピックの冒頭の説明を参照してください。
    4. OK
      ]をクリックします。
    XML Application Policy
    XML アプリケーション ポリシー内で Evaluate Response XPath アサーションを使用する場合:
    1. 必要に応じて、[
      XML message source
      ]で XML メッセージ ソースを設定します。
    2. ターゲット レスポンス要素に対応する XPath 表現をフィールドに入力します。
    3. 必要に応じて、ネームスペース マップにネームスペースを追加します。
    4. OK
      ]をクリックします。