选择具有特定属性的最高值的所有节点

时间:2015-03-05 20:46:19

标签: xml xslt xpath xslt-2.0

我是XSLT的新手,所以还在学习基础知识。在以下XML示例中,我有兴趣选择属性值最高的所有节点"版本":

 <Results>
     <Result Version="1">a</Result>
     <Result Version="2">a</Result>
     <Result Version="3">b</Result>
     <Result Version="3">c</Result>
     <Result Version="1">d</Result>
     <Result Version="3">e</Result>
     <Result Version="2">f</Result>
     <Result Version="3">g</Result>
     <Result Version="1">h</Result>
 </Results>

所以在上面的例子中,我有兴趣选择具有值的节点:b,c,e和g。

希望我的问题和榜样有意义!

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

我首先要定义一个键:

<xsl:key name="result-by-version" match="Result" use="@Version" />

然后你可以使用:

select="key('result-by-version', xs:string(max(Result/@Version)))"

选择具有最大版本的所有结果(在此示例中,上下文节点为结果)。


或者,您可以使用更多行人:

select="Result[@Version = (max(../Result/@Version))]"

(这也是结果的背景)。