Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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 文档功能使用问题_Xml_Xslt - Fatal编程技术网

Xml 文档功能使用问题

Xml 文档功能使用问题,xml,xslt,Xml,Xslt,我想对XML文件执行XPath,并根据XSLT中提供的键检索值,然后使用结果 下面是xml文件 <?xml version="1.0" encoding="UTF-8"?> <mm:ValueMaps xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mm="http://WCToSSFSMediationModule"> <mm:Map name="storeIdToO

我想对XML文件执行XPath,并根据XSLT中提供的键检索值,然后使用结果

下面是xml文件

<?xml version="1.0" encoding="UTF-8"?>
<mm:ValueMaps
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mm="http://WCToSSFSMediationModule">

    <mm:Map name="storeIdToOrganizationCode">  
        <mm:Entry key="19658">001GB</mm:Entry>
        <mm:Entry key="11306">001CA</mm:Entry>
    </mm:Map>
</mm:ValueMaps>

001GB
001CA
下面是我在XSLT内部的文档函数中使用的XPath,但我的缺点是它不起作用。能帮我弄清楚吗

<xsl:variable name="actualOrganizationCode"  
              select="document(&quot;Maps.xml&quot;,&quot;mm:ValueMaps/mm:Map[@name='storeIdToOrganizationCode']/mm:Entry[@key=$storeId]/text()&quot;)"/>

storeId
是一个保存XSLT值的变量,我在
document()
函数中使用它

FYI
Maps.xml
位于XSLT的同一目录下

问候,

Tarak。

函数将返回一个上下文,您可以在其中运行XPath表达式。您不能将表达式作为第二个参数。您应该这样使用它:

<xsl:value-of select="document('Maps.xml')/mm:ValueMaps/mm:Map[@name='storeIdToOrganizationCode']/mm:Entry[@key=$storeId]/text()"/>

您可能还希望将其放置在变量中:

<xsl:variable name="$doc" select="document('Maps.xml')"/>

并在您希望访问其任何节点时引用它:

 <xsl:value-of select="$doc/mm:ValueMaps/mm:Map[@name='storeIdToOrganizationCode']/mm:Entry[@key=$storeId]/text()" />


您还应该在样式表中注册
mm
前缀,因为源文档中使用的前缀不会被样式表中的XPath表达式考虑。

谢谢helderdarocha,我知道我犯了什么错误。非常感谢您的解决方案。