如何在xsl:attribute name =“width”中使用xsl:param值

时间:2010-04-18 21:16:41

标签: xslt width

听起来很简单,但我的“简单”语法都不起作用:

<xsl:param name="length"/>
<xsl:attribute name="width">$length</xsl:attribute>
not
<xsl:attribute name="width"><xsl:value-of-select="$length"></xsl:attribute>

有什么建议吗?

感谢

3 个答案:

答案 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。

<强>解决方案

使用以下其中一项:

  1. <xsl:attribute name="width"><xsl:value-of select="$length"/></xsl:attribute>
    1. <someElement width="{$length}"/>
    2. 为了便于阅读和紧凑,请尽可能使用上面的

答案 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>