<x:set>
xmlns:x="http://java.sun.com/jsp/jstl/xml"
説 明
XPath の評価結果を変数に設定します。XPath は Java の処理の中でも 遅い部類に入るため、何度も参照するノードを変数に格納して再利用 する事でパフォーマンスが劇的に向上する可能性があります。
XPath の評価結果がノード集合となる場合は <c:out> 等などで
そのまま利用することはできません。以下のようにして文字列として再設定
する必要があります。
<c:set var="name"><x:out select="$name" /></c:set>
参照:
<x:parse> 属 性
使用例
XML 上の要素を変数に格納します。
を実装した
のようですが、JSTL 仕様上の規定があるわけではありません。
<x:out> では変数のオブジェクトを正しく評価できますが <c:out>
ではオブジェクトの toString() が呼ばれているだけです。実際に格納されていたオブジェクトは
NodeListCollectionJSP
<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