xml - 使用 XQuery 获取以较小值开头的子节点
问题描述
我想编写一个 XQuery 表达式来获取所有子节点,该子节点以一个子节点开始,其值小于前一个子节点的值,并以最后一个子节点结束。因此,对于下面的示例,我想获得值为 1 和 2 的子节点:
<node>
<childnode>
<value>4</value>
</childnode>
<childnode>
<value>8</value>
</childnode>
<childnode>
<value>1</value>
</childnode>
<childnode>
<value>2</value>
</childnode>
</node>
XQuery 3.1 中最优雅的解决方案是什么?
最好的祝福
解决方案
该tumbling window
子句允许表达这一点。
BaseX 中的 XQuery
xquery version "3.1";
declare context item := document {
<node>
<childnode>
<value>4</value>
</childnode>
<childnode>
<value>8</value>
</childnode>
<childnode>
<value>1</value>
</childnode>
<childnode>
<value>2</value>
</childnode>
</node>
};
<root>
{
for tumbling window $w in /node/childnode
start $s previous $p when xs:decimal($s/value) lt xs:decimal($p/value)
return $w
}
</root>
输出
<root>
<childnode>
<value>1</value>
</childnode>
<childnode>
<value>2</value>
</childnode>
</root>
推荐阅读
- wordpress - Wordpress Woocommerce:单一产品页面的变体库
- java - 方法Static的参考-advice的小程序示例
- ios - swift中的这个Objective C代码是什么?
- node.js - 我们如何使用 mongoose 和 expressjs-nodejs 对 mongodb 中的 ObjectId 列执行排序?
- sequence - Informatica 表达式与序列生成器
- java - 在 MicroEj 中使用 UART 和 STM32f746g-DISCO
- datetime - 添加 10 天,选择日期 -on-change 方法 -service now
- android - Facebook 登录:应用程序未在 android studio 中设置
- php - 使用 if 语句使用 PDO 将表单数据插入数据库
- java - java中的自定义分析器,使用edgeNGram令牌过滤器