Subject: RE: [xsl] Replacing DTD reference with xsd reference From: Jarno.Elovirta@xxxxxxxxx Date: Wed, 2 Apr 2003 11:20:51 +0300 |
Hi, > So I have: > > <?xml version="1.0"?> > <!DOCTYPE trap SYSTEM "./trap.dtd"> > > <trap> > .... > </trap> > > The result should be: > > <?xml version="1.0"?> > <trap xmlns="mynamespace.uri" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="mynamespace.uri trap.xsd"> > .... > </trap> > > Because copy-of select copies also the namespace, this is not > an option for > me (because I want to transform from no namespace into > mynamespace.uri). Is > there a good way to do this with XSLT, or should I better use > a script for > transforming my xml files ? <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="mynamespace.uri"> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="*" priority="1"> <xsl:element name="{name()}"> <xsl:if test="not(parent::*)"> <xsl:attribute name="xsi:schemaLocation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <xsl:value-of select="document('')/*/namespace::*[string-length(name()) = 0]" /> <xsl:text> trap.xsd</xsl:text> </xsl:attribute> </xsl:if> <xsl:apply-templates select="@*|node()" /> </xsl:element> </xsl:template> </xsl:stylesheet> Cheers, Jarno - Assemblage 23: Naked (God Module RMX - 125 BPM) XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Replacing DTD reference w, Michael Kay | Thread | [xsl] Antenna House Announces the r, Keiko Hiraide |
[xsl] Replacing DTD reference with , Cams Ismael | Date | Re: [xsl] Replacing DTD reference w, David Carlisle |
Month |