xsl复制函数似乎与复制的功能层次模式不同,因为它在应用函数操作之前不评估选择条件(如果条件是XPath轴)。
因此xsl:copy select="ancestor::*"
的行为与xsl:copy-of select="ancestor::*"
答案 0 :(得分:4)
至少在XSLT 1.0中,xsl:copy
不具有select属性:它只复制当前节点。
来自spec(强调我的):
xsl:copy元素提供了一种简单的方法来复制当前节点。实例化xsl:copy元素会创建当前节点的副本。当前节点的命名空间节点也会自动复制,但不会自动复制节点的属性和子节点。 xsl:copy元素的内容是创建节点的属性和子元素的模板;内容仅针对可以具有属性或子节点的节点(即根节点和元素节点)进行实例化。
编辑:XSLT2.0 xsl:copy
的行为方式相同
答案 1 :(得分:2)
嗯,copy
和copy-of
旨在做很多不同的事情。 copy
始终适用于当前节点,并且不支持select
属性。请参阅http://zvon.org/xxl/XSLTreference/Output/xslt_copy.html vs http://zvon.org/xxl/XSLTreference/Output/xslt_copy-of.html。
答案 2 :(得分:0)
正在向XSLT 3.0中的xsl:copy添加select属性,以允许复制上下文节点以外的节点(例如在函数中有用)。对于XSLT 1.0和2.0,我真的不知道你的意思。