计算XQuery中序列中属性的出现次数

时间:2012-04-06 15:20:33

标签: xpath xquery

我有一个名为$answer的序列,其中包含从XML文件中的元素中提取的属性。在$answer内,我有以下3个属性:1, 3, 3和另一个名为$p的属性序列:1, 3

我尝试这样做以通过执行

来获取出现次数
for $x in $p
return count (index-of($x, $answer)) 

因为我在另一个帖子中看到它是一个解决方案,但它给了我错误。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

您想要按其值对所有属性进行排序吗? group by语句可能会给你预期的结果:

for $a in (attribute a {'A'}, attribute b {'B'}, attribute a {'A'})
group by $v := $a
return concat(count($a), ': ', $v)

但请注意,您的XQuery实现需要支持XQuery 3.0。

答案 1 :(得分:0)

您需要将传递的参数交换为index-of():

for $x in $p
return count(index-of($answer, $x))

但更简单的方法是在谓词中测试相等性:

for $x in $p
return count($answer[. eq $x])

对给定数据产生相同的结果。