我尝试运行以下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"/>
。