XQuery: 查找最大值和 return 相关信息

XQuery: find max value and return relevant information

我有一个 XML 文件,其中包含具有以下结构的元素:

<listing>
    <auction_info>
        <num_bids>29</num_bids>
    </auction_info>
    <item_info>
        <result>item A</result>
    </item_info>
</listing>
<listing>
    <auction_info>
        <num_bids>12</num_bids>
    </auction_info>
    <item_info>
        <result>item B</result>
    </item_info>
</listing>

我需要一个查询来计算 num_bids 和 return 的最大值 result.In 我的例子,num_bids 29 是最大值,所以需要 return 项目 A.But 在我下面的代码中,它 return 编辑了所有结果。

let $x := //listing
let $max := max($x/auction_info/num_bids)
return $x[//num_bids = $max]/item_info/result

感谢您的帮助。

你的表达要求是“给我文档中有num_bids、anywhere的所有$x,等于到 $max." 这不同于 " 给我所有的 $x,其中 它自己的 num_bids 等于 $max。 " 应执行以下操作(未测试):

let $in  := //listing
let $max := max($in/auction_info/num_bids)
return
   $in[auction_info/num_bids eq $max]/item_info/result

如果你真的想使用后代轴,你可以将$x[//xxx]更改为$x[.//xxx](看到额外的点?)第一个说“for each $x , 来自它的根 的任何 xxx 后代,”第二个说“ 对于每个 $x,任何来自其自身 的 xxx 后代。”但是从您的示例输入来看,上面的查询很可能是您想要的。