[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
|