[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Replacing DTD reference with xsd reference
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
|
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
|