Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 内部XSL映射查找的正确语法_Xml_Variables_Xslt_Xpath - Fatal编程技术网

Xml 内部XSL映射查找的正确语法

Xml 内部XSL映射查找的正确语法,xml,variables,xslt,xpath,Xml,Variables,Xslt,Xpath,我在xsl文档中有一个内部定义的映射表,我希望使用xml中的xpath作为键来访问一个值。在XSL2中,我相信这很容易,但我似乎遇到了错误 <xsl:variable name="map"> <entry key="One">testOne</entry> <entry key="Two">testTwo</entry> <entry key="Three">testThree</entry> </x

我在xsl文档中有一个内部定义的映射表,我希望使用xml中的xpath作为键来访问一个值。在XSL2中,我相信这很容易,但我似乎遇到了错误

<xsl:variable name="map">
 <entry key="One">testOne</entry>
 <entry key="Two">testTwo</entry>
 <entry key="Three">testThree</entry>
</xsl:variable>

<xsl:variable name="testVariable">
 <value-of select="$map/entry[@key=A/B]"/>
</xsl:variable>

testOne
测试二
测试三
如果xml文档看起来像:

<A>
 <B>Three</B>
<A>

xsl文档中的testVariable应该解析为“testThree”

这里有两个问题。首先,它应该是xsl:value of,而不仅仅是value of

其次,在xpath条件中使用
A/B
时,这将与正在搜索的条目元素相关,而不是原始XML中的
A/B

请尝试以下方法:

<xsl:variable name="key" select="A/B"/>
<xsl:variable name="testVariable">
    <xsl:value-of select="$map/entry[@key=$key]"/>
</xsl:variable>

或者更好,写下这个

<xsl:variable name="key" select="A/B"/>
<xsl:variable name="testVariable" select="$map/entry[@key=$key]"/>

事实上,您根本不必使用变量,只需使用current()函数获取XML文档中的当前上下文即可

<xsl:variable name="testVariable" select="$map/entry[@key=current()/A/B]"/>