Ecmascript Stylesheet for JSP 0.92

## EcmaScript 0.92 Stylesheet

`

      <?xml version="1.0" ?>
      <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

        <xsl:template match="/jsp-script">
          <xsl:apply-templates select="import"/>

          <xsl:apply-templates select="declaration"/>

          <xsl:text>
            function service(servletrequest, servletresponse) {
      	var headerCount = 0;
      	var headers = new Array();

              var errorPage = null;
              var contentType = "text/html";

              var input = servletrequest.getReader();
              var output = servletresponse.getWriter();
          </xsl:text>

          <xsl:apply-templates select="errorpage"/>
          <xsl:apply-templates select="contenttype"/>
          <xsl:apply-templates select="header"/>

          <xsl:text>
              servletresponse.setContentType(contentType);
              for (var i = 0; i < headers.length; i++) {
                servletresponse.setHeader(headers[i].name, headers[i].value);
              }
              // User code
          </xsl:text>

          <xsl:apply-templates select="body/*" />

          <xsl:text>
            }
          </xsl:text>
        </xsl:template>

        <xsl:template match="*" priority="-1"/>

        <xsl:template match="import">
          <xsl:script><![CDATA[
            var result = "// User imports\n";
            var csImport = this.getData();
            var importList = csImport.split(",");
            for (var i = 0; i < importList.length; i++) {
              result += "load(\"" + importList[i] + "\");\n"
             }
            return result;
          ]]></xsl:script>
        </xsl:template>

        <xsl:template match="declaration">
          <xsl:text>&#10;// Declarations&#10;</xsl:text>
          <xsl:value-of select="."/>
          <xsl:text>&#10;&#10;</xsl:text>
        </xsl:template>

        <xsl:template match="contenttype">
          <xsl:text>  contentType = "</xsl:text>
    	  <xsl:value-of select="."/>
          <xsl:text>";&#10;</xsl:text>
        </xsl:template>

        <xsl:template match="errorpage">
          <xsl:text>  errorPage = "</xsl:text>
          <xsl:value-of select="."/>
          <xsl:text>";&#10;</xsl:text>
        </xsl:template>

        <xsl:template match="header">
          <xsl:text>  headers[headersCount++] = new Header("</xsl:text>
          <xsl:value-of select="@name"/>
          <xsl:text>", "</xsl:text>
          <xsl:value-of select="@value"/>
          <xsl:text>");&#10;</xsl:text>
        </xsl:template>

        <xsl:template match="boilerplate">
          <xsl:text>  output.print("</xsl:text>
          <xsl:value-of select="."/>
          <xsl:text>");&#10;</xsl:text>
        </xsl:template>

        <xsl:template match="scriptlet">
          <xsl:text>&#10;</xsl:text>
          <xsl:value-of select="."/>
          <xsl:text>&#10;</xsl:text>
        </xsl:template>

        <xsl:template match="expression">
          <xsl:text>  output.print(</xsl:text>
          <xsl:value-of select="."/>
          <xsl:text>);&#10;</xsl:text>
        </xsl:template>

      </xsl:stylesheet>

`