2012-04-06 41 views
0

我有一个名为$answer的序列,其中的属性是从XML文件中的元素中提取的。里面$answer我有以下3个属性:1, 3, 3,并呼吁$p带属性的另一种序列:1, 3计算XQuery中序列中属性的出现次数

我试图做这做

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

获得出现的次数,因为我认为这是一个解决方案在另一个帖子中,但它给了我错误。什么是正确的方法来做到这一点?

+1

它使用哪种实现提供了什么错误?你的输入序列究竟是什么样的(可能只是像你在查询中那样写输入,以便我们可以使用它)以及输出应该是什么?我还没有完全意识到你的问题。 – 2012-04-06 15:41:15

回答

0

你想按照它的值对所有属性进行排序吗?这组语句可能会给你预期的结果:但是,请注意,你的XQuery实现需要支持XQuery 3.0。

+0

我最终想要的是返回$ answer(一次)中出现1次的次数,并且$ answer(2)中出现3次。我正在使用Xquery 1.0,因此不幸的是没有组 – AaronLee 2012-04-06 15:44:18

0

你需要给你传递的参数交换到指数的():

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

但是一个简单的方法是在谓词测试相等:

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

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