我有以下模板:
<xsl:template name="theday">
<xsl:param name="thisday" />
<xsl:variable name='holiday' select='foo'/><!-- made this static for testing -->
<td class="{$holiday}"> <!-- no value is inserted in class -->
<a>
<xsl:attribute name='href'><xsl:value-of
select="concat('?date=',$thisday)" /></xsl:attribute>
<xsl:value-of select="date:day-in-month($thisday)" />
</a>
</td>
</xsl:template>
我希望得到这样的HTML:
<td class="foo">
<a href="?date=2009-11-02">2</a>
</td>
不幸的是,我得到了:
<td class="">
<a href="?date=2009-11-02">2</a>
</td>
我错过了什么?
答案 0 :(得分:3)
试试这个:
<xsl:variable name='holiday'>foo</xsl:variable>
或
<xsl:variable name='holiday' select="'foo'"/>
工作原理:select
属性需要评估表达式;因为你可能在上下文中没有foo
元素,所以它被解析为空字符串。
答案 1 :(得分:1)
问题是<xsl:variable name='holiday' select='foo'/>
选择节点列表'foo'(为空)而不是字符串foo。如果你有xml
<a>
<foo>B</foo>
</a>
然后(当前位于a
)<xsl:variable name='holiday' select='foo'/>
会给出'B'。
要解决这个问题,请指定一个常量:
<xsl:variable name='holiday' select="'foo'"/>