xsl:copy和xsl:copy-of在XSLT中有什么区别

  • 本文关键字:xsl 区别 copy copy-of XSLT xml xslt
  • 更新时间 :
  • 英文 :


我看不出xsl:copyxsl:copy-of之间有什么区别。

在什么情况下我应该使用哪一个?

简而言之,xsl:copy是一个浅拷贝xsl:copy-of是一个深度复制。

何时使用xsl:copyxsl:copy-of

  • 如果只想复制上下文项,请使用xsl:copy对上下文项的子项有其他计划
  • 如果要复制XPath选定的节点,请使用xsl:copy-of他们的孩子,递归地

xsl:copy的注意事项

  • xsl:copy指令复制上下文项,但不复制的子节点
  • 这是一个肤浅的复制品
  • xsl:copy指令不能具有@selectXPath

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指令必须具有@selectXPath

请注意,xsl:copy-of本可以用于身份转换,但在递归过程中允许其他模板匹配所提供的灵活性将丢失。

xsl:copy是一个浅拷贝。如果您只想复制当前节点(规范中的"上下文项"),请使用它。xsl:copy-of是深度复制。如果要在当前节点下复制完整的节点树,请使用它。要获得更全面和完整的解释,请阅读第一条注释中链接到的规范。

最新更新