随后使用具有不同上下文的相同 XSLT 密钥。语义取决于 XSLT 版本或 XSLT 引擎?

Using same XSLT key with different contexts subsequently. Semantics depends on XSLT version or XSLT engine?

以这个例子:

XSLT Keys Example

仅将 XSLT 版本从 1.0 更改为 2.0,我得到了不同的结果。

v1.0 的结果是:<result>111</result>(很明显,键是在第一次使用时用上下文初始化的,并且保持不变)。但随着 v2.0。结果是:<result>1 61 61 6</result> 似乎只要上下文发生变化,密钥就会重新初始化。

我的问题是,这是因为 XSLT 1.0 版与 2.0 版语义不同,还是由不同的 XSLT 引擎和相同的 XSLT 版本引起的?谢谢

xsl:value-of 的语义在 XSLT 2 中发生了变化;而在 XSLT 1.0 <xsl:value-of select="some-expression"/> outputs a text node with the string value of the first node selected by some-expression in XSLT 2 中,一个包含 space 分隔的文本节点(更一般地说,如果存在 separator 属性的值),将创建所有选定项目的字符串值序列。

支持 XPath 1 backwards compatibility mode 的 XSLT 2 或 3 处理器将使用 XSLT 1 行为,其中使用 xsl:version="1.0"version="1.0"