XSLT2.0中的序列构造函数是什么?

XSLT2.0中的序列构造函数是什么?,xslt,constructor,Xslt,Constructor,我看了一些规范和其他文件,但我真的不明白。我明白了,现在有序列而不是节点集,好吧,但是什么是序列构造函数(或者更容易的是:什么不是序列构造函数) 说明书上说 [定义:序列构造函数是零或更多的序列 样式表中的同级节点,可以对其求值以返回 节点和原子值的顺序。生成 使用的顺序取决于包含的指令。] 许多XSLT元素以及文字结果元素都定义为 将序列构造函数作为它们的内容 我有点明白xsl:sequence构造了一个序列,但是为什么xsl:element的内容是一个序列构造函数呢?那么什么不是序列构造函数

我看了一些规范和其他文件,但我真的不明白。我明白了,现在有序列而不是节点集,好吧,但是什么是序列构造函数(或者更容易的是:什么不是序列构造函数)

说明书上说

[定义:序列构造函数是零或更多的序列 样式表中的同级节点,可以对其求值以返回 节点和原子值的顺序。生成 使用的顺序取决于包含的指令。]

许多XSLT元素以及文字结果元素都定义为 将序列构造函数作为它们的内容

我有点明白xsl:sequence构造了一个序列,但是为什么xsl:element的内容是一个序列构造函数呢?那么什么不是序列构造函数呢


感谢您的澄清

请参见规范中的进一步说明

术语序列构造函数替换XSLT1.0中使用的模板。 更改部分是为了清晰(避免与 模板规则和命名模板),但也反映了更正式的 语义的定义。而XSLT1.0将模板描述为 写入结果树XSLT2.0的一系列指令 将序列构造函数描述为可以计算为 返回一系列项目;这些项目会发生什么情况取决于 包含指令

例如,XSLT1.0语法在哪里

<!-- Category: top-level-element -->
<xsl:template
  match = pattern
  name = qname
  priority = number
  mode = qname>
  <!-- Content: (xsl:param*, template) -->
</xsl:template>
xsl:template
规则的内容定义为多个
xsl:param
加上一个序列构造函数

通过这种方式,
xsl:param
显然不是一个序列构造函数,但它的内容当然有一个序列构造函数


至于如何构造序列,您可以使用文本结果元素,当然也可以使用诸如
xsl:value of
xsl:element
xsl:attribute
等指令,以及
xsl:sequence
(允许您构造和返回(序列)等指令原语值,而不仅仅是节点,因为这只有在XSLT 1.0中才可能实现)。

几乎所有可以放置文本结果元素的地方都是序列构造函数,例如

<xsl:template match="/">
   <a></a>
</xsl:template>
因此,序列构造函数是值和创建值的指令所在的位置

<xsl:template match="/">
   <a></a>
</xsl:template>
<xsl:variable name="a">
   <a></a>
</xsl:variable>
<xsl:choose>
   <a></a>
</xsl:choose>
<xsl:choose>
  <!-- Content: (xsl:when+, xsl:otherwise?) -->
</xsl:choose>