我有一个$answer
使用从 XML 文件的元素中提取的属性调用的序列。在里面$answer
我有以下 3 个属性:1, 3, 3
和另一个属性序列$p
:1, 3
我试图这样做以获取出现次数
for $x in $p
return count (index-of($x, $answer))
因为我在另一篇文章中将其视为解决方案,但它给了我错误。这样做的正确方法是什么?
您想按属性值对所有属性进行排序吗?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。
您需要交换传递给 index-of() 的参数:
for $x in $p
return count(index-of($answer, $x))
但更简单的方法是测试谓词中的相等性:
for $x in $p
return count($answer[. eq $x])
对于给定的数据产生相同的结果。