XPath 3.1 fn:降序排序

问题描述 投票:0回答:1

使用 XPath 3.1 进行排序使用 fn:sort(),最多具有 3 个参数(目标、排序规则、函数)。 问题是关于函数参数的定义和使用,它会冒泡排序键,应该如何在给定键和排序规则上进行反向(降序)排序?

我没有找到例子或解释。这个排序函数看起来相当复杂,令人惊讶的是它不处理反向排序。但怎么办呢?

问候。

sorting reverse xpath-3.1
1个回答
0
投票

该函数本身允许您提供排序键,如果它是数字,您当然可以使用否定来反转排序

function($item) { -$item/value }

对于其他值或一般情况,你是对的,函数没有提供简单的选项,但你可以在结果上调用

fn:reverse
,所以你必须希望 XPath 查询优化器可以在链接方面做得很好
fn:sort 
fn:reverse
例如
('c', 'a', 'b') => sort() => reverse()

请注意,XPath 4、XQuery 4 和 XSLT 4 的开发工作正在取得进展,当前状态是 XPath 4

fn:sort
https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func -sort 扩展为允许附加第四个参数,其中包含一系列值
ascending
descending
来指示第三个参数(键函数)返回的每个键的排序方式。

BaseX(XQuery 处理器,XPath 函数在 XPath、XQuery 和 XSLT 之间共享,并且 XPath 是 XQuery 的子集,已经实现了 4 规范的一部分)已经支持第四个参数,请参阅 this online fidde 示例。

© www.soinside.com 2019 - 2024. All rights reserved.