我有一个名为$answer
的序列,其中包含从XML文件中的元素中提取的属性。在$answer
内,我有以下3个属性:1, 3, 3
和另一个名为$p
的属性序列:1, 3
我尝试这样做以通过执行
来获取出现次数for $x in $p
return count (index-of($x, $answer))
因为我在另一个帖子中看到它是一个解决方案,但它给了我错误。这样做的正确方法是什么?
答案 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])
对给定数据产生相同的结果。