XQuery比较2个数字列表

XQuery比较2个数字列表,xquery,Xquery,给定2个xml文件,每个xml文件包含一个数字列表 <list1> <item>1</item> <item>2</item> ... </list1> list1 = [1,2,3,4,5,7,8,9,10] list2 = [1,4,6,2,8] 提前感谢您,xquery的新手。使用xquery 3.0,您可以为每个使用fn:。因此,对于$list1中的每个项目,它会检查$list2中是否有较

给定2个xml文件,每个xml文件包含一个数字列表

<list1>
    <item>1</item>
    <item>2</item>
    ...
</list1>

list1 = [1,2,3,4,5,7,8,9,10]
list2 = [1,4,6,2,8]

提前感谢您,xquery的新手。

使用xquery 3.0,您可以为每个使用
fn:。因此,对于
$list1
中的每个项目,它会检查
$list2
中是否有较大的项目

let $list1 := (1 to 10)
let $list2 := (1, 4, 6, 2, 8)
return for-each($list1, function($l) {
  if (for-each($list2, function($x) {$l > $x}) = false())
  then ()
  else $l
})
如果您只使用XQuery 1.0,那么它也应该可以正常工作,并且基本上是一样的:

let $list1 := (1 to 10)
let $list2 := (1, 4, 6, 2, 8)
for $l in $list1
where not((
  for $f in $list2
  return $l > $f
) = false())
return $l

也许我误解了这个问题,但在我看来,有一种更简单、更有效的解决方案,使用一个谓词,不需要任何显式循环:

xquery version "1.0";

let $list1 := (1, 2, 3, 4, 5, 7, 8, 9, 10)
let $list2 := (1, 4, 6, 2, 8)

let $max2 := max($list2)

return

    $list1[. gt $max2]
我还想向@ouye解释一下XQuery术语。目前,XQuery中没有列表结构,最接近的是使用
构建的序列

xquery version "1.0";

let $list1 := (1, 2, 3, 4, 5, 7, 8, 9, 10)
let $list2 := (1, 4, 6, 2, 8)

let $max2 := max($list2)

return

    $list1[. gt $max2]