如何在 xquery 中对一个序列进行两两迭代?
我想迭代 xquery 中的序列并一次获取 2 个元素。做到这一点最简单的方法是什么?
I want to iterate over a sequence in xquery and grab 2 elements at a time. What is the easiest way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
XQuery 3.0 解决方案
对于此以及更复杂的分页用例,Window Clause 已在 XQuery 3.0 中创建。但是,许多 XQuery 处理器尚不支持它。
窗口示例
这是一个工作示例,您可以在 try.zorba :
结果
XQuery 3.0 Solution
For this and more complex paging use cases the Window Clause has been created in XQuery 3.0. But, it is not yet supported by many XQuery processors.
Windowing example
Here is a working example that you could execute for example on try.zorba :
Result
一种选择是迭代所有项目,一旦项目达到除数(在本例中为 2),就取出这些项目。一个缺点是,如果项目甚至不是除数。例如,此方法不会返回具有奇数个元素的序列的最后一个元素。
另一种选择是使用 mod 和项目的索引。使用这种方法,您可以通过在计数中添加比组中项目数少的 1 来确保包含 $items 序列中的所有元素。
One option is to iterate over all items and just take the items once the items reach the divisor, in this case 2. The one downside is that you won't reach the last group of items if the items aren't even multiples of the divisor. For instance, the last element of a sequence with an odd number of elements will not be returned with this approach.
Another option is to use mod and the index of the item. Using this approach you can make certain to include all elements in the $items sequence by adding one less than the number of items in your group to the count.
回报
returns