【问题标题】:XQuery 3.0 equivalent group by in xquery 1.0 versionxquery 1.0 版本中的 XQuery 3.0 等效分组依据
【发布时间】:2017-11-20 03:34:35
【问题描述】:

我有以下代码,而我拥有的 saxon jar 文件无法读取 xquery 3.0。

for $item in doc("order.xml")//item
group by $d := $item/@dept
order by $d
return 
  <department totalQuantity="{sum($item/@quantity)}"
              code="{$d}"
              numItems="{count($item)}"/>

输出显示部门、totalQuantity 和项目数。 应该是按代码分组的,上面的代码没有编译通过。

我希望有一种适用于 xquery 1.0 的方法

【问题讨论】:

  • 撒克逊的哪个版本?

标签: xquery


【解决方案1】:

通常,XQuery 1.0 等效于 XQuery 3.0“分组依据”增强的 FLWOR 表达式依赖于fn:distinct-values() 函数来查找用于将项目分组在一起的不同键。找到键后,您可以简单地使用 XQuery 1.0 FLWOR 表达式遍历键并选择具有匹配键的项目。这是您的查询的 XQuery 1.0 等效项:

let $items := doc("order.xml")//item
let $depts := distinct-values($items/@dept)
for $dept in $depts
let $dept-items := $items[@dept eq $dept]
order by $dept
return
    <department totalQuantity="{sum($dept-items/@quantity)}"
                code="{$dept}"
                numItems="{count($dept-items)}"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 2012-01-18
    • 1970-01-01
    • 2014-01-17
    • 2014-11-01
    相关资源
    最近更新 更多