高度なポリシーインフラストラクチャは、HTML、XML、および JavaScript オブジェクト表記 (JSON) ファイルからデータを評価および取得するための式をサポートしています。これにより、HTML、XML、または JSON ドキュメント内の特定のノードを検索したり、ファイルにノードが存在するかどうかを確認したり、XML コンテキスト内のノード (たとえば、特定の親を持つノードや特定の値を持つ特定の属性を持つノード) を検索したり、それらのノードの内容を返したりすることができます。さらに、書き換え式では XPath 式を使用できます。
XPath 用の高度なポリシー表現の実装は、HTML または XML テキストを指定する高度なポリシー表現プレフィックス (「HTTP.REQ.BODY」など) と、XPath 式を引数とする XPATH 演算子で構成されています。
HTML ファイルは、主に自由形式のタグとテキスト要素のコレクションです。XPath 式を引数として取る XPATH_HTML 演算子を使用して HTML ファイルを処理できます。JSON ファイルは、名前と値のペアのコレクション、または順序付けられた値のリストです。XPATH 式を引数として取る XPATH_JSON 演算子を使用して JSON ファイルを処理できます。
-
\<text\>.XPATH(xpathex):
XML ファイルを操作し、ブール値を返します。
たとえば、次のエクスプレッションは、XML ファイルの最初の 1000 バイト以内に「Creator」というノードが「Book」ノードの下にある場合に、ブール値 TRUE を返します。
HTTP.REQ.BODY(1000).XPATH(xp%boolean(//Book/creator)%)
パラメーター:
xpathex-XPath ブーリアンエクスプレッション
-
\<text\>.XPATH(xpathex):
XML ファイルを操作し、データ型「double」の値を返します。
たとえば、次の式は、文字列が XML ファイルの最初の 1000 バイトにある場合、文字列「36」(価格値)をデータ型「double」の値に変換します。
HTTP.REQ.BODY(1000).XPATH(xp%number(/Book/price)%)
パラメーター:
xpathex-XPath 数値表現
例:
<Book>
<creator>
<Person>
<name>Milton</name>
</Person>
</creator>
<title>Paradise Lost</title>
</Book>
-
\<text\>.XPATH(xpathex):
XML ファイルを操作し、ノードセットまたは文字列を返します。ノードセットは、標準の XPath 文字列変換ルーチンを使用して対応する文字列に変換されます。
たとえば、次のエクスプレッションは、本文の最初の 1000 バイトで「/book/Creator」(ノードセット) で囲まれているすべてのノードを選択します。
HTTP.REQ.BODY(1000).XPATH(xp%/Book/creator%)
パラメーター:
xpathex-XPath式
-
\<text\>.XPATH_HTML(xpathex)
HTML ファイルを操作し、テキスト値を返します。
たとえば、次の式は HTML ファイルに対して動作し、title HTML 要素が最初の 1000 バイトに見つかった場合、<title\></title\> タグで囲まれたテキストを返します。
HTTP.REQ.BODY(1000).XPATH_HTML(xp%/html/head/title%)
パラメーター:
xpathex-XPath テキスト表現
-
<text\>.XPATH_HTML_WITH_MARKUP(xpathex)
HTML ファイルを操作して、ドキュメントの選択した部分全体を含む文字列を返します。これには、要素タグを囲むマークアップなどのマークアップも含まれます。
次の式は HTML ファイル上で動作し <\ title>、マークアップを含むタグ内のすべてのコンテンツを選択します。
HTTP.REQ.BODY(1000).XPATH_HTML_WITH_MARKUP( xp%/html/head/title%)
式によって選択された HTML 本文の部分には、今後の処理のためにマークが付けられます。
パラメーター:
xpathex-XPath式
-
<text\ >.XPATH_JSON (xpathhex)
JSON ファイルを操作し、ブール値を返します。
たとえば、次の JSON ファイルを考えてみます。
{ "Book":{ "creator":{ "person":{ "name":'<name\>' } }, "title":'<title\>' } }
次の式は JSON ファイルを操作し、JSON ファイルの最初の 1000 バイトに「creator」という名前の親ノードが「Book」である場合に、ブール値 TRUE を返します。
HTTP.REQ.BODY(1000).XPATH_JSON(xp%boolean(/Book/creator)%)
パラメーター:
xpathex-XPath ブーリアンエクスプレッション
-
<text\>.XPATH_JSON(xpathex)
JSON ファイルを操作し、データ型「double」の値を返します。
たとえば、次の JSON ファイルを考えてみます。
{ "Book":{ "creator":{ "person":{ "name":'<name\>' } }, "title":'<title\>', "price":"36" } }
次の式は JSON ファイルを操作し、JSON ファイルの最初の 1000 バイトに文字列が存在する場合、文字列「36」をデータ型「double」の値に変換します。
HTTP.REQ.BODY(1000).XPATH_JSON(xp%number(/Book/price)%)
パラメーター:
xpathex-XPath 数値表現
-
\<text\>.XPATH_JSON(xpathex)
JSON ファイルを操作し、ノードセットまたは文字列を返します。ノードセットは、標準の XPath 文字列変換ルーチンを使用して対応する文字列に変換されます。
たとえば、次の JSON ファイルを考えてみます。
{ "Book":{ "creator":{ "person":{ "name":'\<name\>' } }, "title":'\<title\>' } }
<name\ ><title\ >次の式は、JSON ファイル本体の最初の 1000 バイトで「/Book」(ノードセット) で囲まれているすべてのノードを選択し、対応する文字列値 (「」) を返します。
HTTP.REQ.BODY(1000).XPATH_JSON(xp%/Book%)
パラメーター:
xpathex-XPath式
-
\<text\>.XPATH_JSON_WITH_MARKUP(xpathex)
XML ファイルを操作して、結果を囲む要素タグなどのマークアップを含む、結果ノードの文書全体を含む文字列を返します。
たとえば、次の JSON ファイルを考えてみます。
{"Book":{ "creator":{ "person":{ "name":'\<name\>' } }, "title":'\<title\>' } }
<name\ >次の式は JSON ファイルに対して処理を行い、本文の最初の 1000 バイト、つまり「作成者:{person: {name: '\\'}}」で「/book/Creator」で囲まれているすべてのノードを選択します。
HTTP.REQ.BODY(1000).XPATH_JSON_WITH_MARKUP(xp%/Book/creator%)
式によって選択された JSON 本文の部分には、今後の処理のためにマークが付けられます。
パラメーター:
xpathex-XPath式
-
<text\ >\ .XPATH_WIT_MARKUP (xpathhex):
XML ファイルを操作して、結果を囲む要素タグなどのマークアップを含む、結果ノードの文書全体を含む文字列を返します。
たとえば、次の式は XML ファイルを操作し、本文の最初の 1000 バイトで「/book/Creator」で囲まれたすべてのノードを選択します。
HTTP.REQ.BODY(1000).XPATH_WITH_MARKUP(xp%/Book/creator%)
式によって選択された JSON 本文の部分には、今後の処理のためにマークが付けられます。
パラメーター:
xpathex-XPath式