0

次の XML ドキュメントがあります。

<root someAttribute="someValue" />

ここで、ドキュメントが次のようになるように、XSLT を使用してタグを追加します。

<root someAttribute="someValue">
  <item>TEXT</item>
</root>

XSLT をもう一度使用する場合は、別の項目を追加するだけです。

<root someAttribute="someValue">
  <item>TEXT</item>
  <item>TEXT</item>
</root>

とても簡単に聞こえますよね?いろいろ試した結果、以下がベストです。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
    <xsl:param name="message" />

    <xsl:output method="xml" encoding="utf-8"/>

        <xsl:template match="/*">
        <xsl:copy>
            <xsl:copy-of select="*"/>
            <item>
                <xsl:value-of select="$message" />
            </item>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

ルート要素の属性を「忘れる」ことを除いて、私が要求したことを/​​ほぼ/実行します。ここで、スタックオーバーフローや他の場所で、ルート要素の属性を失うという私のソリューションと共通する他の多くのソリューションを見つけました。どうすれば修正できますか?

4

1 に答える 1

1

現在、属性ではなく、子ノードのみを変換しています。

<xsl:template match="root">
    <xsl:copy>
        <xsl:copy-of select="node()|@*"/> <!-- now does attrs too -->
        <item>
            <xsl:value-of select="$message" />
        </item>
    </xsl:copy>
</xsl:template>
于 2012-08-13T16:41:12.087 に答える