<?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> // Declarations </xsl:text>
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="contenttype">
<xsl:text> contentType = "</xsl:text>
<xsl:value-of select="."/>
<xsl:text>"; </xsl:text>
</xsl:template>
<xsl:template match="errorpage">
<xsl:text> errorPage = "</xsl:text>
<xsl:value-of select="."/>
<xsl:text>"; </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>"); </xsl:text>
</xsl:template>
<xsl:template match="boilerplate">
<xsl:text> output.print("</xsl:text>
<xsl:value-of select="."/>
<xsl:text>"); </xsl:text>
</xsl:template>
<xsl:template match="scriptlet">
<xsl:text> </xsl:text>
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="expression">
<xsl:text> output.print(</xsl:text>
<xsl:value-of select="."/>
<xsl:text>); </xsl:text>
</xsl:template>
</xsl:stylesheet>