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
basex-talk@mailman.uni-konstanz.de