我有一个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>
答案 0 :(得分:2)
执行<xsl:copy-of select="." />
会复制现有节点,但在您的情况下,您只想复制子节点。而是尝试这个
<xsl:copy-of select="node()" />
实际上,最好使用身份模板,因为这样可以进一步转换到节点元素的子元素,而不是按原样复制。例如:
<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>