mem-op namespace is output
tademianhess opened this issue · 1 comments
tademianhess commented
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>
benibela commented
It might help to add
declare copy-namespaces no-preserve, no-inherit;
in the module