<xsl:sequence>
原子值(或原子值序列)与<xsl:copy-of>
两者都只返回输入的副本。当考虑节点时,就会出现差异。
如果$n是单个元素节点,例如由以下内容定义
<xsl:variable name=“n”select=“/html”/>
然后
<xsl:copy-of-select=“$n”/>
返回一个复制节点的名称和子结构相同,但它是一个新的具有新标识(无父级)的节点。
<xsl:sequence select=“$n”/>
返回节点$n,返回的节点与$n具有相同的父级,并且通过是
Xpath操作员。
这种差异在传统(XSLT 1样式)模板使用中几乎完全掩盖了,因为您永远无法访问构造函数的结果隐式地复制到输出树中,因此xsl:sequence(xsl:sequence)
没有复制就被屏蔽了。
<xsl:template match=“a”><x><xsl:sequence select=“$n”/></x></xsl:template>
与
<xsl:template match=“a”><x><xsl:copy-of-select=“$n”/></x></xsl:template>
两者都会生成一个新元素节点,并且复制作为新节点的子节点的内容的结果x个
。
然而,如果使用函数,差异很快就会显现出来。
<xsl:stylesheet version=“2.0”xmlns:xsl=“http://www.w3.org/1999/XSL/Transform网站“xmlns:f=”数据:,f“><xsl:variable name=“s”><x> 您好</x></xsl:variable><xsl:template name=“main”>::::<xsl:value-of-select=“$s/x是f:s($s/x)”/>::<xsl:value-of-select=“$s/x是f:c($s/x)”/>::::<xsl:value-of-select=“计数(f:s($s/x)/..)”/>::<xsl:value-of-select=“计数(f:c($s/x)/..)”/>::</xsl:template><xsl:function name=“f:s”><xsl:param name=“x”/><xsl:sequence select=“$x”/></xsl:function><xsl:function name=“f:c”><xsl:param name=“x”/><xsl:copy-of-select=“$x”/></xsl:function></xsl:stylesheet>
生产
$saxon9-it main序列.xsl<?xml版本=“1.0”编码=“UTF-8”?>::::true::false:::: 1:: 0::
这里是的结果xsl:sequence(xsl:sequence)
和xsl:复制
完全不同。