Ik ben een beetje aan het spelen met XQuery, gebruikmakend van XHive (http://support.x-hive.com/xquery/index.html, klik in de eerste paragraaf op "specify your own queries")
Daar heb ik nu de volgende query uitgevoerd:
Deze query zorgt ervoor dat ik iedere host terugkrijg die als descendant het pad 'bpath1' heeft.
Hier gaat het echter niet om, het gaat me erom dat ik nu voor iedere host in de file een <result> element aanmaak, maar dit wil ik helemaal niet. Wat ik wil is gewoon alleen de <host> elementen die aan de conditie voldoen en verder helemaal niks. Het weghalen van <result> en </result> in de code levert echter een foutmelding.
Is er een manier om dit voor elkaar te krijgen?
Het resultaat zoals ik het nu krijg heeft de volgende vorm:
Dit wil ik graag in deze vorm hebben (dus zonder de lege <result> elementen):
Daar heb ik nu de volgende query uitgevoerd:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| <results>{
let $doc := document("/XQuery/docs/xmach-1/directory.xml")
for $h in $doc//host
return
<result>
{
if ($h/descendant::path[@name='bpath1'])
then <host>{$h/@*}</host>
else ()
}
</result>
}</results> |
Deze query zorgt ervoor dat ik iedere host terugkrijg die als descendant het pad 'bpath1' heeft.
Hier gaat het echter niet om, het gaat me erom dat ik nu voor iedere host in de file een <result> element aanmaak, maar dit wil ik helemaal niet. Wat ik wil is gewoon alleen de <host> elementen die aan de conditie voldoen en verder helemaal niks. Het weghalen van <result> en </result> in de code levert echter een foutmelding.
Is er een manier om dit voor elkaar te krijgen?
Het resultaat zoals ik het nu krijg heeft de volgende vorm:
code:
1
2
3
4
5
6
7
8
| <results>
<result/>
<result/>
<result>
<host name="ahost1"/>
</result>
<result/>
</results> |
Dit wil ik graag in deze vorm hebben (dus zonder de lege <result> elementen):
code:
1
2
3
| <results> <host name="ahost1"/> </results> |