Нетрудно изменить URI пространства имен, используемый в узлах пространства имен и в именах элементов и атрибутов. В таблице стилей с поддержкой схемы также возможно (но, возможно, сложнее) изменить URI пространства имен, используемый в значениях типа QName. Я подозреваю, что довольно сложно изменить отображаемые URI пространства имен:
непосредственно в таких атрибутах, как xsi: schemaLocation или xs: import (если вы не перечислите такие атрибуты)
в названиях ОБОЗНАЧЕНИЙ
в контенте с микросинтаксисом, например, Рассмотрим
<xsl:if test="namespace-uri() = 'http://old-namespace.com/'>
Если вам нужны только пространства имен, используемые в элементе и атрибутах, тогда вы можете использовать
<xsl:template match="*[namespace-uri()=$old-namespace]">
<xsl:element name="{name()}" namespace="{$new-namespace}">
<xsl:apply-templates select="@*, node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*[namespace-uri()='$old-namespace']">
<xsl:attribute name="{name()}" namespace="{$new-namespace}" select="."/>
</xsl:template>
вместе с шаблоном идентификации (или в версии 3.0, <xsl:mode on-no-match="shallow-copy"/>
), чтобы убедиться, что другие элементы и атрибуты копируются без изменений.
(Это XSLT 2.0, но его легко переписать в 1.0).