Решение Димитра Новатчева в порядке, но я также хотел бы отметить, что если вам нужно изменить пространства имен вложенных элементов, то лучше подойдет следующее:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="zzz">
<trade ID="{TradeId}">
<xsl:apply-templates select="*[not(self::TradeId)]" mode="change-ns"/>
</trade>
</xsl:template>
<xsl:template match="@*|node()" priority="-10" mode="change-ns">
<xsl:copy/>
</xsl:template>
<xsl:template match="*" mode="change-ns">
<xsl:element name="{name()}" namespace="my:Trade">
<xsl:apply-templates select="@*|node()" mode="change-ns"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
например. если у вас есть следующий входной документ
<trade ID="153">
<x:item xmlns:x="my:Trade" someattr="1">
<x:subitem anotherattr="2">A1</x:subitem>
<x:subitem anotherattr="3">A2</x:subitem>
</x:item>
<x:item xmlns:x="my:Trade">B</x:item>
<x:item xmlns:x="my:Trade">C</x:item>
</trade>
вы получите
<zzz>
<TradeId>153</TradeId>
<x:item xmlns:x="x:x" someattr="1">
<x:subitem anotherattr="2">A1</x:subitem>
<x:subitem anotherattr="3">A2</x:subitem>
</x:item>
<x:item xmlns:x="x:x">B</x:item>
<x:item xmlns:x="x:x">C</x:item>
</zzz>
Атрибуты добавлены, чтобы продемонстрировать, что они копируются правильно, а отдельный шаблон используется для шаблонов изменения пространства имен, чтобы они не мешали другому коду в случае, если вы хотите использовать их как часть большей таблицы стилей.