我看不出xsl:copy
和xsl:copy-of
之间存在差异。
我应该在哪种情况下使用哪一个?
答案 0 :(得分:14)
简而言之,xsl:copy
是浅版; xsl:copy-of
是一份深层次的副本。
xsl:copy
vs xsl:copy-of
xsl:copy
对上下文项目的子项有其他计划。xsl:copy-of
他们的孩子,递归地。 xsl:copy
的常见用法
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
请注意,此处节点本身是通过xsl:copy
复制的,然后通过xsl:apply-templates
转换子节点,使其他模板有机会介入转换。
xsl:copy-of
指令在其 必需 @select
属性中评估XPath,并以递归方式复制所选节点及其子节点。xsl:copy-of
指令 必须 具有@select
XPath。请注意,xsl:copy-of
可能已用于身份转换,但是在递归期间允许其他模板匹配的灵活性将会丢失。
答案 1 :(得分:1)
xsl:copy
是一个浅层副本。如果您想要的只是复制当前节点(&#34;上下文项&#34;在规范中),请使用它。
xsl:copy-of
是一份深层次的副本。如果要复制当前节点下的完整节点树,请使用它。有关更全面和完整的说明,请阅读第一条评论中链接的规范。