xsl副本是否相对于xpath轴断开?

时间:2011-08-25 18:29:16

标签: xslt copy

xsl复制函数似乎与复制的功能层次模式不同,因为它在应用函数操作之前不评估选择条件(如果条件是XPath轴)。

因此xsl:copy select="ancestor::*"的行为与xsl:copy-of select="ancestor::*"

不同

3 个答案:

答案 0 :(得分:4)

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

来自spec(强调我的):

  

xsl:copy元素提供了一种简单的方法来复制当前节点。实例化xsl:copy元素会创建当前节点的副本。当前节点的命名空间节点也会自动复制,但不会自动复制节点的属性和子节点。 xsl:copy元素的内容是创建节点的属性和子元素的模板;内容仅针对可以具有属性或子节点的节点(即根节点和元素节点)进行实例化。

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

答案 1 :(得分:2)

嗯,copycopy-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,我真的不知道你的意思。