3

考虑我的“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 中,并且必须为我正在处理的“值”检索相应的“名称”属性

            <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 是我将获得的与 'value' 属性匹配的 url 值

               <destinationURL> 

标签。我无法获得输出。我能否获得用于访问匹配的相应“值”的“名称”属性的相对 xpath。

尝试使用上面显示的 $prop/destinationURLs/destinationURL[@value=@url]/@name。

4

2 回答 2

1

我认为您只是缺少明确指定@url属性的模板当前内容。正确的 XPath 取决于放置指令的模板。

我说的是这样的事情:

<xsl:variable name="rep2" 
 select="$prop/destinationURLs/destinationURL[@value=current()/@url]/@name"/>

请注意current()/@url

于 2012-06-18T11:22:01.940 回答
1

您的节点中没有 url 的属性,因此 @value=@url 永远无法工作。

如果您有当前行中使用的 URL,请先将其放入变量中,以便

<xsl:variable name="url" select="@url"/>
<xsl:variable name="rep2" select="$prop/destinationURLs/destinationURL[@value=$url]/@name"/>
于 2012-06-18T09:49:37.587 回答