xquery-如何在 for 循环中递增计数器变量/如何将字符串值数组转换为节点

Arv*_*ind 5 xquery

在java程序中,我使用Saxon Library来解析一些XQuery命令。

现在,首先我使用 tokenize() 将一些文本拆分为多个文本值。文本的一个例子是——

Mohan Prakash, Ramesh Saini
Run Code Online (Sandbox Code Playgroud)

我在上面的文本上使用 tokenize() 并以“,”作为分隔符。并将 tokenize 的结果存储在变量 $var 中

之后,我想循环这些文本值,并给出以下输出 -

  Mohan Prakash,1
  Ramesh Saini,2
Run Code Online (Sandbox Code Playgroud)

从上面可以看出,每行的最后一个值是一个计数器,对于第一行,该值为 1,对于第二行,该值为 2,依此类推...

我想到使用类似下面的代码 -

for $t in $var/position()
return concat($var[$t], ',', $t)
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误,无法在 $var 上使用position(),因为 $var 应该是一个节点。

所以有两种方法可以解决这个问题——

(a) 将$var中的值转换为节点

   I tried text{$var} but that is not giving accurate results.
Run Code Online (Sandbox Code Playgroud)

如何将值数组转换为节点?

(b) 使用以下内容——

      for $t in $var
Run Code Online (Sandbox Code Playgroud)

这里,如何在for循环中创建并使用计数器,以便计数值可以与$t的每个值一起输出?

Leo*_*ler 3

at您可以在子句中使用关键字for

let $var := tokenize('Mohan Prakash, Ramesh Saini', ', ')
for $t at $pos in $var
return concat($t, ',', $pos)
Run Code Online (Sandbox Code Playgroud)

这将返回两个字符串Mohan Prakash,1Ramesh Saini,2