Я пытаюсь запустить следующий 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">
(= Jill).
Я вижу, что $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>