xsl-list
[Top] [All Lists]

Re: [xsl] create XSLT from XML or XSD

2008-07-27 16:03:25
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>&#xA;</xsl:text>
    <xsl:comment><xsl:value-of select="@schemaLocation"/> was not
imported.</xsl:comment>
  </xsl:template>

  <xsl:template match="xs:include">
    <xsl:text>&#xA;</xsl:text>
    <xsl:comment><xsl:value-of select="@schemaLocation"/> was not
included.</xsl:comment>
  </xsl:template>

  <xsl:template match="xs:element[(_at_)name]">
    <xsl:text>&#xA;&#xA;</xsl:text>
    <xsl:comment> auto generated stub for element <xsl:value-of select="@name"/>
    </xsl:comment>
    <xsl:text>&#xA;</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(_at_)saxonica(_dot_)com> 
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/


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





-- 
Jacek Radajewski

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>