Xml XPATH:谁是在比赛中得分最多的球员?

Xml XPATH:谁是在比赛中得分最多的球员?,xml,xpath,Xml,Xpath,我有一个XML,我需要一个在xpath比赛中得分最多的球员 伊涅斯塔 苏亚雷斯 梅西 罗纳尔多 秃鹰 包 /match/summary/team/scorecard/name[ 不(@points

我有一个XML,我需要一个在xpath比赛中得分最多的球员


伊涅斯塔
苏亚雷斯
梅西
罗纳尔多
秃鹰
包
/match/summary/team/scorecard/name[
不(@points
意思是:找到一个球员,这样就没有比他更高的分数了

测试

xmllint -xpath '/match/summary/team/scorecard/name[not(@points < /match/summary/team/scorecard/name/@points)]/text()' ~/file.xml
xmllint-xpath'/match/summary/team/scorecard/name[不(@points
/match/summary/team/scorecard/name[
不(@points
意思是:找到一个球员,这样就没有比他更高的分数了

测试

xmllint -xpath '/match/summary/team/scorecard/name[not(@points < /match/summary/team/scorecard/name/@points)]/text()' ~/file.xml
xmllint-xpath'/match/summary/team/scorecard/name[不(@points
@choroba的回答很好。XPath 2.0解决方案:

 //name[@points=max(//name/@points)]/text()
输出:梅西


编辑:删除不同的值。谢谢@Michael Kay。

@choroba的回答很好。XPath 2.0解决方案:

 //name[@points=max(//name/@points)]/text()
输出:梅西


编辑:删除不同的值。Thx给@Michael Kay。

如果你碰巧有萨克森(PE或更高)那么


应该是最快的解决方案。

如果您碰巧有Saxon(PE或更高),那么


应该是最快的解决方案。

max(distinct-values(X))
max(X)
相同,我非常怀疑对
distinct-values()
的冗余调用是否有助于提高性能。请注意。感谢您的输入。
max(distinct-values(X))
max(X)
相同,我非常怀疑对
distinct-values()
的冗余调用是否有助于提高性能。请注意。感谢您的输入。除非您的XPath处理器有一个非常智能的优化器,否则这将具有二次性能。@dontknow:这正是这个XPath表达式返回的结果。你试过了吗?输出与您的期望有什么不同?除非您的XPath处理器有相当智能的优化器,否则这将具有二次性能。@dontknow:这正是此XPath表达式返回的结果。你试过了吗?输出与您的期望有什么不同?