听起来很简单,但我的“简单”语法都不起作用:
<xsl:param name="length"/>
<xsl:attribute name="width">$length</xsl:attribute>
not
<xsl:attribute name="width"><xsl:value-of-select="$length"></xsl:attribute>
有什么建议吗?
感谢
答案 0 :(得分:8)
<xsl:attribute name="width">$length</xsl:attribute>
这将创建一个值为字符串$length
的属性。但是你想要名为$length
的xsl:param的值。
<xsl:attribute name="width"><xsl:value-of-select="$length"></xsl:attribute>
这里<xsl:value-of>
元素没有关闭 - 这使得XSLT代码没有格式良好的xml。
<强>解决方案强>:
使用以下其中一项:
<xsl:attribute name="width"><xsl:value-of select="$length"/></xsl:attribute>
强> 或
<someElement width="{$length}"/>
强> 为了便于阅读和紧凑,请尽可能使用上面的。
答案 1 :(得分:1)
你可能在这里甚至不需要xsl:attribute
;最简单的方法是:
<someElement width="{$length}" ... >...</someElement>
答案 2 :(得分:1)
您的第一个选项失败,因为变量未在文本节点中展开。您的第二个选项失败是因为您尝试拨打<xsl:value-of-select="...">
,而正确的语法是<xsl:value-of select="..."/>
,如标准中的Generating Text with xsl:value-of部分所述。您可以使用
<xsl:attribute name="width"><xsl:value-of select="$length"/></xsl:attribute>
或正如其他人所说,您可以使用attribute value templates:
<someElement width="{$length}" ... >...</someElement>