[xsl] xsl and schemas - getting rid of the xsi namespace

Subject: [xsl] xsl and schemas - getting rid of the xsi namespace
From: "Mario Michlits" <mario.michlits@xxxxxxxx>
Date: Thu, 11 Jul 2002 18:14:19 +0200
Hi

I would like to transform an XML document with a referenced schema like this:

<doc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:noNamespaceSchemaLocation="mySchema.xsd">
	<documentcontent/>
</doc>

into a document like this

<!DOCTYPE doc SYSTEM "myDTD.dtd">
<doc>
	<documentcontent/>
	<someothertags/>
</doc>

I wrote an XSLT file like this

<!-- copies all the nodes to the result doc -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; exclude-result-prefixes="xsi">
<xsl:output method="xml" doctype-system="myDTD.dtd"/>
	<xsl:template match="node() | @*">
		<xsl:copy>
			<xsl:apply-templates select="node() | @*"/>
		</xsl:copy>
	</xsl:template>

<!-- removes @xsi:noNamespaceSchemaLocation from output -->
<xsl:template match="@xsi:noNamespaceSchemaLocation"/>

This works fine. The only problem I still have is to remove the namespace xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; from the output document, because the parser validating against the DTD produces the error "attribute xmlns:xsi not defined in Document Type Definition".

<!DOCTYPE doc SYSTEM "myDTD.dtd">
<doc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
	<documentcontent/>
	<someothertags/>
</doc>

Any help will be appreciated.

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread