プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

JSPでXPath式の結果を変数に設定・利用する方法(x:setタグの使い方)


<x:set>タグは、XPath式の評価結果を変数に設定するために使用します。これにより、XMLドキュメントから取得した値をJSPページ内で再利用できるようになります。

XPath式の評価結果がブール値(boolean)であればjava.lang.Booleanオブジェクトが、文字列であればjava.lang.Stringが、数値であればjava.lang.Numberが、それぞれ変数に格納されます。

属性

<x:set>タグには、以下の属性があります。

属性説明必須デフォルト値
varXPath式の評価結果が設定される変数名はいBody
select評価対象となるXPath式いいえなし
scopevar属性で指定した変数のスコープいいえPage

使用例

以下の例では、まずタグでXMLデータを文字列として定義し、タグで解析した後、タグを使ってXPath式「$output//book」の結果(すべてのbook要素)を変数fragmentに格納しています。

<%@ taglib prefix = "c" uri = "https://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "x" uri = "https://java.sun.com/jsp/jstl/xml" %>
<html>
   <head>
      <title>JSTL Tags</title>
   </head>
   <body>
      <h3>Books Info:</h3>
      <c:set var = "xmltext">
         <books>
            <book>
               <name>Padam History</name>
               <author>ZARA</author>
               <price>100</price>
            </book>
            <book>
               <name>Great Mistry</name>
               <author>NUHA</author>
               <price>2000</price>
            </book>
         </books>
      </c:set>
      <x:parse xml = "${xmltext}" var = "output"/>
      <x:set var = "fragment" select = "$output//book"/>
      <b>The price of the second book</b>:
      <c:out value = "${fragment}" />
   </body>
</html>

上記のJSPにアクセスすると、次のような結果が表示されます。

Books Info:
The price of the second book:[[book: null], [book: null]]

このように、<x:set>タグを使用することで、XPath式による抽出結果を変数として保持し、他のJSTLタグやEL式から参照できるようになります。特定のノードだけを取り出したい場合は、select属性のXPath式を「$output/books/book[2]/price」のように絞り込むことで、より精度の高い値の取得が可能です。

  1. 【JSP入門】JSTLのx:ifタグでXPath式をテストする方法

    JSPでXPath式をテストしたい場合、JSTL(JSP Standard Tag Library)のXMLタグライブラリが提供する<x:if>タグを利用できます。このタグは、test XPath式として指定した条件式を評価し、その結果がtrueの場合にのみタグ内のボディ(内容)を処理します。条件がfalseと評価された場合は、ボディは単純に無視され、何も出力されません。 <x:if>タグの属性一覧 <x:if>タグでは、以下の3つの属性を使用できます。 属性説明必須デフォルト値 select評価対象となるXPath式を指定しますはいなし var条件

  2. Pythonの正規表現で変数を使う方法をわかりやすく解説

    Pythonの正規表現(reモジュール)では、パターン文字列を作る際に文字列連結やf文字列を利用することで、変数の値をパターンの中に組み込むことができます。ただし、変数に含めてよいのは通常の文字列だけです。特殊文字やメタ文字、正規表現そのものが含まれると、意図しないマッチやエラーの原因になります。変数の内容が不定の場合は、re.escape() でエスケープしてから使うと安全です。サンプルコード次のコードは、文字列連結によって変数を正規表現パターンに埋め込む例です。import re s = I love books var_name = love result = re.search((.