这就是您可以给文档元素一个不同的命名空间并将所有其他元素移动到 null 命名空间的方法:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns0="https://api.ladbrokes.com/v1/sportsbook-couchbase/Temp.xsd">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*">
<xsl:element name="ns0:{local-name()}">
<xsl:apply-templates select="@* | node()" />
</xsl:element>
</xsl:template>
<xsl:template match="*/*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@* | node()" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
在您的示例输入上运行时,结果是:
<ns0:Class xmlns:ns0="https://api.ladbrokes.com/v1/sportsbook-couchbase/Temp.xsd">
<blurb>Test</blurb>
<channels>
<e>I</e>
<e>J</e>
<e>K</e>
</channels>
<classSortCode>Test</classSortCode>
<classStatus>Test</classStatus>
<creationDateTime>2013-03-21T22:29:01.58+05:30</creationDateTime>
<isActive>true</isActive>
<lastUpdatedDateTime>2013-03-21T22:29:01.58+05:30</lastUpdatedDateTime>
<locale>Test</locale>
</ns0:Class>
为了澄清起见,这是您可以更改文档元素的名称空间并将其他所有内容保留在它们已经拥有的名称空间中的方法。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns0="https://api.ladbrokes.com/v1/sportsbook-couchbase/Temp.xsd">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*">
<xsl:element name="ns0:{local-name()}">
<xsl:copy-of select="namespace::*" />
<xsl:apply-templates select="@* | node()" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
这就是结果。请注意顶部命名空间声明中的微小但关键的区别:
<ns0:Class xmlns:ns0="https://api.ladbrokes.com/v1/sportsbook-couchbase/Temp.xsd"
xmlns="https://api.ladbrokes.com/v1/sportsbook-couchbase/SportsbookCouchbase.xsd">
<blurb>Test</blurb>
<channels>
<e>I</e>
<e>J</e>
<e>K</e>
</channels>
<classSortCode>Test</classSortCode>
<classStatus>Test</classStatus>
<creationDateTime>2013-03-21T22:29:01.58+05:30</creationDateTime>
<isActive>true</isActive>
<lastUpdatedDateTime>2013-03-21T22:29:01.58+05:30</lastUpdatedDateTime>
<locale>Test</locale>
</ns0:Class>