xml - 如何在 Xquery 结果中包含 position() 的值?
问题描述
如果不使用翻转窗口,位置本身如何包含在结果中?
显然“$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>
查询改编自:
解决方案
您谈到使用翻滚窗口,但您的查询不使用翻滚窗口。
但是它确实使用了 FLWOR 表达式,并且 FLWOR 表达式不设置焦点,这意味着它们不设置 position() 的值。
对于你的例子,我认为你想要
for $item at $p in $items return <item pos="{$p}">{$item}</item>
或更简单地说
$items ! <item pos="{position()}">{.}</item>
使用翻滚窗口,您可以通过在结果中写入start at $s end at $e
然后输出将变量绑定到窗口的开始和结束位置。$s
$e
推荐阅读
- python-3.x - 命令出错,退出状态为 1
- apache-kafka - Spring Cloud Stream 在没有任何字段的 Confluent Schema Registry 中生成 Avro Schema
- flutter - 必须在平面按钮的颤振中提供所需名称参数的错误
- javascript - 在 ReactJS 中显示状态变量的数据形成无限循环
- c# - ListView标签绑定不读取数据,但显示字符串的长度 - Xamarin Form
- bash - 带引号的正则表达式的 Bash 变量赋值
- testing - 编译 Rust 二进制文件,仅用于 crate 的集成测试
- java - VSCode 和 Java 设置:没有兼容的 Jar
- database - 有没有办法在模式构建器 apache 梁中配置字符串字段的长度
- json - 空手道 API 中的“call”和“callonce”有什么区别?