Angesichts dieses Xml-Dokuments:
<?xml version="1.0" encoding="UTF-8"?>
<mydoc>
<foo f="fooattr">
<bar r="barattr1">
<baz z="bazattr1">this is the first baz</baz>
</bar>
<bar r="barattr2">
<baz z="bazattr2">this is the second baz</baz>
</bar>
</foo>
</mydoc>
die von dieser xquery verarbeitet wird:
let $d := doc('file:///Users/mark/foo.xml')
let $barnode := $d/mydoc/foo/bar/baz[contains(@z, '2')]
let $foonode := $barnode/../../@f
return $foonode
Ich erhalte den folgenden Fehler:
"Cannot create an attribute node (f) whose parent is a document node".
Es scheint, dass die ../-Operation die übereinstimmenden Knoten aus dem Rest des Dokuments entfernt, so dass es denkt, es sei der Dokumentenknoten.
Ich bin offen für andere Ansätze, aber die Auswahl des übergeordneten Attributs hängt davon ab, dass das untergeordnete Attribut einen bestimmten Teilstring enthält.
Zum Wohl!