XSL中的变量for-each not catch value

时间:2013-07-31 12:43:15

标签: xslt foreach

我对XSL for-each有一点问题,我找不到解决方案(是的,我知道GIYF,我也没有帮助)。那就是问题所在。我有这个代码

 <select class="gr">
    <xsl:attribute name="style">position:relative; width:350px;</xsl:attribute>
    <xsl:attribute name="name">organoDestinatario</xsl:attribute>
    <xsl:attribute name="id">organoDestinatario</xsl:attribute>
    <option value=""></option>
    <xsl:for-each select="$lang.options/option">
        <xsl:variable name="lang.temp" select="value"/>
        <option value="$lang.temp"><xsl:value-of select="text"/></option>
    </xsl:for-each>
 </select>

似乎是正确的但是,当我查看选项变量值时,我看到的是$ lang.temp,所以它没有捕获$ lang.temp的值,而是变量的名称。奇怪的是,“文本”正在工作,如果我将其更改为“值”,它可以工作并显示值。所以我确信一切都“充满”。

有关它的任何建议吗?我真的不知道这里发生了什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您需要使用属性值模板

<option value="{$lang.temp}">

或者完全放弃变量并说出

<option value="{value}">

您希望将其解释为XPath表达式的文字属性值的任何部分都需要用大括号括起来。任何没有大括号的东西都是按字面意思呈现的。