This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: xsl and schemas - getting rid of the xsi namespace
- From: Jeni Tennison <jeni at jenitennison dot com>
- To: "Mario Michlits" <mario dot michlits at hico dot com>
- Cc: xsl-list at lists dot mulberrytech dot com
- Date: Thu, 11 Jul 2002 18:54:41 +0100
- Subject: Re: [xsl] xsl and schemas - getting rid of the xsi namespace
- Organization: Jeni Tennison Consulting Ltd
- References: <0C79A363CB0321418927D0CB1AD0403C097F1E@hicoetsrv000006.hico.local>
- Reply-to: xsl-list at lists dot mulberrytech dot com
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