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

selecting all nodes with highest value for specific attribute

我对 XSLT 还很陌生,所以仍在学习基础知识。在下面的 XML 示例中,我有兴趣选择属性 "Version":

具有最高数值的所有节点
 <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。

希望我的问题和示例有意义!

感谢您的帮助!

我将从定义一个键开始:

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

那么你可以使用:

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

到select所有具有最大版本的结果(在这个例子中,上下文节点是结果)。


或者,您可以使用更行人的方式:

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

(这也是来自结果的上下文)。