Issues with XQuery insert

Wednesday, 27 January 2010 · 1 message
J
j.gager27 Jan 2010 22:00 #
Hello We are using BaseX6 to manage a local repository of XML artifacts in a Java based application. We initially start with an empty collection, and add documents as they are needed. We have tried a number of approaches to this (more to come on this in a separate email). One such approach is to insert the documents as nodes into the container using XQuery. Example: insert nodes document {<t:test xmlns:t='xyz' xmlns:s='def'>good <s:test>bye</s:test></t:test>} into collection('MyCollection') It seems to me that only the first namespace declaration is retrained. If I follow this insertion with the following query:
     declare namespace x ="xyz"; declare namespace y ="def"; collection('MyCollection')/x:test
I get the following result:
     <t:test xmlns:t="xyz">good <s:test xmlns:s="">bye</s:test></t:test>
Notice that the namespace for the prefix s is now empty. Further, if I reverse the order of the namespace declarations in the insert query:
     <t:test xmlns:s='def' xmlns:t='xyz'>good <s:test>bye</s:test></t:test>
The query used above will not return a result (presumably because the xyz namespace has been dropped). Has anyone else encountered such issues? Currently we are working around this by saving the XML content to a file and using the Add process - which seems to work as expected. If possible, we would prefer to avoid this extra step of saving the XML to a temporary file before adding it to our BaseX database. Thanks, J Gager

⚡Generated with XQuery