Submission only takes namespaces from specific elements: instance, model and main document node. So any namespaces declared in between are not included. It must be possible to ask the document for all namespaces visible at a certain node instead of the specific copying we are doing now.
"It must be possible to ask the document for all namespaces visible at a certain node instead of the specific copying we are doing now." When I wrote the code, I couldn't figure out how to do that. smaug might know more :)
It seems that transformiix does not keep namespaces declarations done at root level, it only dumps namespaces which will be actually used in the resulting XML. That is a problem when trying to transform schemas, as namespaces which are declared sometimes refer to element declarations like <xsd:element name="foo:bar"/>. The namespace foo is not used in the markups of the schemas, but it has to be kept in the resulting XML. As far as I know, the attachment does not even describe the actual behaviour. Other XSLT processors keep the namespaces declared at root level.