更改上下文节点的 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-eaching 是我所需要的。 【参考方案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-templatesxsl:for-each 稍微复杂的方式设置上下文节点

【讨论】:

apply-templates 不会更改当前模板中的上下文节点,它会转到另一个模板。据我所知,xsl:for-each 是唯一可以在模板中更改. 含义的方法。 严格来说,是的。 xsl:apply-templates 本身不会改变上下文。它选择节点进行处理。处理模板本身设置当前节点。但是,它确实会导致上下文发生变化,这就是我所说的:)【参考方案2】:

更改上下文的明显 XSLT 2.0 指令是 for-eachapply-templatesfor-each-groupanalyze-string。但也有例如xsl:sortxsl:key

在 XPath 中,运算符 /[] 更改上下文。没有改变上下文的函数。

【讨论】:

嘿,很酷 =D 顺便说一句,更改 当前节点 的唯一方法是 for-each 是真的吗? XSLT 3.0 更新:现在还有xsl:iteratexsl:source-documentxsl:merge

以上是关于更改上下文节点的 XSLT 指令/函数列表?的主要内容,如果未能解决你的问题,请参考以下文章

『TensorFlow』常用函数实践笔记

XSLT 2.0 产生错误:“上下文项未定义”

XSLT 仅在存在其他子节点属性时更改子节点

代码混淆和运行时行为更改

如何使用 XSLT 替换 XML 节点名称中的字符 - 更改根元素

BrowserDomAdapter 更改没有反映在 angular2 上下文的外部