xsl复制是否按照xpath轴进行分割



xsl copy函数似乎偏离了copy-of的功能层次模式,因为它在应用函数操作之前不评估选择条件(如果条件是XPath轴)。

所以xsl:copy select="ancestor::*"的行为与xsl:copy-of select="ancestor::*"不同

至少在XSLT 1.0中,xsl:copy没有有一个select属性:它只复制当前节点。

来自规范(强调我的):

copy元素提供了将复制到当前节点的简单方法。实例化xsl:copy元素将创建当前节点的副本。当前节点的名称空间节点也会自动复制,但不会自动复制节点的属性和子节点。copy元素的内容是所创建节点的属性和子节点的模板;内容仅为具有属性或子类型(即根节点和元素节点)的节点实例化。

编辑:XSLT2.0 xsl:copy的行为方式相同

嗯,copycopy-of的目的是做非常不同的事情。copy总是在当前节点上工作,并且不支持select属性。参见http://zvon.org/xxl/XSLTreference/Output/xslt_copy.html vs http://zvon.org/xxl/XSLTreference/Output/xslt_copy-of.html

在XSLT 3.0中向xsl:copy添加了一个select属性,以允许复制上下文节点以外的节点(例如在函数中很有用)。对于XSLT 1.0和2.0,我真的不知道您是什么意思。

最新更新