如何使用 XPath 查找一组元素中某个属性的最小值? [英] How can I use XPath to find the minimum value of an attribute in a set of elements?
问题描述
如果我有像这样的 XML:
If I have XML like:
<foo>
<bar id="1" score="192" />
<bar id="2" score="227" />
<bar id="3" score="105" />
...
</foo>
我可以使用 XPath 查找 score
的最小值和最大值吗?
Can I use XPath to find the minimum and maximum values of score
?
编辑:我使用的工具(Andariel 蚂蚁任务)没有不支持 XPath 2.0 解决方案.
Edit: The tool i'm using (Andariel ant tasks) doesn't support the XPath 2.0 solution.
推荐答案
原来该工具不支持 XPath 2.0.
Turns out the tool does not support XPath 2.0.
XPath 1.0 没有花哨的 min()
和 max()
函数,所以要找到这些值,我们需要对 XPath 逻辑有点棘手,并比较节点的兄弟节点上的值:
XPath 1.0 doesn't have the fancy min()
and max()
functions, so to find these values we need to be a little tricky with the XPath logic, and compare the values on the siblings of the node:
最大值:
/foo/bar[not(preceding-sibling::bar/@score >= @score)
and not(following-sibling::bar/@score > @score)]/@score
最低:
/foo/bar[not(preceding-sibling::bar/@score <= @score)
and not(following-sibling::bar/@score < @score)]/@score
如果将这些查询嵌入 XSLT 或 ant 脚本等 XML 文件中,请记住将 <
和 >
编码为 <
尊重 >
.
If embedding these queries in XML files like XSLT or ant scripts, remember to encode <
and >
as <
respecting >
.
这篇关于如何使用 XPath 查找一组元素中某个属性的最小值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!