我对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="Result[@Version = (max(../Result/@Version))]"


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

关于xml - 为特定属性选择具有最高值的所有节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28887378/

10-11 16:23