我有一个包含以下元素和属性的 XML文件: elementunit id="1" color="blue"/unit id="2" color="blue"/unit id="3" color="red"//element 我如何计算1)每种属性颜色的不同出现次数和2)每次不同事件的计数? 到目
<element> <unit id="1" color="blue"/> <unit id="2" color="blue"/> <unit id="3" color="red"/> </element>
我如何计算1)每种属性颜色的不同出现次数和2)每次不同事件的计数?
到目前为止,我已经尝试了distinct-values()和count()以及它们的组合,没有运气,以不同属性的数量或它们的数量结束,尽管我想得到两者.
我想得到的结果列表如下所示:
Blue 2 Red 1此查询应该执行您想要的操作:
let $input := <element> <unit id="1" color="blue"/> <unit id="2" color="blue"/> <unit id="3" color="red"/> </element> return for $value in distinct-values($input/unit/@color) let $count := count($input/unit[@color eq $value]) order by $count descending return concat($value," ",$count)
这在MarkLogic中为我生成以下输出:
blue 2 red 1
更新:我修改了查询,因此它按计数值对结果进行排序.