更改上下文节点的 XSLT 指令/函数列表?
Posted
技术标签:
【中文标题】更改上下文节点的 XSLT 指令/函数列表?【英文标题】:List of XSLT instructions/functions that change the context node? 【发布时间】:2011-10-20 15:54:19 【问题描述】:有人知道更改上下文节点的 XSLT 指令/函数列表吗?
例如,for-each
之类的指令就是其中之一。
【问题讨论】:
<xsl:for-each
差不多了,但也足够了。我想更改上下文而不必编写新模板。我发现for-each
ing 是我所需要的。
【参考方案1】:
在 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
稍微复杂的方式设置上下文节点
【讨论】:
apply-templates 不会更改当前模板中的上下文节点,它会转到另一个模板。据我所知,xsl:for-each 是唯一可以在模板中更改.
含义的方法。
严格来说,是的。 xsl:apply-templates
本身不会改变上下文。它选择节点进行处理。处理模板本身设置当前节点。但是,它确实会导致上下文发生变化,这就是我所说的:)【参考方案2】:
更改上下文的明显 XSLT 2.0 指令是 for-each
、apply-templates
、for-each-group
和 analyze-string
。但也有例如xsl:sort
和xsl:key
。
在 XPath 中,运算符 /
和 []
更改上下文。没有改变上下文的函数。
【讨论】:
嘿,很酷 =D 顺便说一句,更改 当前节点 的唯一方法是 for-each 是真的吗? XSLT 3.0 更新:现在还有xsl:iterate
、xsl:source-document
、xsl:merge
以上是关于更改上下文节点的 XSLT 指令/函数列表?的主要内容,如果未能解决你的问题,请参考以下文章