<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->

<!-- Content Stylesheet for Site -->

        
<!-- start the processing -->
    <!-- ====================================================================== -->
    <!-- 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>
            <style>
              a:visited { color: blue; }
              body	{ font-family: arial, helvetica, sans-serif; }
            </style>
        </head>

        <body bgcolor="#ffffff" text="#000000" link="#525D76">        
            <table border="0" width="100%" cellspacing="4">
            
      <tr><td bgcolor="#525D76">&nbsp;
        <font size="+2" color="#ffffff" face="arial,helvetica,sanserif">
          <strong>VTL Reference Guide</strong>
        </font>
      </td></tr>
      
                <tr><td colspan="2">
                    <hr noshade="" size="1"/>
                </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"><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"><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"><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"><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"><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"><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"><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 argumentss, 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-2002, Apache Software Foundation
                    </em></font></div>
                </td></tr>
            </table>
        </body>
    </html>
<!-- end the processing -->




















