我有一个XML文件,结构如下:
<person height="170"/>
<person height="155"/>
<person height="192"/>
...
<tree height="100"/>
<tree height="300"/>
<tree height="120"/>
我需要归还所有至少有3棵树的人,其高度在人的身高范围内+ - 10.
例如,如果一个人的身高为155,如果至少有3棵树的高度在145到165之间,则该人将被退回。
我试图实现它并达到:
//person[count(//tree[@height >>>>>>is in range 10 to person's height<<<<<]) >= 3]
我无法实现内部部分。我尝试使用“当前”和“自我”,但我似乎没有正确使用它们。
答案 0 :(得分:2)
这是您可以使用for $me in .
成语的地方:
//person[count(for $me in . return //tree[
@height <= ($me/@height + 10) and @height >= ($me/@height - 10)]) >= 3]
这里我使用单次迭代for
表达式来捕获当前person
(第一级谓词的.
)所以我可以在第二级内引用它-level谓词(.
是tree
)。