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

Cart








