xmlns
не просто еще один атрибут, но обозначает изменение пространства имен. Так что это немного сложнее. Попробуйте это:
<?xml version='1.0' ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<xsl:template match="/">
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<xsl:apply-templates select="Rs"/>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
</xsl:template>
<xsl:template match="node()">
<xsl:element name="{local-name(.)}" namespace="http://tempuri.org/schemas">
<!-- the above line is the tricky one. We can't copy an element from -->
<!-- one namespace to another, but we can create a new one in the -->
<!-- proper namespace. -->
<xsl:copy-of select="@*"/>
<xsl:apply-templates select="node()|*"/>
</xsl:element>
</xsl:template>
<xsl:template match="text()">
<xsl:if test="normalize-space(.) != ''">
<xsl:value-of select="."/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Некоторые гимнастики не так важны, если вы не используете indent="yes"
, но я постарался сделать так, чтобы они максимально соответствовали вашим результатам.