我的xslt模板中有以下变量。
<xsl:variable name="spaces" select="'     '"/>
在模板中,我正在使用变量:
<xsl:choose>
<xsl:when test="InvestmentNone = 'true'">
<u>X</u>
</xsl:when>
<xsl:otherwise>
<u xml:space="preserve">
<xsl:value-of select="@spaces" xml:space="preserve"/>
</u>
</xsl:otherwise>
</xsl:choose>
所以,基本上,如果'投资无''为'假',我希望空格显示下划线。问题是在上面的代码中,空格没有显示出来。但是,如果我删除该行
<xsl:value-of select="@spaces" xml:space="preserve"/>
并添加
     
直接到位,空格显示下划线。如何让变量方法起作用?原因是稍后我将使用变量填充空格。
答案 0 :(得分:2)
要访问变量,您必须在其名称前加$
而不是@
:
<xsl:variable name="spaces" select="'     '"/>
<xsl:value-of select="$spaces"/>
前缀@
解决了属性问题,并且由于上下文节点中可能没有名为 spaces 的属性,因此在访问@spaces
时会得到一个空字符串。
答案 1 :(得分:0)
除了Martin的正确答案之外,我还要指出在样式表中使用xml:space =“preserve”通常是一个坏主意。这意味着xsl:value-of指令之前和之后的空白文本节点变得重要,就像它们被包含在xsl:text中一样。我不知道为什么这没有在HTML中添加任何带下划线的空格,尽管它可能只会在浏览器渲染后显示为单个空格。