Xml 如何检查多个相同元素的列表是否使用属性标记了另一个列表的所有元素
如何检查“人员”是否拥有“车辆标签”中属性状态为ON的所有“车辆”Xml 如何检查多个相同元素的列表是否使用属性标记了另一个列表的所有元素,xml,xquery,Xml,Xquery,如何检查“人员”是否拥有“车辆标签”中属性状态为ON的所有“车辆” <deluxe person="John" brand="Mercedes"> <deluxe person="John" brand="Lamborgini"> <deluxe person="John" brand="Seat"> <deluxe person="Tyson" brand="Volva"> <deluxe person="Miles"
<deluxe person="John" brand="Mercedes">
<deluxe person="John" brand="Lamborgini">
<deluxe person="John" brand="Seat">
<deluxe person="Tyson" brand="Volva">
<deluxe person="Miles" brand="Wolkswagen">
以下是车辆列表:
<vehicule>
<car status="on">
<brand>Mercedes</brand>
</car>
<car status="off">
<brand>Peugeot</brand>
</car>
<car status="on">
<brand>Lamborgini</brand>
</car>
<car status="on">
<brand>Seat</brand>
</car>
</vehicules>
梅赛德斯
法国标致汽车
兰博基尼
座位
结果将是它返回元素
我从24小时以来就一直坚持这一点。我确信有更有效的方法来做到这一点……但我并不完全确定你在问什么,但我怀疑这会对你有所帮助
let $v :=
<vehicule>
<car status="on">
<brand>Mercedes</brand>
</car>
<car status="off">
<brand>Peugeot</brand>
</car>
<car status="on">
<brand>Lamborgini</brand>
</car>
<car status="on">
<brand>Seat</brand>
</car>
</vehicule>
let $p := <d>
<deluxe person="John" brand="Mercedes"/>
<deluxe person="John" brand="Lamborgini"/>
<deluxe person="John" brand="Seat"/>
<deluxe person="Tyson" brand="Volva"/>
<deluxe person="Miles" brand="Wolkswagen"/>
</d>
let $all := for $i in $v/car[@status="on"]/brand/string() order by $i return $i
for $person in distinct-values($p/deluxe/@person)
let $brands := for $i in $p/deluxe[@person=$person]/@brand/string() order by $i return $i
return if ($brands eq $all) then
$person
else
()
让$v:=
梅赛德斯
法国标致汽车
兰博基尼
座位
let$p:=
让$all:=对于$v/car中的$i[@status=“on”]/brand/string()订单按$i返回$i
对于不同值的$person($p/deluxe/@person)
让$brands:=对于$p中的$i/豪华[@person=$person]/@brand/string()订单按$i返回$i
如果返回($brands eq$all),则返回
$person
其他的
()
如果您能够使用,您可以隐式地执行内部循环;查询的读取相当自然
让$vehicleues:=
让$人:=
对于具有不同值的$person($persons/@person)
哪里
$Vehicleus/car中的每辆$car[@status='on']
满足$car/品牌=$persons/豪华[@person=$person]/@brand
返回$person
注意:您不能在序列上使用eq
。请使用count($brands[.=$all])eq count($all)
而不是$brands eq$all
。Eric,恐怕您已经被ML函数映射咬了一口。您尝试了什么?如果您在这方面坚持了一天,您至少应该能够提供一些东西。