如何在 Xquery 结果中包含 position() 的值?

how to include the value of position() in an Xquery result?

不使用翻滚 windows,位置 itself 如何包含在结果中?

显然“$p”应该是$items中每个$item的“索引”。也就是说,迭代不能保证是连续的。

输出:

<result>
  <items>
    <item pos="$p">5</item>
    <item pos="$p">3</item>
    <item pos="$p">7</item>
    <item pos="$p">2</item>
    <item pos="$p">7</item>
    <item pos="$p">3</item>
  </items>
</result>

查询:

xquery version "3.1";

let $items := (5,3,7,2,7,3)
return
   <result>   
      <items>
      {
         for $item in $items[position()]
     let $p := position()
         return <item pos="$p">{$item}</item>
      }
      </items>
   </result>

查询改编自:

https://www.tutorialspoint.com/xquery/xquery_position.htm

您谈到使用翻滚 windows,但您的查询没有使用翻滚 windows。

但是它确实使用了 FLWOR 表达式,并且 FLWOR 表达式不设置焦点,这意味着它们不设置 position() 的值。

对于你的例子,我想你想要

for $item at $p in $items return <item pos="{$p}">{$item}</item>

或更简单地说

$items ! <item pos="{position()}">{.}</item>

随着翻滚windows可以将变量绑定到window开始和结束的位置写start at $s end at $e然后输出$s$e 在你的结果中。