通过在一个xsl文件中引用该文件来从xml文件中检索属性

时间:2012-06-18 09:39:14

标签: xslt

考虑我的'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 如上所示。

2 个答案:

答案 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