如何在xsl中使用参数?

时间:2012-10-01 08:02:27

标签: xslt

我有一个简单的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>

但它不起作用。我不知道应该做什么。

1 个答案:

答案 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 的范围内。