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>

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>

しかし、うまくいきません。どうすればいいのかわからない。

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 に答える