【发布时间】:2011-10-20 15:54:19
【问题描述】:
有人知道更改上下文节点的 XSLT 指令/函数列表吗?
例如,for-each 之类的指令就是其中之一。
【问题讨论】:
-
<xsl:for-each差不多了,但也足够了。我想更改上下文而不必编写新模板。我发现for-eaching 是我所需要的。
标签: xml xslt xslt-2.0 xslt-1.0
有人知道更改上下文节点的 XSLT 指令/函数列表吗?
例如,for-each 之类的指令就是其中之一。
【问题讨论】:
<xsl:for-each 差不多了,但也足够了。我想更改上下文而不必编写新模板。我发现for-eaching 是我所需要的。
标签: xml xslt xslt-2.0 xslt-1.0
在 XSLT 1.0 中只有两件事会改变上下文,而且它们都不是函数。它们是:
<xsl:apply-templates select='some-test'/>
(这将导致选择的节点被处理,每个节点在处理时都成为上下文节点)
和
<xsl:for-each select='some-test'/>
在 XSLT 2.0 中,您还拥有
<xsl:for-each-group/>
(它以比xsl:apply-templates 和xsl:for-each 稍微复杂的方式设置上下文节点
【讨论】:
. 含义的方法。
xsl:apply-templates 本身不会改变上下文。它选择节点进行处理。处理模板本身设置当前节点。但是,它确实会导致上下文发生变化,这就是我所说的:)
更改上下文的明显 XSLT 2.0 指令是 for-each、apply-templates、for-each-group 和 analyze-string。但也有例如xsl:sort 和xsl:key。
在 XPath 中,运算符 / 和 [] 更改上下文。没有改变上下文的函数。
【讨论】:
xsl:iterate、xsl:source-document、xsl:merge