xsl:copy用于需控制复制过程的场景,如修改属性、跳过子节点或差异化处理;xsl:copy-of用于原样保留整段结构的场景,如提取配置或快速生成副本。
xsl:copy 只复制当前节点本身(不带子节点和属性),需配合 xsl:apply-templates 才能递归处理内容;xsl:copy-of 一次性深拷贝整个节点及其所有子节点、属性、文本内容,无需额外指令。
适合需要**控制复制过程**的场景,比如想在复制时修改某些属性、跳过特定子节点、或对不同节点类型做差异化处理。
),不自动带内容 才能把子节点也复制过去xsl:copy 后加 xsl:attribute 或 xsl:apply-templates 实现“选择性增强”适合**原样保留整段结构**的场景,比如提取一段配置、转发某段数据、或快速生成副本而不做干预。
假设有这段 XML:
用 :可逐层控制,比如只复制 title,过滤 price;用 :直接得到一模一样的 book 元素。
xsl:copy 不复制属性,除非你手动
xsl:copy-of 的 select 表达式可以是任意节点集,比如 copy
-of select="author | publisher" 能合并复制多个不相邻节点copy-of 更快(无模板调度开销),但灵活性差;copy 更灵活,但写法略多基本上就这些。选哪个,看你要不要“插手”复制过程。