Xquery 是否有方法按输入中的位置范围对记录进行分组?

Xquery 是否有方法按输入中的位置范围对记录进行分组?,xquery,basex,Xquery,Basex,有没有办法按位置范围对输入进行分组? 在我的例子中,我有一个使用多个字符串的函数。我需要按静态位置范围(1-3、4-6、7-9等)对它们进行分组,然后在for循环中为每组执行一些代码。 我不知道传递了多少字符串。它可以根据输入而改变 我已经尝试在$I处对$x进行迭代。。。但是我不能把它做好 declare function bs:concat-strings ( $multipleStringInput as item()+ ) { let $firstString := $

有没有办法按位置范围对输入进行分组? 在我的例子中,我有一个使用多个字符串的函数。我需要按静态位置范围(1-3、4-6、7-9等)对它们进行分组,然后在for循环中为每组执行一些代码。 我不知道传递了多少字符串。它可以根据输入而改变

我已经尝试在$I处对$x进行迭代。。。但是我不能把它做好

 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(.)