XQuery 3.0版本中的XQuery 3.0等效项分组依据

3 xquery

我有以下代码,并且我拥有的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)}"/>
Run Code Online (Sandbox Code Playgroud)

输出显示部门,totalQuantity和项目数。它应该按代码分组,上面的代码无法编译。

我希望有一种方法可以与xquery 1.0一起使用

joe*_*wiz 5

通常,等同于XQuery 3.0的“分组依据”增强的FLWOR表达式的XQuery 1.0等效项依赖于该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)}"/>
Run Code Online (Sandbox Code Playgroud)