gpt4 book ai didi

java - Saxon 是否提供了对返回节点进行排序的方法?

转载 作者:行者123 更新时间:2023-12-02 12:04:29 27 4
gpt4 key购买 nike

Saxon 是否有办法按排序顺序返回节点,其中“顺序”由返回节点中的 1 个或多个节点/属性定义?

换句话说,XPath 查询可以是:

/Order/Dates/Date order by .

谢谢 - 戴夫

最佳答案

答案是肯定的,方法有很多!但如果您想要准确的答案,您需要对要求更准确一些。

您可以使用 XQuery:

for $x in /Order/Dates/Date order by $x return $x

如果您有 Saxon,那么没有什么特别的理由需要一个纯 XPath 而不是 XQuery 的解决方案,但 XPath 3.0 确实通过 fn:sort 函数具有一定的排序能力:

sort(/Order/Dates/Date, function($date){ $date })

但是,除了最简单的排序键之外,fn:sort 涉及需要 Saxon-PE 或更高版本的高阶函数。

当然也可以使用 XSLT 进行排序。

如果您生成表达式,我认为生成 XQuery 表单没有太大区别:

for $e in /*/Employee 
order by $e/firstName, $e/LastName
return e

和 XPath 版本

sort(/*/Employee,
function($e){$e/firstName, $e/lastName})

并且很可能存在任何明显的性能差异。 XQuery 版本更加灵活,例如允许降序排列、选择排序规则、处理缺失值等。

这些是标准的 XPath/XQuery 工具,因此它们在 W3C 规范中进行了描述。 XQuery 排序从 1.0 就已经存在,因此任何有关 XQuery 的书籍都会对其进行描述; XPath 排序是 XPath 3.1 中的新增功能,因此您在许多书籍或在线教程中还找不到它。

关于java - Saxon 是否提供了对返回节点进行排序的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46999843/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com