从一个元素中具有最高整数的文档返回xml
我有一个相当长的XML文档,在名为。这些页面中的每个页面都包含一个用整数值调用的元素 我试图显示来自的XML中条目数最多的部分 我已经看过fn:max函数,但它对我不起作用 这就是我试过的-从一个元素中具有最高整数的文档返回xml,xml,xpath,xquery,Xml,Xpath,Xquery,我有一个相当长的XML文档,在名为。这些页面中的每个页面都包含一个用整数值调用的元素 我试图显示来自的XML中条目数最多的部分 我已经看过fn:max函数,但它对我不起作用 这就是我试过的- for $x in /Document where $x fn:max(//NumberOfEntries) return $x//Page::node() 编辑 我刚刚计算出了这个,但是它返回了所有的页面——不仅仅是条目数最多的页面——有什么建议吗 for $x in /Document where m
for $x in /Document
where $x fn:max(//NumberOfEntries)
return $x//Page::node()
编辑
我刚刚计算出了这个,但是它返回了所有的页面——不仅仅是条目数最多的页面——有什么建议吗
for $x in /Document
where max($x//NumberOfEntries)
return ($x//Page)
这个怎么样
let $max := max(//Page//NumberOfEntries)
for $x in //Page
where number($x//NumberOfEntries) eq $max
return $x
这个怎么样
let $max := max(//Page//NumberOfEntries)
for $x in //Page
where number($x//NumberOfEntries) eq $max
return $x
作为max。。。不返回布尔结果,其中max$x//NumberOfEntries等同于where existsmax$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]
作为max。。。不返回布尔结果,其中max$x//NumberOfEntries等同于where existsmax$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]
即使使用单个XPath 2.0表达式也可以做到这一点:
这将选择XML文档中文档顺序中的第一个页面元素,该元素具有NumberOfEntries子代,其值是任何页面的任何此类NumberOfEntries子代所观察到的最大值
如果要选择具有最大条目数的所有页面,只需将上述内容简化为:
即使使用单个XPath 2.0表达式也可以做到这一点:
这将选择XML文档中文档顺序中的第一个页面元素,该元素具有NumberOfEntries子代,其值是任何页面的任何此类NumberOfEntries子代所观察到的最大值
如果要选择具有最大条目数的所有页面,只需将上述内容简化为:
这也会返回文档中的所有页面,而不仅仅是条目数最多的页面。不过还是要谢谢你。我开始觉得XML交换器出了点问题——它仍然会带回所有条目。我正在运行的另一个xquery也遇到了同样的问题,它也会返回所有条目。@staceym不,我的错,我被计数分心了。修正了它,虽然Leo的答案也有效..那是赋值运算符。右边的表达式被分配给左边的变量名。“让”是为了明确这样的任务将随之而来。“for”不是表达式的一部分,因此只将max分配给$max。这也将返回文档中的所有页面,而不仅仅是条目数最大的页面。不过还是要谢谢你。我开始觉得XML交换器出了点问题——它仍然会带回所有条目。我正在运行的另一个xquery也遇到了同样的问题,它也会返回所有条目。@staceym不,我的错,我被计数分心了。修正了它,虽然Leo的答案也有效..那是赋值运算符。右边的表达式被分配给左边的变量名。“让”是为了明确这样的任务将随之而来。“for”不是表达式的一部分,因此只将max指定给$max。。