选择具有特定属性最高值的所有节点
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))]"
(这也是来自结果的上下文)。
我对 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))]"
(这也是来自结果的上下文)。