Subject: Re: create XSLT from XML or XSD
From: "Jacek Radajewski" <jacekrad@xxxxxxxxx>
Date: Mon, 28 Jul 2008 09:02:55 +1000
|
Michael,
Sure. This was not meant to be a complete implementation. Just a 5
minute hack. Do you think that this is something that people would
find useful? I do have little bit of spare time on my hands at the
moment.
-j
updated version below
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml"/>
<xsl:template match="/">
<xsl:element name="xsl:stylesheet">
<xsl:namespace name="xsl"
select="'http://www.w3.org/1999/XSL/Transform'"/>
<xsl:attribute name="version" select="'2.0'"/>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="xs:import">
<xsl:text>
</xsl:text>
<xsl:comment><xsl:value-of select="@schemaLocation"/> was not
imported.</xsl:comment>
</xsl:template>
<xsl:template match="xs:include">
<xsl:text>
</xsl:text>
<xsl:comment><xsl:value-of select="@schemaLocation"/> was not
included.</xsl:comment>
</xsl:template>
<xsl:template match="xs:element[@name]">
<xsl:text>

</xsl:text>
<xsl:comment> auto generated stub for element <xsl:value-of select="@name"/>
</xsl:comment>
<xsl:text>
</xsl:text>
<xsl:element name="xsl:template">
<xsl:attribute name="match" select="@name"/>
<xsl:element name="xsl:apply-templates"/>
</xsl:element>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
On Mon, Jul 28, 2008 at 8:40 AM, Michael Kay <mike@xxxxxxxxxxxx> wrote:
>> This is a very basic implementation which simply creates a
>> XSLT stub template for each element declared in your schema
>> (XSD). It does not cater for elements with the same name in
>> different scope, but can be easily modified to do so.
>
> It also doesn't cater for xs:include or xs:import or for schema documents
> that have a targetNamespace.
>
> And I think it would be more helpful to generate stubs that do the same as
> the default template rule, that is, to invoke xsl:apply-templates.
>
> Michael Kay
> http://www.saxonica.com/
>
>
--
Jacek Radajewski
|