0

我有一个$answer使用从 XML 文件的元素中提取的属性调用的序列。在里面$answer我有以下 3 个属性:1, 3, 3和另一个属性序列$p1, 3

我试图这样做以获取出现次数

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

因为我在另一篇文章中将其视为解决方案,但它给了我错误。这样做的正确方法是什么?

4

2 回答 2

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。

于 2012-04-06T15:34:53.443 回答
0

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

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

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

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

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

于 2012-04-06T21:38:49.137 回答