高度なポリシーインフラストラクチャでは、HTML、XML、および JavaScript オブジェクト記法 (JSON) ファイルからデータを評価および取得するための式がサポートされています。これにより、HTML、XML、または JSON ドキュメント内の特定のノードを検索し、ファイルにノードが存在するかどうかを判断し、XML コンテキスト内のノード (たとえば、特定の親を持つノード、または特定の値を持つ特定の属性を持つノード) を特定し、そのようなノードの内容を返すことができます。さらに、書き換え式で XPath 式を使用できます。
XPath の高度なポリシー式の実装は、HTML または XML テキストを指定する高度なポリシー式のプレフィックス (「HTTP.REQ.BODY」など) と、XPath 式を引数として受け取る XPATH 演算子で構成されます。
HTML ファイルは、タグとテキスト要素のほとんどが自由形式のコレクションです。XPATH_HTML 演算子を使用すると、引数として XPath 式を受け取り、HTML ファイルを処理できます。JSONファイルは、名前と値のペアのコレクションまたは値の順序付きリストのいずれかです。XPATH_JSON 演算子を使用すると、引数として XPath 式を受け取り、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(xpathex)
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 ファイルを考えてみます。
{「本」: {「クリエイター」: {「人」: {「名前」:\<name>''},「タイトル」: '\<title>',「価格」: "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 ファイルを考えてみます。
{「本」: {「クリエイター」: {「人」: {「名前」:\<name>''},「タイトル」: '\<title>' } }
次の式は、JSONファイルの本体の最初の 1000 バイトの「/Book」(ノードセット) で囲まれたすべてのノードを選択し、対応する文字列値を返します。\<name>\<title>":
HTTP.REQ.BODY(1000).XPATH_JSON(xp%/Book%)
パラメーター:
xpathex-XPath式
-
\<text>.XPATH_JSON_WITH_MARKUP(xpathex)
XML ファイルを操作し、結果ノードのドキュメント全体を含む文字列を返します。これには、囲む要素タグを含むマークアップも含まれます。
たとえば、次の JSON ファイルを考えてみます。
{「本」: {「クリエイター」: {「人」: {「名前」:\<name>''},「タイトル」: '\<title>' } }
次の式は JSON ファイルを操作し、本体の最初の 1000 バイトで「/Book/creator」で囲まれているすべてのノードを選択します。このノードは"creator:{ person:{ name:'\<name>' } }"です。
HTTP.REQ.BODY(1000).XPATH_JSON_WITH_MARKUP(xp%/Book/creator%)
式によって選択される JSON 本体の部分は、さらなる処理のためにマークされます。
パラメーター:
xpathex-XPath式
-
\<text>.XPATH_WITH_MARKUP(xpathex):
XML ファイルを操作し、結果ノードのドキュメント全体を含む文字列を返します。これには、囲む要素タグを含むマークアップも含まれます。
たとえば、次の式は XML ファイルに対して動作し、本文の最初の 1000 バイトの「/Book/creator」で囲まれたノードをすべて選択します。
HTTP.REQ.BODY(1000).XPATH_WITH_MARKUP(xp%/Book/creator%)
式によって選択される JSON 本体の部分は、さらなる処理のためにマークされます。
パラメーター:
xpathex-XPath式