<x:set>
xmlns:x="http://java.sun.com/jsp/jstl/xml"

SYNOPSIS

<x:set
var*="変数名"
select*="XPath"
scope="page|request|session|application"
/>

説 明

XPath の評価結果を変数に設定します。XPath は Java の処理の中でも遅い部類に入るため、何度も参照するノードを変数に格納して再利用する事でパフォーマンスが劇的に向上する可能性があります。

XPath の評価結果がノード集合となる場合は <c:out> 等などでそのまま利用することはできません。以下のようにして文字列として再設定する必要があります。

<c:set var="name"><x:out select="$name" /></c:set>
参照: <x:parse> 

属 性

var="変数名"
required

XPath の評価結果を格納する変数名を指定します。後続の XML タグではこの変数名の頭に $ を付ける事で XPath 変数として参照することができます。

select="XPath"
required

設定する値の XPath を指定します。

scope="page|request|session|application"
optional
var で指定した変数のスコープです。 page, request, session, application のいずれかを指定することが出来ます。

使用例

XML 上の要素を変数に格納します。 <x:out> では変数のオブジェクトを正しく評価できますが <c:out> ではオブジェクトの toString() が呼ばれているだけです。実際に格納されていたオブジェクトは NodeListJava™ API リファレンス を実装した CollectionJava™ API リファレンス のようですが、JSTL 仕様上の規定があるわけではありません。
JSP
<x:parse var="xml" doc="${xmlsrc}">
<?xml version="1.0"?>
<foo>
  <bar>hello, world</bar>
</foo>
</x:parse>
<x:set var="bar" select="$xml/foo/bar" />
<x:out select="$bar" /><br>
<c:out value="${bar}" /><br>
<%= pageContext.getAttribute("bar").getClass().getName() %>
実行結果
hello, world
[[bar: null]]
org.apache.taglibs.standard.tag.common.xml.JSTLNodeList
CVS 2008/03/09