xml - 从一个元素中具有最大整数的文档返回 xml

标签 xml xpath xquery

我有一个相当长的 XML 文档,其中包含名为 <Pages> 的元素下的小节。 .这些页面中的每一个都包含一个名为 <NumberOfEntries> 的元素。具有整数值。

我正在尝试显示 <Page> 中的 XML 部分其中条目数最多。

我看过fn:max功能,但它对我不起作用......

这是我尝试过的 -

for $x in /Document
where $x fn:max(//NumberOfEntries)
return $x//Page::node()

编辑

我刚刚解决了这个问题,但它返回了所有页面 - 不仅仅是条目数量最多的页面 - 有什么建议吗?
for $x in /Document
where max($x//NumberOfEntries)
return ($x//Page)

最佳答案

max(...)不返回 bool 结果,where max($x//NumberOfEntries)相当于where exists(max($x//NumberOfEntries)) ,所以它没有过滤任何东西。您想找到具有最大条目数的页面,所以这就是我要做的:

let $pages := /Document//Page,
    $max   := max($pages//NumberOfEntries)
return $pages[.//NumberOfEntries = $max]

如果多个页面具有相同数量的条目并且这是最大值,则它们都将被返回。如果你只想要一个结果,你可以将最后一行换成 (...)[1]采取第一个:
let $pages := /Document//Page,
    $max   := max($pages//NumberOfEntries)
return ($pages[.//NumberOfEntries = $max])[1]

关于xml - 从一个元素中具有最大整数的文档返回 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8347166/

相关文章:

java - 如何访问字符串数组?(Android)

html - 使用 Chrome 的元素的 XPath?

XPath/XQuery : find text in a node, 但忽略特定后代元素的内容

XQuery 在谓词中使用函数

java - 按钮对点击没有反应

xml - 骡子 3.9.5 无法将 xml dom 转换为 xml

xml - 如何在 XSL 中获取嵌套的 xml 标签?

xml - 努力建立xpath

c# - XPath 不适用于 SelectSingleNode

xpath - 如何在LibXml 2中使用Xpath