简而言之,
xsl:copy
是浅拷贝;
xsl:copy-of
是一份深刻的副本.
>如果只想复制上下文项目,请使用xsl:copy
对上下文项目的子项有其他计划.
>如果要复制XPath选择的节点,请使用xsl:copy-of
他们的孩子,递归地.
xsl:copy的注释
> xsl:copy
指令复制上下文项但不复制
它的子节点.
>这是一个浅层副本.
> xsl:copy
指令不能有@select XPath.
可以在identity transformation中找到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的注释
> xsl:copy-of
指令在其所需的@select属性中评估XPath,并以递归方式复制所选节点及其子节点.
>这是一份深刻的副本.
> xsl:copy-of
指令必须具有@select XPath.
请注意,xsl:copy-of
可能已用于身份转换,但是通过允许其他模板在递归期间匹配的机会所提供的灵活性将会丢失.