blob: 5a3d2046b896b20078b51b4e0b25fbe1aea32335 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- Content Stylesheet for Site -->
<!-- start the processing -->
<!-- ====================================================================== -->
<!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
<!-- Main Page Section -->
<!-- ====================================================================== -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<meta name="author" value="Velocity Documentation Team">
<meta name="email" value="jvanzyl@zenplex.com">
<meta name="author" value="John Castura">
<meta name="email" value="jcastura@apache.org">
<title>Velocity - VTL Reference Guide</title>
</head>
<body bgcolor="#ffffff" text="#000000" link="#525D76">
<table border="0" width="100%" cellspacing="0">
<!-- TOP IMAGE -->
<tr>
<td align="left">
<a href="http://jakarta.apache.org"><img src="http://jakarta.apache.org/images/jakarta-logo.gif" border="0"/></a>
</td>
<td align="right">
<a href="http://jakarta.apache.org/velocity/"><img src="./images/logo.gif" alt="Velocity" border="0"/></a>
</td>
</tr>
</table>
<table border="0" width="100%" cellspacing="4">
<tr><td colspan="2">
<hr noshade="" size="1"/>
</td></tr>
<tr>
<!-- LEFT SIDE NAVIGATION -->
<td width="20%" valign="top" nowrap="true">
<!-- ============================================================ -->
<p><strong>About</strong></p>
<ul>
<li> <a href="./index.html">Overview</a>
</li>
<li> <a href="./getting-started.html">Getting Started</a>
</li>
<li> <a href="http://jakarta.apache.org/builds/jakarta-velocity/">Download</a>
</li>
<li> <a href="./install.html">Install</a>
</li>
<li> <a href="./design.html">Design</a>
</li>
<li> <a href="./contributors.html">Contributors</a>
</li>
<li> <a href="./changes.html">ChangeLog</a>
</li>
<li> <a href="./code-standards.html">Coding Standards</a>
</li>
<li> <a href="./license.html">License</a>
</li>
<li> <a href="./todo.html">TODO</a>
</li>
<li> <a href="http://issues.apache.org/bugzilla/enter_bug.cgi?product=Velocity">Report Issues</a>
</li>
</ul>
<p><strong>Community</strong></p>
<ul>
<li> <a href="./powered.html">Powered By Velocity</a>
</li>
<li> <a href="http://jakarta.apache.org/site/getinvolved.html">Get Involved</a>
</li>
<li> <a href="http://jakarta.apache.org/site/mail.html">Mailing Lists</a>
</li>
<li> <a href="http://jakarta.apache.org/site/cvsindex.html">CVS Repositories</a>
</li>
</ul>
<p><strong>Docs</strong></p>
<ul>
<li> <a href="./user-guide.html">User's Guide (English)</a>
</li>
<li> <a href="./user-guide_fi.html">User's Guide (Finnish)</a>
</li>
<li> <a href="./user-guide_fr.html">User's Guide (French)</a>
</li>
<li> <a href="./user-guide_es.html">User's Guide (Spanish)</a>
</li>
<li> <a href="./developer-guide.html">Developer's Guide</a>
</li>
<li> <a href="./vtl-reference-guide.html">VTL Reference Guide</a>
</li>
<li> <a href="./specification.html">Specification</a>
</li>
<li> <a href="./api/index.html">Javadoc</a>
</li>
</ul>
<p><strong>Tools</strong></p>
<ul>
<li> <a href="./tools/index.html">Velocity Tools</a>
</li>
<li> <a href="./anakia.html">Anakia : XML->doc tool</a>
</li>
<li> <a href="./texen.html">Texen : text generation</a>
</li>
<li> <a href="./dvsl/index.html">DVSL : XML xformation</a>
</li>
<li> <a href="./veltag.html">Veltag : JSP taglib</a>
</li>
<li> <a href="./migration.html">Migration to Velocity</a>
</li>
<li> <a href="./devtools.html">Editors and IDEs</a>
</li>
</ul>
<p><strong>Comparisons</strong></p>
<ul>
<li> <a href="./ymtd/ymtd.html">YMTD</a>
</li>
<li> <a href="./differences.html">VM/WM Differences</a>
</li>
<li> <a href="./casestudy1.html">JSP vs. Velocity</a>
</li>
<li> <a href="./casestudy2.html">XMLC vs. Velocity</a>
</li>
</ul>
<p><strong>Site Translations</strong></p>
<ul>
<li> <a href="http://jakarta.apache.org/velocity/">English</a>
</li>
<li> <a href="http://www.jajakarta.org/velocity/">Japanese</a>
</li>
</ul>
</td>
<td width="80%" align="left" valign="top">
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="About this Guide"><strong>About this Guide</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
This guide is the reference for the Velocity Template Language
(VTL). For more information, please also refer to the <a href="user-guide.html">Velocity User Guide</a>.
</p>
</blockquote>
</p>
</td></tr>
<tr><td><br/></td></tr>
</table>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="References"><strong>References</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="Variables"><strong>Variables</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
Notation:
</p>
<p>
<strong>$</strong> [ <strong>!</strong> ][ <strong>{</strong> ][
<strong>a..z</strong>, <strong>A..Z</strong> ][ <strong>a..z</strong>,
<strong>A..Z</strong>, <strong>0..9</strong>, <strong>-</strong>,
<strong>_</strong> ][ <strong>}</strong> ]
</p>
<p>
Examples:
</p>
<ul>
<li>Normal notation: <variable>$mud-Slinger_9</variable></li>
<li>Silent notation: <variable>$!mud-Slinger_9</variable></li>
<li>Formal notation: <variable>${mud-Slinger_9}</variable></li>
</ul>
</blockquote>
</td></tr>
<tr><td><br/></td></tr>
</table>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="Properties"><strong>Properties</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
Notation:
</p>
<p>
<strong>$</strong> [ <strong>{</strong> ][ <strong>a..z</strong>,
<strong>A..Z</strong> ][ <strong>a..z</strong>, <strong>A..Z</strong>,
<strong>0..9</strong>, <strong>-</strong>, <strong>_</strong> ]*
<strong>.</strong>[<strong>a..z</strong>, <strong>A..Z</strong> ][
<strong>a..z</strong>, <strong>A-Z</strong>, <strong>0..9</strong>,
<strong>-</strong>, <strong>_</strong> ]* [ <strong>}</strong> ]
</p>
<p>
Examples:
</p>
<ul>
<li>Regular Notation: $customer.Address</li>
<li>Formal Notation: ${purchase.Total}</li>
</ul>
</blockquote>
</td></tr>
<tr><td><br/></td></tr>
</table>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="Methods"><strong>Methods</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
Notation:
</p>
<p>
<strong>$</strong> [ <strong>{</strong> ][ <strong>a..z</strong>,
<strong>A..Z</strong> ][ <strong>a..z</strong>, <strong>A..Z</strong>,
<strong>0..9</strong>, <strong>-</strong>, <strong>_</strong> ]*
<strong>.</strong>[ <strong>a..z</strong>, <strong>A..Z</strong> ][
<strong>a..z</strong>, <strong>A..Z</strong>, <strong>0..9</strong>,
<strong>-</strong>, <strong>_</strong> ]*<strong>(</strong> [
<i>opional parameter list...</i> ] <strong>)</strong> [
<strong> } </strong>]
</p>
<p>
Examples:
</p>
<ul>
<li>Regular Notation: $customer.getAddress()</li>
<li>Formal Notation: ${purchase.getTotal()}</li>
<li>Regular Notation with Parameter List: $page.setTitle( "My Home
Page" )</li>
</ul>
</blockquote>
</td></tr>
<tr><td><br/></td></tr>
</table>
<p>
VTL Properties can be used as a shorthand notation for VTL Methods
that take <em>get</em> and <em>set</em>. Either
<em>$object.getMethod()</em> or <em>$object.setMethod()</em> can be
abbreviated as <em>$object.Method</em>. It is generally preferable to
use a Property when available. The main difference between Properties
and Methods is that you can specify a parameter list to a Method.
</p>
</blockquote>
</p>
</td></tr>
<tr><td><br/></td></tr>
</table>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="Directives"><strong>Directives</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="#set - Establishes the value of a reference"><strong>#set - Establishes the value of a reference</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
Format:
</p>
<p>
<strong>#set( $</strong>ref <strong>=</strong> [ <strong>"</strong>,
<strong>'</strong> ]arg[ <strong>"</strong>, <strong>'</strong> ] )
</p>
<p>
Usage:
</p>
<ul>
<li><em>$ref</em> - The LHS of the assignment must be a variable
reference or a property reference.</li>
<li><em>arg</em> - The RHS of the assignment, <em>arg</em> is parsed
if enclosed in double quotes, and not parsed if enclosed in single
quotes. If the RHS evaluates to <em>null</em>, it is <b>not</b>
assigned to the LHS.</li>
</ul>
<p>
Examples:
</p>
<ul>
<li>Variable reference: #set( $monkey = $bill )</li>
<li>String literal: #set( $monkey.Friend = 'monica' )</li>
<li>Property reference: #set( $monkey.Blame = $whitehouse.Leak
)</li>
<li>Method reference: #set( $monkey.Plan = $spindoctor.weave($web)
)</li>
<li>Number literal: #set( $monkey.Number = 123 )</li>
<li>Range operator: #set( $monkey.Numbers = [1..3] )</li>
<li>Object array: #set( $monkey.Say = ["Not", $my, "fault"] )</li>
</ul>
<p>
The RHS can also be a simple arithmetic expression, such as:
</p>
<ul>
<li>Addition: #set( $value = $foo + 1 )</li>
<li>Subtraction: #set( $value = $bar - 1 )</li>
<li>Multiplication: #set( $value = $foo * $bar )</li>
<li>Division: #set( $value = $foo / $bar )</li>
<li>Remainder: #set( $value = $foo % $bar )</li>
</ul>
</blockquote>
</td></tr>
<tr><td><br/></td></tr>
</table>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="#if / #elseif / #else - output conditional on truth of statements"><strong>#if / #elseif / #else - output conditional on truth of statements</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
Format:
</p>
<p>
<strong>#if(</strong> [condition] <strong>)</strong> [output] [
<strong>#elseif( </strong>[condition] <strong>)</strong> [output] ]* [
<strong>#else</strong> [output] ]
<strong>#end</strong>
</p>
<p>
Usage:
</p>
<ul>
<li><em>condition</em> - If a boolean, considered true if it has a
true false; if not a boolean, considered true if not null.</li>
<li><em>output</em> - May contain VTL.</li>
</ul>
<p>
Examples:
</p>
<ul>
<li>Equivalent Operator: #if( $foo == $bar )</li>
<li>Greater Than: #if( $foo &gt; 42 )</li>
<li>Less Than: #if( $foo &lt; 42 )</li>
<li>Greater Than or Equal To: #if( $foo &gt;= 42 )</li>
<li>Less Than or Equal To: #if( $foo &lt;= 42 )</li>
<li>Equals Number: #if( $foo == 42 )</li>
<li>Equals String: #if( $foo == "bar" )</li>
<li>Boolean NOT: #if( !$foo )</li>
</ul>
</blockquote>
</td></tr>
<tr><td><br/></td></tr>
</table>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="#foreach - Loops through a list of objects"><strong>#foreach - Loops through a list of objects</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
Format:
</p>
<p>
<strong>#foreach(</strong> <em>$ref</em> <strong>in</strong> <em>arg</em>
<strong>)</strong> <em>statement</em> <strong>#end</strong>
</p>
<p>
Usage:
</p>
<ul>
<li><em>$ref</em> - The first variable reference is the item.</li>
<li><em>arg</em> - May be one of the following: a reference to a
list (i.e. object array, collection, or map), an array list, or
the range operator.</li>
<li>
<em>statement</em> - What is output each time Velocity finds a
valid item in the list denoted above as <i>arg</i>. This output is
any valid VTL and is rendered each iteration of the loop.
</li>
</ul>
<p>
Examples of the #foreach(), omitting the statement block :
</p>
<ul>
<li>Reference: #foreach ( $item in $items )</li>
<li>Array list: #foreach ( $item in ["Not", $my, "fault"] )</li>
<li>Range operator: #foreach ( $item in [1..3] )</li>
</ul>
<p>
Velocity provides an easy way to get the loop counter so that you
can do something like the following:
</p>
<div align="left">
<table cellspacing="4" cellpadding="0" border="0">
<tr>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
</tr>
<tr>
<td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#ffffff"><pre>
&lt;table&gt;
#foreach( $customer in $customerList )
&lt;tr&gt;&lt;td&gt;$velocityCount&lt;/td&gt;&lt;td&gt;$customer.Name&lt;/td&gt;&lt;/tr&gt;
#end
&lt;/table&gt;
</pre></td>
<td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
</tr>
<tr>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
</tr>
</table>
</div>
<p>
The default name for the loop counter variable reference, which is
specified in the velocity.properties file, is $velocityCount. By
default the counter starts at 1, but this can be set to either 0 or
1 in the <code>velocity.properties</code> file. Here's what the loop
counter properties section of the <code>velocity.properties</code>
file appears:
</p>
<div align="left">
<table cellspacing="4" cellpadding="0" border="0">
<tr>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
</tr>
<tr>
<td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#ffffff"><pre>
# Default name of the loop counter
# variable refernce.
counter.name = velocityCount
# Default starting value of the loop
# counter variable reference.
counter.initial.value = 1
</pre></td>
<td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
</tr>
<tr>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
</tr>
</table>
</div>
</blockquote>
</td></tr>
<tr><td><br/></td></tr>
</table>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="#include - Renders local file(s) that are not parsed by Velocity"><strong>#include - Renders local file(s) that are not parsed by Velocity</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
Format:
</p>
<p>
<strong>#include( </strong>arg[, arg2, ... argn]<strong> )</strong>
</p>
<ul>
<li><em>arg</em> - Refers to a valid file under TEMPLATE_ROOT.</li>
</ul>
<p>
Examples:
</p>
<ul>
<li>String: #include( "disclaimer.txt", "opinion.txt" )</li>
<li>Variable: #include( $foo, $bar )</li>
</ul>
</blockquote>
</td></tr>
<tr><td><br/></td></tr>
</table>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="#parse - Renders a local template that is parsed by Velocity"><strong>#parse - Renders a local template that is parsed by Velocity</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
Format:
</p>
<p>
<strong>#parse(</strong> arg <strong>)</strong>
</p>
<ul>
<li><em>arg</em> - Refers to a template under TEMPLATE_ROOT.</li>
</ul>
<p>
Examples:
</p>
<ul>
<li>String: #parse( "lecorbusier.vm" )</li>
<li>Variable: #parse( $foo )</li>
</ul>
<p>
Recursion permitted. See <em>parse_directive.maxdepth</em> in
<code>velocity.properties</code>
to change from parse depth. (The default parse depth is 10.)
</p>
</blockquote>
</td></tr>
<tr><td><br/></td></tr>
</table>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="#stop - Stops the template engine"><strong>#stop - Stops the template engine</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
Format:
</p>
<p>
<strong>#stop</strong>
</p>
<p>
Usage:
</p>
<p>
This will stop execution of the current template. This is good for
debugging a template.
</p>
</blockquote>
</td></tr>
<tr><td><br/></td></tr>
</table>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="#macro - Allows users to define a Velocimacro (VM), a repeated segment of a VTL template, as required"><strong>#macro - Allows users to define a Velocimacro (VM), a repeated segment of a VTL template, as required</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
Format:
</p>
<p>
<strong>#macro(</strong> vmname $arg1 [ $arg2 $arg3 ... $argn ]
<strong>)</strong> [ VM VTL code... ] <strong>#end</strong>
</p>
<ul>
<li><em>vmname</em> - Name used to call the VM
(<em>#vmname</em>)</li>
<li><em>$arg1 $arg2 [ ... ]</em> - Arguments to the VM. There can be
any number of arguments, but the number used at invocation must
match the number specified in the definition.</li>
<li><em>[ VM VTL code... ]</em> - Any valid VTL code, anything you
can put into a template, can be put into a VM.</li>
</ul>
<p>
Once defined, the VM is used like any other VTL directive in a
template.
</p>
<div align="left">
<table cellspacing="4" cellpadding="0" border="0">
<tr>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
</tr>
<tr>
<td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#ffffff"><pre>
#vmname( $arg1 $arg2 )
</pre></td>
<td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
</tr>
<tr>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
</tr>
</table>
</div>
<p>
VMs can be defined in one of two places:
</p>
<ol>
<li><i>Template library:</i> can be either VMs pre-packaged with
Velocity or custom-made, user-defined, site-specific VMs;
available from any template</li>
<li><i>Inline:</i> found in regular templates, only usable when
<em>velocimacro.permissions.allowInline=true</em> in
<code>velocity.properties</code>.</li>
</ol>
</blockquote>
</td></tr>
<tr><td><br/></td></tr>
</table>
</blockquote>
</p>
</td></tr>
<tr><td><br/></td></tr>
</table>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="Comments"><strong>Comments</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
Comments are not rendered at runtime.
</p>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="Single Line"><strong>Single Line</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
Example:
</p>
<p>
<strong>## This is a comment.</strong>
</p>
</blockquote>
</td></tr>
<tr><td><br/></td></tr>
</table>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="Multi Line"><strong>Multi Line</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
Example:
</p>
<p>
<strong>
#*<br />
This is a multiline comment.<br />
This is the second line<br />
*#
</strong>
</p>
</blockquote>
</td></tr>
<tr><td><br/></td></tr>
</table>
</blockquote>
</p>
</td></tr>
<tr><td><br/></td></tr>
</table>
</td>
</tr>
<!-- FOOTER -->
<tr><td colspan="2">
<hr noshade="" size="1"/>
</td></tr>
<tr><td colspan="2">
<div align="center"><font color="#525D76" size="-1"><em>
Copyright &#169; 1999-2004, Apache Software Foundation
</em></font></div>
</td></tr>
</table>
</body>
</html>
<!-- end the processing -->