Xml xslt使用键函数获取节点集文本

Xml xslt使用键函数获取节点集文本,xml,xslt,node-set,Xml,Xslt,Node Set,在XSLT1.0中,是否可以使用键函数访问节点集的textnode? 我有以下代码: <xsl:variable name="Items"> <Item ID="ID1">name1</Item> <Item ID="ID2">name2</Item> </xsl:variable> <xsl:key name="get_item_by_ID" match="exsl:node-set

在XSLT1.0中,是否可以使用键函数访问节点集的textnode? 我有以下代码:

<xsl:variable name="Items">
        <Item ID="ID1">name1</Item>
        <Item ID="ID2">name2</Item>
</xsl:variable>

<xsl:key name="get_item_by_ID" match="exsl:node-set($Items)/Item" use="@ID"/>

<xsl:template match="/Items">
    <xsl:value-of select="key('get_item_by_ID', @ItemID)/text()"></xsl:value-of>
 </xsl:template> 

名称1
姓名2

我想通过当前项的ItemID搜索节点集的文本,以便通过预定义的节点集文本(ID1:name1,ID2:name2)重命名该项。

您在此处遇到了上下文问题:

exsl:node set($Items)
创建的节点集是一个单独的“文档”。不能在
元素的
match
属性中指定要匹配的文档


在调用key()函数之前,必须将上下文切换到所需的文档(在XSLT 2.0中,可以在key()函数本身中指定要匹配的文档)。

谢谢,我不知道这一点。使用“切换到所需文档的上下文”mena时,您会做什么?如何实现这一点?您可以通过使用
xsl:for each
(例如
)来切换上下文。请参见上一个问题中的示例: