<person name = "fred"/>
<person name ="sue"/>
<person name = "jill" />
<person name = "khan"/>
<cheese name ="camembert"/>
<cheese name="roquefort"/>
<liking person="fred" cheese="camembert"/>
<liking person="fred" cheese="roquefort"/>
<liking person ="sue" cheese ="roquefort"/>
<liking person ="jill" cheese = "camembert" />
<liking person ="khan" cheese = "camembert"/>
我使用FLOWR在上面的xml文档中找到了一对喜欢相同奶酪的人做了很多努力。 但是我无法制作逻辑可以帮助我制作一个逻辑来找到喜欢相同奶酪的配对的人,配对不应该重复。
答案 0 :(得分:2)
再次只是一个草图,因为它有编程任务的(俗气)气味:
通过仅查找以下人员,您将防止重复。
更新:发布试用后:
for $x in doc("cheese.xml")/cheeseEaters/cheese
for $y in doc("cheese.xml")/cheeseEaters/liking[@cheese = $x/@name]
for $z in $y[@cheese = $y/@cheese]
return $z/@person
正如我认为足够接近,这就是我在做的事情:
for $cheese in //cheese/@name
for $person1 in //liking[@cheese=$cheese]
for $person2 in $person1/following-sibling::liking[@cheese=$cheese]
return element pair {
$person1/@person/data(),
$person2/@person/data()
}
需要进行少量修改才能从您获得数据的地方加载数据,但这对您来说很容易。对您的代码的一些评论:
$x
和$y
下次阅读代码时会让您感到困惑,而其他所有人都会看到它。following-sibling
!