0

XSLファイルに対して次の入力があります。

<node>
    <xsl:value-of select="ROOT/LEVEL1/LEVEL2" />
</node>

私の期待する出力は次のとおりです。

<node2>
    <xsl:value-of select="ROOT/LEVEL1/LEVEL2" />
</node2>

これを取得する方法は?

私ができる最善のこと:

<xsl:template match="node" >
    <node2>
        <xsl:copy-of select="." />
    </node2>
</xsl:template>

生成するもの:

<node2><node>
    <xsl:value-of select="ROOT/LEVEL1/LEVEL2"/>
</node></node2>
4

1 に答える 1

2

実行すると既存のノード<xsl:copy-of select="." />がコピーされますが、あなたの場合は子をコピーしたいだけです。代わりにこれを試してください

<xsl:copy-of select="node()" />

実際には、IDテンプレートを使用する方がよい場合があります。これにより、そのままコピーするのではなく、ノード要素の子要素にさらに変換を行うことができます。例えば:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="xml" indent="yes"/>

   <xsl:template match="node">
      <node2>
         <xsl:apply-templates select="@*|node()"/>
      </node2>
   </xsl:template>

   <xsl:template match="@*|node()">
      <xsl:copy>
         <xsl:apply-templates select="@*|node()"/>
      </xsl:copy>
   </xsl:template>
</xsl:stylesheet>
于 2012-05-18T08:11:50.360 に答える