【发布时间】:2016-04-12 06:44:29
【问题描述】:
我定义了一个 XSLT 键。我需要从 for-each 循环中访问密钥,其中该循环正在处理一个节点集,该节点集超出了定义密钥的范围。
片段,我在其中标记了两行,一行有效,另一行无效:
<xsl:value-of select="key('name', 'use')"/> <!-- works -->
<xsl:for-each select="$outOfScopeNodeSet">
<xsl:value-of select="key('name', 'use')"/> <!-- does not work -->
</xsl:for-each>
有没有办法从 for-each 循环中访问密钥?
XSLT 1.0,msxsl 引擎。
(我想不出一种合理的方式来为此提供一个完整的工作示例。我也不确定正确的术语,例如“范围” - 如果我知道正确的术语,我可能会能够已经找到我的答案。如果问题不够清楚,请告诉我,我会尝试将其编辑成更好的形式。)
【问题讨论】:
-
尝试将其简化为完整、有效的 XSLT 的最小示例,并提供一个 XML 文件进行匹配,显示预期的输出。
-
嗨,吉姆。昨天我无法做到这一点,但在迈克尔下面的回答之后,我现在明白了这个问题并且能够做到。 $outOfScopeNodeSet 确实有一个与正在处理的文档不同的根,因为使用了深埋在数百行 XSL 中的 msxsl:node-set()。