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

  <xsl:template match="/jsp-script">
    <xsl:text>// Generated by PolyJsp&#13;&#10;</xsl:text>

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

    <xsl:text>function service(servletrequest, servletresponse) {
  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="body/*" />

    <xsl:text>}&#13;&#10;</xsl:text>
  </xsl:template>

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

  <xsl:template match="import">
    <xsl:script><![CDATA[
      var result = "// User imports\r\n";

      var csImport = this.getText();
      var importList = csImport.split(",");
      for (var i = 0; i < importList.length; i++) {
        result += "doLoad(\"" + importList[i] + "\");\r\n";
      }
      result;
    ]]></xsl:script>
  </xsl:template>

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

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

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

  <xsl:template match="header">
    <xsl:text>  servletresponse.setHeader("</xsl:text>
    <xsl:value-of select="@name"/>
    <xsl:text>", "</xsl:text>
    <xsl:value-of select="@value"/>
    <xsl:text>");&#13;&#10;</xsl:text>
  </xsl:template>

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

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

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

</xsl:stylesheet>
