Wenn der Standardnamespace in einem Element sich befindet, funktioniert XQuery nicht mehr. Folgenden ist mein Testdata: <?xml version="1.0" encoding="UTF-8" ?> <doc xmlns="http://iso.org/OTX" > <a>foo bar</a> <a>foa bar</a> </doc> Die Abfrage ist einfach: basex:db('db')//a. Wir brauchen Basex sehr dringend für unseren OTX-Api. Es wäre wunderbar, wenn dieser Bug schnell behoben sind. Vielen Dank voraus. Mit freundlichen Grüßen Truong-An Nguyen
Hey Truong-An,
<?xml version="1.0" encoding="UTF-8" ?> <doc xmlns="http://iso.org/OTX" > <a>foo bar</a> <a>foa bar</a> </doc>
Im doc-Element wird ein Default Namespace deklariert. Dieser ist nicht nur fuer dieses Element, sonder auch fuer Knoten auf der Descendant- Achse gueltig. Der deklarierte Namespace muss somit bei der Query- Formulierung angehaengt werden (s.u.). Folgende Query sollte euer Problem loesen: "xquery declare namespace ns="http://iso.org/OTX"; basex:db('test')//ns:a" Meldet euch ruhig, falls weitere Probleme bestehen. Gruesse, Lukas
kleine Fehlerkorrektur: Der Datenbankname in meiner Query ist 'test', bei euch aber 'db'. Somit folgt korrekt: "xquery declare namespace ns="http://iso.org/OTX"; basex:db('db')//ns:a"
Das 'xquery'-Keyword wird nur benoetigt, wenn die Query als BaseX- Command verfasst wird. Somit ergibt sich fuer euch: "declare namespace ns="http://iso.org/OTX"; basex:db('db')//ns:a" Jetzt sollte es stimmen - ich entschuldige mich fuer die Umstaende. Gruesse, Lukas
participants (2)
-
Lukas Kircher -
ngtruongan@gmail.com