1let $doc := <doc>
2<item><key1>1</key1>  <key2>1</key2> <key3>1</key3> <value>a</value></item>
3<item><key1>1</key1>  <key2>1</key2> <key3></key3> <value>b</value></item>
4<item><key1>1</key1>  <key2>1</key2> <key3></key3> <value>c</value></item>
5<item><key1>1</key1>                 <key3>1</key3> <value>d</value></item>
6<item><key1>1</key1>                 <key3>1</key3> <value>e</value></item>
7<item><key1>1</key1>                 <key3>2</key3> <value>f</value></item>
8<item><key1>1</key1>                  <key3>2</key3> <value>g</value></item>
9</doc>
10for $item in $doc/item
11let $key1 := $item/key1
12let $key2 := $item/key2
13let $key3 := $item/key3
14let $value := $item/value
15group by $key1, $key2, $key3
16return <result key1="{$key1}" key2="{$key2}" key3="{$key3}">{$value/text()}</result>
17