我是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。
希望我的问题和榜样有意义!
感谢您的帮助!
答案 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))]"
(这也是结果的背景)。