RE: [xsl] Replacing DTD reference with xsd reference

Subject: RE: [xsl] Replacing DTD reference with xsd reference
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Wed, 2 Apr 2003 10:32:31 +0100
Getting rid of the DTD reference is trivial. Adding the XSD reference is
trivial. The only non-trivial part is changing the element names to be
in a different namespace. For that you need a variant of the identity
template:

<xsl:template match="*">
  <xsl:element name="local-name()" namespace="mynamespace.uri">
    <xsl:copy-of select="@*"/>
    <xsl:apply-templates/>
  </xsl:element>
</xsl:template>

To add the schema reference just add another rule for the top-level
element:

<xsl:template match="/*">
  <xsl:element name="local-name()" namespace="mynamespace.uri"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
    <xsl:attribute name="xsi:schemaLocation">mynamespace.uri
trap.xsd</xsl:attribute>
    <xsl:copy-of select="@*"/>
    <xsl:apply-templates/>
  </xsl:element>
</xsl:template>

Michael Kay
Software AG
home: Michael.H.Kay@xxxxxxxxxxxx
work: Michael.Kay@xxxxxxxxxxxxxx 

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> Cams Ismael
> Sent: 02 April 2003 08:39
> To: 'xsl-list@xxxxxxxxxxxxxxxxxxxxxx'
> Subject: [xsl] Replacing DTD reference with xsd reference
> 
> 
> Hello all,
> 
> can somebody provide me some help with the following. I have 
> thousands of files that conform to a DTD. Now I have written 
> a schema for these files. Therefore a transformation is 
> needed for all the files.
> 
> 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 ?
> 
> Kind regards,
> Ismaël
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread