<document>
  <header>
    <product>resin</product>
    <title>Overview</title>
    <description>
      <p>
      JSP creates a document (such as HTML) from <em>template</em>
      text and scripting <em>actions</em>.  Template text is returned
      verbatim to the requesting client, and actions are used to fill
      in dynamic values and do things conditionallly.
      </p>
    </description>
  </header>

<body>

<s1 title="JSP">
<p>Resin supports Sun's JSP 2.0 specification.  JSP creates an HTML
page from HTML <em>template</em> text, <em>tag libraries</em> and
scripting <em>actions</em>.  Resin supports the JSTL standard tag
library, the development of custom tag libraries, and Java as the
scripting language.</p>

<example>
&lt;% String title="Counter"; %&gt;
&lt;html&gt;
        
&lt;head&gt;
&lt;title&gt;&lt;%= title %&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body bgcolor='white'&gt;
&lt;jsp:useBean id='counter' class='Counter' scope='application'/&gt;
&lt;h1&gt;&lt;%= title %&gt;&lt;/h1&gt;

Welcome, visitor &lt;%= counter.getHit() %&gt;!
&lt;/body&gt;
&lt;/html&gt;

</example>

<p>JSP supports an equivalent XML syntax.  The XML has the benefit of
consistency with the price of some extra verbosity.</p>

<example>
&lt;jsp:scriptlet&gt;String title="Counter"; &lt;/jsp:scriptlet&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;&lt;jsp:expression&gt;title&lt;/jsp:expression&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body bgcolor='white'&gt;
&lt;jsp:useBean id='counter' class='Counter' scope='application'/&gt;
&lt;h1&gt;&lt;jsp:expression&gt; title &lt;/jsp:expression&gt;&lt;/h1&gt;

Welcome, visitor &lt;jsp:expression&gt; counter.getHit()&lt;/jsp:expression&gt;!
&lt;/body&gt;
&lt;/html&gt;

</example>
</s1>
</body>
</document>