ryanjdew/XQuery-XML-Memory-Operations

mem-op namespace is output

tademianhess opened this issue · 1 comments

It looks like this was partially fixed in 2014 with commit 0b3a72d, but I am still getting the mem-op namespace included in output if I call insert-child on the same element used for in mem:copy()

Example shows the problem:

xquery version "1.0-ml";
import module namespace mem = "http://maxdewpoint.blogspot.com/memory-operations/functional" 
   at "memory-operations-functional.xqy";
let $x := <root><original-container><one/><two/><three/><four/><five/></original-container><new-container/></root> 
return mem:execute( mem:insert-child(mem:copy($x), $x, <foo/>) )
===>
<root xmlns:mem-op="http://maxdewpoint.blogspot.com/memory-operations"><original-container><one/><two/><three/><four/><five/></original-container><new-container/><foo/></root>

This example avoids the problem (inserting into original-container and not root):

xquery version "1.0-ml";
import module namespace mem = "http://maxdewpoint.blogspot.com/memory-operations/functional" 
   at "memory-operations-functional.xqy";
let $x := <root><original-container><one/><two/><three/><four/><five/></original-container><new-container/></root> 
let $oc := $x/original-container
return mem:execute( mem:insert-child(mem:copy($x), $oc, <foo/>) )
===>
<root><original-container><one/><two/><three/><four/><five/><foo/></original-container><new-container/></root>

It might help to add

declare copy-namespaces no-preserve, no-inherit; 

in the module