<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">
  
  <!-- probably very clumsy, but it works ;) -->

  <xsl:output 
    omit-xml-declaration="yes" 
    method="text"
    indent="no"
    encoding="UTF-8"
    />
  
  <xsl:template match="body">
    <xsl:text>&lt;?xml version="1.0" encoding="utf-8"?&gt;&#x0A;</xsl:text>
    <xsl:text>&lt;patternlist xmlns:xs="http://www.w3.org/2001/XMLSchema"&#x0A;</xsl:text>
    <xsl:text>      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;</xsl:text>
    <xsl:apply-templates />
    <xsl:text>&lt;/patternlist&gt;</xsl:text>
  </xsl:template>

  <xsl:template match="div1|glist|spec">
    <xsl:apply-templates />
  </xsl:template>

  <xsl:template match="example">
    <xsl:if test="ancestor::div2/attribute::class='pattern'">
      <xsl:text>&lt;example name=&#x22;</xsl:text>
      <xsl:value-of select="attribute::id" />
      <xsl:text>&#x22;&gt;</xsl:text>
    </xsl:if>
    <xsl:apply-templates />
    <xsl:if test="ancestor::div2/attribute::class='pattern'">
      <xsl:text>&lt;/example&gt;</xsl:text>
    </xsl:if>

  </xsl:template>

  <xsl:template match="eg[attribute::class='schemaexample']">
    <xsl:text>&lt;typedef&gt;</xsl:text>
    <xsl:value-of select="." />
    <xsl:text>&lt;/typedef&gt;</xsl:text>
  </xsl:template>
  
  <xsl:template match="eg[attribute::class='URI']">
    <xsl:text>&lt;uri&gt;</xsl:text>
    <xsl:value-of select="." />
    <xsl:text>&lt;/uri&gt;</xsl:text>
  </xsl:template>
  
  <xsl:template match="eg[attribute::class='instanceexample']">
    <xsl:text>&lt;instance&gt;</xsl:text>
    <xsl:value-of select="." />
    <xsl:text>&lt;/instance&gt;</xsl:text>
  </xsl:template>   
  
  <xsl:template match="div2">
    <xsl:if test="attribute::class='pattern'">
      <!-- construct the outer element of the pattern -->
      <xsl:text>&lt;pattern name=&#x22;</xsl:text>
      <xsl:value-of select="attribute::id" />
      <xsl:text>&#x22; xmlns:ex=&#x22;</xsl:text>
      <xsl:value-of select="descendant::eg[attribute::class='URI']" />
      <xsl:text>&#x22;&gt;</xsl:text>
      <xsl:apply-templates />
      <xsl:text>&lt;/pattern&gt;</xsl:text>
    </xsl:if>
  </xsl:template>
  
  <xsl:template match="def">
    <xsl:if test="child::eg">
      <xsl:apply-templates />
    </xsl:if>
    <xsl:if test="child::example">
      <xsl:apply-templates />
    </xsl:if>
  </xsl:template>

  <xsl:template match="*">
  </xsl:template>
  
</xsl:stylesheet>

