Xml 文档功能使用问题
我想对XML文件执行XPath,并根据XSLT中提供的键检索值,然后使用结果 下面是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 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("Maps.xml","mm:ValueMaps/mm:Map[@name='storeIdToOrganizationCode']/mm:Entry[@key=$storeId]/text()")"/>
storeId
是一个保存XSLT值的变量,我在document()
函数中使用它
FYIMaps.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,我知道我犯了什么错误。非常感谢您的解决方案。