This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

xsl and schemas - getting rid of the xsi namespace


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]