Xslt 如何在XSL 2.0 XSL:key match属性中使用变量?

Xslt 如何在XSL 2.0 XSL:key match属性中使用变量?,xslt,Xslt,不幸的是,我需要保持这些变量lookup1和lookup2的定义不变。我想在这里更改尽可能少的代码。它是一个非常古老且庞大的代码库,运行在支持此类构造的自定义企业XSL引擎上 标准XSLT2.0中的正确方法是 XTSE0340 XSLT Pattern syntax error at char 0 on line 55 in {$dictFile}: A variable reference is not allowed in an XSLT pattern (except in a predi

不幸的是,我需要保持这些变量lookup1和lookup2的定义不变。我想在这里更改尽可能少的代码。它是一个非常古老且庞大的代码库,运行在支持此类构造的自定义企业XSL引擎上

标准XSLT2.0中的正确方法是

XTSE0340 XSLT Pattern syntax error at char 0 on line 55 in {$dictFile}:
A variable reference is not allowed in an XSLT pattern (except in a predicate)


在标准XSLT2.0中,正确的方法是

XTSE0340 XSLT Pattern syntax error at char 0 on line 55 in {$dictFile}:
A variable reference is not allowed in an XSLT pattern (except in a predicate)

中讨论了此确切场景,并提供了两个解决方案(向下滚动至示例:使用键引用其他文档部分)。

中讨论了此确切场景,并提供了两个解决方案(向下滚动至示例:使用键引用其他文档部分)

<xsl:variable name="dictFile" select="document('dictionary.xml')" />

<xsl:key name="lookupTable" match="dictionary/item" use="@name" />

<xsl:variable name="lookup1" select="key('lookupTable','lookupA', $dictFile)" />
<xsl:variable name="lookup2" select="key('lookupTable','lookupB', $dictFile)" />