2017-11-20 17 views
2

私は以下のコードを持っています。私が持っているsaxon jarファイルはxquery 3.0を読むことができません。XQuery 3.0相当のグループby xquery 1.0 version

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)}"/> 

出力には、department、totalQuantity、およびアイテム数が表示されます。 これはコードでグループ化されていると想定されていますが、上記のコードはコンパイルされません。

私は期待していた

は、XQuery通常1.0

+0

どのバージョンのSaxonですか? – joewiz

答えて

3

-enhanced FLWOR式をグループ化するための明確な鍵を見つけるために、fn:distinct-values()機能に依存している「によるグループ」のXQuery 3.0ののXQuery 1.0と同等で動作するような方法をtheresのあなた一緒に項目。キーを見つけたら、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)}"/>