gpt4 book ai didi

xquery - Count 嵌套 FLWOR 循环在 XQuery 中运行的次数

转载 作者:行者123 更新时间:2023-12-02 09:05:19 26 4
gpt4 key购买 nike

如果您有一个像这样带有两个“for”语句的嵌套 FLWOR 语句:

for $x at $xPos in (1, 2, 3)
for $y at $yPos in fn:doc("/foo")//b
return ()

如何准确计算 for 循环运行了多少次?假设 'fn:doc("/foo")//b' 返回随机长度的序列,所以这里是一个运行示例:

$xPos  $yPos
1 1
1 2
1 3
2 1
2 2
3 1 <-- for loop ends here (total times ran = 6)

另一个运行示例可能是:

$xPos  $yPos
1 1
1 2
2 1
2 2
2 3
3 1
3 2
3 3
3 4 <-- for loop ends here (total times ran = 9)

希望您明白我的意思。如何在嵌套 for 循环中保留和更新计数器变量,以计算我运行此循环的次数,而无需在循环的每次迭代时重置它?

澄清编辑:这个问题只是出于纯粹的好奇心,想知道这在 XQuery 中是否可行。我知道您可以像这样简单地放置一个 let 语句,然后跟踪 $xPos,这是一个简单的事情:

for $x at $xPos in (1, 2, 3)
let $_ :=
for $y at $yPos in fn:doc("/foo")//b
return ()
return ()

最佳答案

在 MarkLogic 中您可以使用 xdmp:set突破严格的 FLWOR 范式。

let $count := 0
for $x at $xPos in (1, 2, 3)
for $y at $yPos in ("a", "b", "c")
let $set := xdmp:set($count, $count + 1)
return concat($count, ": ", $x, " ", $y)

产品:

1: 1 a
2: 1 b
3: 1 c
4: 2 a
5: 2 b
6: 2 c
7: 3 a
8: 3 b
9: 3 c

关于xquery - Count 嵌套 FLWOR 循环在 XQuery 中运行的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59338422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com