我想编写一个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>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句