我有一個定義的XSLT密鑰。我需要從for-each循環內訪問密鑰,其中該循環正在處理一個不在密鑰定義範圍內的節點集。XSLT「密鑰」的作用域(根節點,上下文)元素
片段,在那裏我已經打上兩行,其中一個作品和其中一個不會:
<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確實有一個與正在處理的文檔不同的根,因爲使用了msxsl:node-set(),它深深埋藏着數百行XSL。 –