Xml c:set在JSTL1.2中不起作用

Xml c:set在JSTL1.2中不起作用,xml,jstl,Xml,Jstl,我正在制作一个基于xml的动态菜单。将解析此XML并构建最终菜单。 xml是: <menus> <menu> <name>menu.level1.Home</name> <action>transfer-to-account-input</action> </menu> <menu> <name>menu.level1

我正在制作一个基于xml的动态菜单。将解析此XML并构建最终菜单。 xml是:

<menus>
    <menu>
        <name>menu.level1.Home</name>
        <action>transfer-to-account-input</action>
    </menu>
    <menu>
        <name>menu.level1.Accounts</name>
        <action>accounts-summary</action>
    </menu>
</menus>

menu.level1.Home
转入账户输入
menu.level1.Accounts
帐目摘要
我使用jstl解析XML。x:设置似乎不起作用

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%>

<x:forEach select="$docRoot/menus/menu" var="menuvar">
    <x:set select="$menuvar/name" var="menuName1" >
    <c:set var="menuName2">
        <x:out select="$menuvar/name" />
    </c:set>
    ${menuName1} //This doesn't show any thing
    ${menuName2} //This works!
</x:forEach>

${menuName1}//这没有显示任何内容
${menuName2}//这很有效!

是我犯了错误还是这是JSTL 1.2中的一个错误,
x:set
的语法使用XPath变量语法引用了
$menuVar
,但是
menuVar
是一个JSTL变量。应该是:

<x:set select="$pageScope:menuvar/name" var="menuName1" >

使用JSTL数据作为XPath变量 作用域变量可以在XPath表达式($implicitObject:variableName)中使用,类似于它们在EL(${implicitObject.variableName})中的使用方式。如果省略隐式对象,将按标准顺序搜索范围。请注意,“.”和“[]”符号不能用于访问bean属性

参考资料