当前位置: 首页 > 知识库问答 >
问题:

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

苏华荣
2023-03-14

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

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

/Order/Dates/Date order by .

谢谢戴夫

共有1个答案

殳经略
2023-03-14

答案是肯定的,有很多方法!但是如果你想要一个精确的答案,你需要对需求更加精确一点。

您可以使用XQuery:

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

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

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中是新的,因此在许多书籍或在线教程中还找不到它。

 类似资料:
  • 从priority_balanced_power_precission给出的精确度有多高得到了这个? 高精度模式使用所有位置提供商,但是,它优先考虑位置提供商,并包括GPS和位置提供商。定位精度大约在10米范围内。 NO_POWER不使用任何位置提供商,而是从其他应用程序获取位置的被动模式。精确度可能是一英里或更多。它完全基于其他应用程序最近获取的位置。 Priority_balanced_pow

  • 问题内容: 在许多其他语言中,例如。Haskell,很容易多次重复一个值或函数,例如。以获得值的8个副本的列表1: 但是我还没有在Java 8中找到它。Java 8的JDK中是否有这样的功能? 或等效于范围 似乎可以明显替代Java中的冗长语句 有类似的东西 尽管这个示例实际上看起来并不简洁……但是希望它更具可读性。 问题答案: 对于此特定示例,您可以执行以下操作: 如果需要一个不同于1的步骤,则

  • 如果PDF已经以结构化的方式包含要提取的数据,则会更好。类似于HTML的条纹化版本。特别是对于表,有大量的信息丢失。例如,当您将Word文档转换为PDF,然后转换为文本时。 PDF标准提供了一种存储表结构的方法吗?如果没有,是否可以扩展PDF标准?这个过程是什么?

  • 我有一个类,它有一个包含来自类的对象。我在中有一个函数,叫做。每个都有一个名为的函数,该函数返回一个值。我能以某种方式使用流使函数的主体看起来像这样吗?

  • 我在我的应用程序中使用了Neo4j(3.5.1)和Spring-data-neo4j(5.0.10.release)。我也在使用OGM。 我的节点之间有以下关系: 我试图写一个密码查询,以获得所有的零件在一辆车。但是,我想对结果进行分页,还想对按创建日期排序的零件进行排序(最近创建的零件首先返回)

  • 我有2个不同行的数据帧,dF1=(1098 x 2列)和df2=(1331 x2)例如: df1 df2 在pandas数据帧中,借助于获取彼此之间的最近点,我计算df1的每一行和df2的所有行之间的欧几里德距离,因此新的_df具有(1089 x 1331)。新德里 我想要这样的结果: 换句话说,我想让每一行新的_df按升序对列的值进行排序,最后返回我想要的结果。 我不能在熊猫数据帧中使用互相获取