Xml 内部XSL映射查找的正确语法
我在xsl文档中有一个内部定义的映射表,我希望使用xml中的xpath作为键来访问一个值。在XSL2中,我相信这很容易,但我似乎遇到了错误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: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]"/>