Xquery 是否有方法按输入中的位置范围对记录进行分组?
有没有办法按位置范围对输入进行分组? 在我的例子中,我有一个使用多个字符串的函数。我需要按静态位置范围(1-3、4-6、7-9等)对它们进行分组,然后在for循环中为每组执行一些代码。 我不知道传递了多少字符串。它可以根据输入而改变 我已经尝试在$I处对$x进行迭代。。。但是我不能把它做好Xquery 是否有方法按输入中的位置范围对记录进行分组?,xquery,basex,Xquery,Basex,有没有办法按位置范围对输入进行分组? 在我的例子中,我有一个使用多个字符串的函数。我需要按静态位置范围(1-3、4-6、7-9等)对它们进行分组,然后在for循环中为每组执行一些代码。 我不知道传递了多少字符串。它可以根据输入而改变 我已经尝试在$I处对$x进行迭代。。。但是我不能把它做好 declare function bs:concat-strings ( $multipleStringInput as item()+ ) { let $firstString := $
declare function bs:concat-strings
( $multipleStringInput as item()+ ) {
let $firstString := $multipleStringInput[position() = 1]
let $secondString := $multipleStringInput[position() = 2]
let $thirdString := $multipleStringInput[position() = 3]
let $concat :=
concat(
$firstString,
$secondString,
$thirdString)
return bs:next-function($concat)
} ;
所以我的目标是将这些多个字符串按3分成更小的变量,以便能够单独使用它们,并像上面一样使用常量[position()=1],[position()=2],[positon()=3]获得它们,然后将它们合并并传递给下一个函数,或者在每次迭代中以某种方式更改位置[1,2,3]->[4,5,6]
例如:
输入:
“猫”、“喜欢”、“鱼”、“狗”、“喜欢”、“骨头”
输出:
bs:下一个函数('Catlikesfish')
bs:下一个函数('Doglikesbones')使用
滚动窗口
要对每个项目调用函数,请使用映射运算符代码>:
(for tumbling window $window in ('Cat', 'likes', 'fish', 'Dog', 'likes', 'bones')
start at $s when $s mod 3 = 1
return
string-join($window)
)
! bs:next-function(.)
使用滚动窗口
条款,例如
要对每个项目调用函数,请使用映射运算符代码>:
(for tumbling window $window in ('Cat', 'likes', 'fish', 'Dog', 'likes', 'bones')
start at $s when $s mod 3 = 1
return
string-join($window)
)
! bs:next-function(.)