|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: xsl and schemas - getting rid of the xsi namespace
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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








