XQuery比较2个数字列表
给定2个xml文件,每个xml文件包含一个数字列表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中是否有较
<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]