首页 > 解决方案 > XPath 不显示重复值(递归查询)

问题描述

在我的情况下,我有一个包含递归部分(.//)的查询。在我的 XML-XSLT(使用 Xpath)结果中,我希望只看到唯一值。我与 Altova Stylevision 合作设置这个 XSLT。

我的 XML:

<Subject>
<Subject>
        <L2 Name="Asset 1">
          <IDR3 Name="IDR A" />
        </L2>
        <L2 Name="Asset 2">
          <IDR3 Name="IDR B" />
        </L2>
</Subject>  
<Subject>
        <L2 Name="Asset 3">
          <IDR3 Name="IDR B" />
        </L2>
        <L2 Name="Asset 4">
          <IDR3 Name="IDR B" />
        </L2>
    <Subject>
            <L2 Name="Asset 5">
              <IDR3 Name="IDR A" />
            </L2>
            <L2 Name="Asset 2">
              <IDR3 Name="IDR B" />
            </L2>
    </Subject>      
</Subject>          
<Subject>
    <Subject>
        <Subject>
            <L2 Name="Asset 7">
              <IDR3 Name="IDR C" />
            </L2>
            <L2 Name="Asset 8">
              <IDR3 Name="IDR B" />
            </L2>
        </Subject>
    </Subject>      
</Subject>      

整个“主题”是一个递归部分。我希望得到以下结果:

我用来设置初始 XSLT 的字符串:

.//Subject/L2/IDR3/@Name

我用preceding::siblingand尝试了多种解决方案distinct-values,但我无法解决这个问题,因为我必须处理递归(向下/向上)。我真的希望有人可以帮助我解决这个问题。

问候

标签: xmlxsltxpathxslt-1.0xslt-2.0

解决方案


为什么不简单:

distinct-values(//IDR3/@Name)

演示:https ://xsltfiddle.liberty-development.net/6q1SDmh


推荐阅读