Вам необходимо понять, как пространства имен работают в модели данных XDM. Каждый узел элемента имеет набор привязок пространств имен (prefix-uri) в области видимости, которые получаются при просмотре всех объявлений пространства имен в элементах-предках. Когда узел элемента сериализуется, все внутренние пространства имен сериализуются как атрибуты объявления пространства имен, потому что процессор не знает, какие из них необходимы, а какие нет.
В вашем случае требуется одно из пространств имен (ns) (поскольку оно используется в именах элементов), а другое - нет (оно нигде не используется).
В XSLT (2.0+) вы можете избавиться от неиспользуемых пространств имен, используя <xsl:copy>
с copy-namespaces='no'
. Но XPath всегда дает вам входные узлы без изменений: поэтому, если элемент имеет два пространства имен в области ввода, он все равно будет иметь два пространства имен в области вывода, и они будут видны при сериализации элемента.