我对xquery分组有一个问题。从我所了解的情况来看,通常的情况是在for循环中使用distinct-values
作为文档,但是因为在分组值之前我有条件满足,所以我不太确定如何做到这一点。Xquery根据条件分组的结果
这是我的XMLDB的一部分:
<element tag="0001,0000" name="Pos1>198</element>
<element tag="0001,0001" name="Pos2">123</name>
<element tag="0002,0001" name="Pos3">433</element>
<element tag="000b,0000" name="Pos3">16</element>
<element tag="0005,0000" name="Pos4>532</element>
<element tag="0005,0001" name="Pos5">342</name>
<element tag="0008,0001" name="Pos6">17</element>
满足的条件是,x坐标(数或hexdec)必须在奇数值(例如,从上面的XML,我将仅需要结果来自tag =“0001,...”,tag =“000b,...”,tag =“0005,...”),然后计算每个组中有多少项。
这是结果应该什么样子:
<group>
<element xcoord="0001">2</element>
<element xcoord="000b">1</element>
<element xcoord="0005">2</element>
</group>
我的XQuery代码到目前为止是这样的,在那里我可以生成具有奇数x坐标的结果,但我不知道如何着手对从这里进行分组。
import module namespace functx="http://www.functx.com" at "http://www.xqueryfunctions.com/xq/functx-1.0-nodoc-2007-01.xq";
for $x in collection('/db/mapdb/')//element
let $coord := number(functx:substring-before-last($x/@tag, ","))
where $coord mod 2 != 0
return $x
请告诉我。非常感谢你。
问得好,+1。查看我的答案,获得完整和正确的解决方案。 – 2010-11-24 17:19:39