Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从一个元素中具有最高整数的文档返回xml_Xml_Xpath_Xquery - Fatal编程技术网

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

从一个元素中具有最高整数的文档返回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

我有一个相当长的XML文档,在名为。这些页面中的每个页面都包含一个用整数值调用的元素

我试图显示来自的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)
这个怎么样

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。。