0

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

我想保存零件名并在以后使用它。我尝试如下:

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

但它不起作用。我不知道该怎么办。

4

1 回答 1

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的范围内是本地的。

于 2012-10-01T08:38:05.543 回答