XQuery 错误:使用返回空结果的变量进行筛选



我尝试运行以下XQuery:

let $d := doc("ferry.xml")
let $x := $d/ferry/trips/trip[@depart='08:00' and start='Stockholm']/captain[@crew]
return $d/ferry/crews/crew[@crewID=$x]/name

并得到一个空的结果。

我想在<name><crew crewID="JI">的地方获取值(=吉尔(。

我可以看到$x包括<captain crew="JI"/>和我跑步的时间

return $d/ferry/crews/crew[@crewID='JI']/name

我得到了预期的结果。

如何使返回函数正确读取变量?下面是 XML 文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ferry>
<ships>
<ship shipID="SKHM">
<name>Skeppsholm</name>
</ship>
<ship shipID="PERL">
<name>Pearl</name>
<cars>40</cars>
</ship>
<ship shipID="REVG">
<name>Revenge></name>
<length>50</length> 
</ship>
</ships>
<crews>
<crew crewID="JO">
<name>Jack</name>
<job>service</job>
<job>deckhand</job>
</crew>
<crew crewID="JI">
<name>Jill</name>
<job>captain</job>
<job>firstmate</job>
</crew>
<crew crewID="HA">
<name>Harry</name>
<job>deckhand</job> 
</crew>
</crews>
<trips>
<trip date="20171020" depart="08:00">
<start>Stockholm</start>
<end>Vaxholm</end> 
<captain crew="JI" /> 
<service crew="JO" /> 
</trip>
<trip date="20171130" depart="10:00">
<start>Nacka</start>
<end>Gustavberg</end> 
<captain crew="JI" /> 
<deckhand crew="HA" />
<service crew="JA" /> 
</trip>
</trips>
</ferry>

尝试更改

let $x := $d/ferry/trips/trip[@depart='08:00' and start='Stockholm']/captain[@crew]

let $x := $d/ferry/trips/trip[@depart='08:00' and start='Stockholm']/captain/@crew

您需要$x只是crew属性的值;当前它返回整个元素<captain crew="JI"/>

最新更新