我有一个相当长的 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/