考虑我的'destinationURLLookUp.xml'文件具有以下结构
<?xml version="1.0" encoding="UTF-8"?>
<destinationURLs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<destinationURL name="Default Page" value="/abc/ab"/>
<destinationURL name="Home Page" value="/abc/ac"/>
</destinationURLs>
我正在使用以下XSLT代码在我的XSLT中加载此文件,并且必须为我正在为
处理的'value'检索相应的'name'属性 <destinationURL>
标签
我尝试过的XSLT代码段
<xsl:variable name="prop" select="document('destinationURLLookUp.xml')"/>
<xsl:variable name="rep2" select="$prop/destinationURLs/destinationURL[@value=@url]/@name"/>
<xsl:value-of select="$rep2" />
其中@url是我将获得的url值,它匹配
的'value'属性 <destinationURL>
标签。我无法得到输出。我可以获得相应的xpath,用于访问匹配的'value'的'name'属性。
尝试使用$ prop / destinationURLs / destinationURL [@ value = @ url] / @ name 如上所示。
答案 0 :(得分:1)
节点中没有url属性,因此@ value = @ url永远不会工作。
如果您使用的是当前行中的URL,请先将其放入变量中
<xsl:variable name="url" select="@url"/>
<xsl:variable name="rep2" select="$prop/destinationURLs/destinationURL[@value=$url]/@name"/>
答案 1 :(得分:1)
我认为您只是缺少明确指定@url
属性的模板当前contenxt。正确的XPath取决于放置指令的模板。
我说的是这样的事情:
<xsl:variable name="rep2"
select="$prop/destinationURLs/destinationURL[@value=current()/@url]/@name"/>
请注意current()/@url
。