如何在 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>
查询改编自:
您谈到使用翻滚 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
在你的结果中。
不使用翻滚 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>
查询改编自:
您谈到使用翻滚 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
在你的结果中。