Evaluate Request XPath アサーション

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