I’m pulling JSON from an API, converting the string to the XML representation, and storing part of the resulting XML into BaseX. The problem is, I can’t get the
xmlns
namespace declaration to stick to the XML excerpt once it’s saved to BaseX. It seems to work when I display the unstored excerpt.
Here’s a short XQuery that illustrates my problem. Am I missing something? Is this a bug?
xquery version "3.1";
(: NAMESPACES :)
declare default element namespace "http://www.w3.org/2005/xpath-functions";
declare namespace db="http://basex.org/modules/db";
declare namespace output="http://www.w3.org/2010/xslt-xquery-serialization";
declare namespace update="http://basex.org/modules/update";
(: OPTIONS :)
declare option db:chop 'false';
declare option db:stripns 'false';
declare option output:indent 'yes';
declare option output:method 'xml';
(: MAIN QUERY :)
let $uri :=
"https://wwp.northeastern.edu/exist/rest/db/exhibits/xquery/people.xquery?file=caldwell.tenthmuse.xml"
let $full := json-to-xml(unparsed-text($uri))
let $snippet := $full/fn:array/fn:map[1]
let $workaround :=
<map xmlns="http://www.w3.org/2005/xpath-functions">{ $snippet/* }</map>
return (
db:create("test-ns",
($full, $snippet, $workaround),
("full.xml", "snippet.xml", "workaround.xml")),
update:output(($snippet, $workaround))
)
Thanks for your time!