到目前为止,我有一个xquery表达式的输出:
<skill what="C" level="4"/>,
<skill what="C" level="2"/>,
<skill what="C" level="3"/>,
<skill what="Java" level="3"/>,
<skill what="Java" level="3"/>,
<skill what="Java" level="3"/>,
<skill what="SQL" level="2"/>,
<skill what="SQL" level="3"/>,
我想基于&#34;什么&#34;来汇总输出。属性。所以不是上面我想要的东西:
3, 3, 2
对此的任何帮助肯定会受到赞赏。
注意:我使用的是XML 1.0
答案 0 :(得分:0)
如果目标是产生每种不同技能的发生次数计数:
如果是这种情况并且您可以使用XQuery 3.0,那么您可以使用group by
表达式,例如:
xquery version "3.0";
for $skill in /skill
let $what := string($skill/@what)
group by $what
return
count($skill)
如果您没有XQuery 3.0,但拥有XQuery 1.0,那么您需要首先使用@what
确定您希望分组的fn:distinct-values
的独特技能。从那里你可以循环遍历独特的技能,然后你可以用谓词过滤,最后确定最低技能水平。例如:
xquery version "1.0";
let $what-skills := distinct-values(/skill/string(@what))
return
for $what-skill in $what-skills
let $grouped-skills := /skill[@what eq $what-skill]
let $count-distinct-skill := count($grouped-skills)
return
$count-distinct-skill