Subject: Re: [xsl] xsl and schemas - getting rid of the xsi namespace From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Thu, 11 Jul 2002 18:54:41 +0100 |
Hi Mario, > 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". When you copy an element with xsl:copy of xsl:copy-of, it copies the element itself and all the namespace nodes on that element. You're copying a doc element with an namespace node for the XMLSchema-instance namespace, so you get a namespace declaration in the result. To avoid it, don't copy the element, instead use xsl:element to create it; add the following template to your stylesheet: <xsl:template match="*" priority="-0.4"> <xsl:element name="{name()}" namespace="{namespace-uri()}"> <xsl:apply-templates select="node()|@*" /> </xsl:element> </xsl:template> [The priority ensures that it's a higher priority than the identity template you're currently using, and lower than the other templates that you might have.] Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] xsl and schemas - getting rid, Mario Michlits | Thread | [xsl] Searching nodes, alexandre bord |
RE: [xsl] substring function, CROFT, MICHAEL | Date | [xsl] Nested/embedded/self-referent, Edward L. Knoll |
Month |