我有一个简单的xsl文件:
<xsl:for-each select="part">
<div class="part">
<h2>Part Name:<xsl:value-of select="@partName" /></h2>
<xsl:for-each select="input">
<p>
<input>
<xsl:attribute name="value">
<xsl:value-of select="." />
</xsl:attribute>
<xsl:attribute name="name"><xsl:value-of select="@inputName" /></xsl:attribute>
</input>
</p>
</xsl:for-each>
</div>
</xsl:for-each>
我想保存partname并使用后者。我试着如下:
<xsl:for-each select="part">
<div class="part">
<h2>Part Name:<xsl:value-of select="@partName" /></h2>
**<xsl:param name="part_name"><xsl:value-of select="@partName" /></xsl:param>**
<xsl:for-each select="input">
<p>
<input>
<xsl:attribute name="value">
<xsl:value-of select="." />
</xsl:attribute>
<xsl:attribute name="name">**<xsl:value-of select="$part_name" />**-<xsl:value-of select="@inputName" /></xsl:attribute>
</input>
</p>
</xsl:for-each>
</div>
</xsl:for-each>
但它不起作用。我不知道应该做什么。
答案 0 :(得分:0)
您可能收到错误Keyword xsl:param may not be used here.
。这是因为 xsl:param 应该只能在根 xsl:stylesheet 元素下找到,并且用于从外部应用程序传递值。
在这种情况下,您需要 xsl:variable
<xsl:variable name="part_name">
<xsl:value-of select="@partName"/>
</xsl:variable>
或者更简单......
<xsl:variable name="part_name" select="@partName"/>
事实上,你可以完全取消变量。而不是这样做
<xsl:value-of select="$part_name"/>
你可以这样做,从父元素中获取值
<xsl:value-of select="../@part_name"/>
请记住,如果你使用变量,那么在这种情况下,它只会在 xsl:for-each 的范围内。