<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<!--
Copyright 1999-2004 The Apache Software Foundation
Licensed 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 -->
    <!-- ====================================================================== -->
    <!-- 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="Jon S. Stevens">
            <meta name="email" value="jon@latchkey.com">
            
           
                                    
                        
            <title>Velocity - You make the decision - Taglibs</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.ingrid.org/jajakarta/velocity/velocity-1.2-rc2/docs-ja/index.html">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="Taglibs"><strong>Taglibs</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>
Taglibs are intended to be the savior for JSP. They are billed as the
way to allow one to extend JSP so that there is a nice MVC abstraction
while still adding functionality to the base "language". This is where
Struts has concentrated a good portion of its efforts by providing a
nice taglib library for people to use.
</p>
                                                <p>
The advantage of using taglibs is that they allow you to extend the
"language" syntax of JSP to provide the things that are missing from it,
but are available in Java. In other words, instead of encouraging people
to embed Java code within their pages, this has been now abstracted to
encouraging people to embed XML tags in their page. How is this any
better than what ColdFusion did with their product? JSP is on the
cutting edge of re-inventing the broken wheel. Yea!
</p>
                                                <p>
This is an example that shows how logic would be embedded into your JSP
page. It is borrowed directly from the Struts documentation.
</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;%@ page language=&quot;java&quot; %&gt;
&lt;%@ taglib uri=&quot;/WEB-INF/struts-logic.tld&quot; prefix=&quot;logic&quot; %&gt;


&lt;!-- Is the number guess right? --&gt;
&lt;logic:equal parameter=&quot;number&quot; value=&quot;7&quot;&gt;
  You guessed right! You win a high speed blender!
&lt;/logic:equal&gt;


&lt;!-- If the number guessed was wrong --&gt;
&lt;logic:notEqual parameter=&quot;number&quot; value=&quot;7&quot;&gt;
  &lt;!-- Less Than --&gt;
  &lt;logic:lessThan parameter=&quot;number&quot; value=&quot;7&quot;&gt;
         A little higher...
  &lt;/logic:lessThan&gt;
  &lt;!-- Greater Than --&gt;
  &lt;logic:greaterThan parameter=&quot;number&quot; value=&quot;7&quot;&gt;
         A little lower...
  &lt;/logic:greaterThan&gt;
&lt;/logic:notEqual&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 same example using Velocity would be written like this:
</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;!-- Is the number guess right? --&gt;
#if ( $number == 7 )
  You guessed right! You win a high speed blender!
#end

&lt;!-- If the number guessed was wrong --&gt;
#if ( $number != 7 )
    &lt;!-- Less Than --&gt;
    #if ( $number &lt; 7 )
         A little higher...
    &lt;!-- Greater Than --&gt;
    #elseif ( $number &gt; 7 )
         A little lower...
    #end
#end
</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>
Of course this could be written even cleaner as:
</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>
#if($number == 7)
  You guessed right! You win a high speed blender!
#elseif( $number &lt; 7 )
  lower
#else
  higher
#end
</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>
This really falls into a preferences situation. In other words, which
syntax would someone prefer to use? It seems as though the amount of
typing required to implement the taglibs approach would be a major
deciding factor for many people. One reason is that the more typing that
needs to be done, the more chances for errors. Lets continue with
another example taken from the Struts documentation:
</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;%@ page language=&quot;java&quot; %&gt;
&lt;%@ taglib uri=&quot;/WEB-INF/struts-bean.tld&quot; prefix=&quot;bean&quot; %&gt;
&lt;%@ taglib uri=&quot;/WEB-INF/struts-logic.tld&quot; prefix=&quot;logic&quot; %&gt;

&lt;%
java.util.ArrayList list = new java.util.ArrayList();
  list.add(&quot;First&quot;);
  list.add(&quot;Second&quot;);
  list.add(&quot;Third&quot;);
  list.add(&quot;Fourth&quot;);
  list.add(&quot;Fifth&quot;);
  pageContext.setAttribute(&quot;list&quot;, list, PageContext.PAGE_SCOPE);
%&gt;

&lt;logic:iterate id=&quot;myCollectionElement&quot; name=&quot;list&quot;&gt;
  Element Value: &lt;bean:write name=&quot;myCollectionElement&quot; /&gt;&lt;br /&gt;
&lt;/logic:iterate&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>
It is clear from the Struts example above that the whole strict MVC
model has been broken again because a call to
<code>java.util.ArrayList</code> and creating an Object is embedding
Java code within a template. Compound that with the idea that one needs
to place that <code>ArrayList</code> into the <code>pageContext</code>
is even more confusing. Not only that but the designer has to remember
to use a bunch of cryptic code at the top of the file that makes
references to some taglib document as well as declare a prefix
attribute. Why do things need to be so overly complicated?
</p>
                                                <p>
The same example using Velocity would be written like this:
</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>
#set ( $list = [&quot;First&quot;, &quot;Second&quot;, &quot;Third&quot;, &quot;Fourth&quot;, &quot;Fifth&quot;] )

#foreach ( $item in $list )
  Element Value: $item&lt;br /&gt;
#end
</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>
Moving on with examples, we come back to the previous <a href="./ymtd-sampleapp.html">sample application</a> provided in Jason
Hunter's book that was shown before. This time it has been implemented
entirely within the Struts framework.
</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;%-- toolview-tag.jsp --%&gt;

&lt;%@ taglib uri=&quot;/WEB-INF/struts.tld&quot; prefix=&quot;struts&quot; %&gt;

&lt;%
  String title = &quot;Tool Listing&quot;;
  String deck = &quot;A list of content creation tools&quot;;
  String desc = &quot;Without tools, people are nothing more than animals.&quot;;
%&gt;

&lt;%@ include file=&quot;/header.jsp&quot; %&gt;

&lt;%@ page session=&quot;false&quot; %&gt;
&lt;%@ page errorPage=&quot;/errorTaker.jsp&quot; %&gt;

&lt;%-- Fetch the tools array as a request attribute --%&gt;
&lt;jsp:useBean id=&quot;tools&quot; class=&quot;Tool[]&quot; scope=&quot;request&quot;/&gt;

&lt;struts:iterate id=&quot;tool&quot; collection=&quot;&lt;%= tools %&gt;&quot;&gt;
  &lt;HR SIZE=2 ALIGN=LEFT&gt;

  &lt;H3&gt;
  &lt;%-- Automatically HTML-escapes values --%&gt;
  &lt;struts:property name=&quot;tool&quot; property=&quot;name&quot; /&gt;

  &lt;% if (((Tool)tool).isNewWithin(45)) { %&gt;
    &lt;FONT COLOR=#FF0000&gt;&lt;B&gt; (New!) &lt;/B&gt;&lt;/FONT&gt;
  &lt;% } else if (((Tool)tool).isUpdatedWithin(45)) { %&gt;
    &lt;FONT COLOR=#FF0000&gt;&lt;B&gt; (Updated!) &lt;/B&gt;&lt;/FONT&gt;
  &lt;% } %&gt;

  &lt;/H3&gt;
  &lt;A HREF=&quot;&lt;struts:property name=&quot;tool&quot; property=&quot;homeURL&quot;/&gt;&quot;&gt;
           &lt;struts:property name=&quot;tool&quot; property=&quot;homeURL&quot;/&gt;&lt;/A&gt;&lt;BR&gt;

  &lt;%-- Assume don't want HTML in comments --%&gt;
  &lt;struts:property name=&quot;tool&quot; property=&quot;comments&quot; /&gt;

&lt;/struts:iterate&gt;

&lt;%@ include file=&quot;/footer.jsp&quot; %&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>
At this point, we now have a combination of standard JSP tags as well as
Struts specific tags. The use of Struts has appeared to clean things up
significantly with regards to embedded scriptlets. Note that quite a 
few of JSP's warts are still shining through. Is it as easy to grok
as the Velocity version?
</p>
                                                <p>
Velocity comes in with a simpler soluton that is designed around the
idea of a few core template tags. A scripting language is something like
PHP which may require months of usage to completely master. A template
language is something that can be mastered in just a few hours. This is
what differentiates Velocity from being a scripting language vs. a
template language.
</p>
                                                <p>
For example, Velocity has the following core template tags (otherwise 
known as "directives"):
</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>
#if
#else
#elseif
#foreach
#set
#parse
#include
</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>
It is possible to add more #directives to Velocity either by adding them
directly to the parser or adding them through an API. It is also
possible to use a neat feature of Velocity called Velocimacro's which
are documented <a href="../user-guide.html#velocimacro">here</a>.
</p>
                                                <p>
Some people suggest that the benefit to JSP and Struts is that it simply
extends HTML, which is something that designers already understand. This
is a powerful argument. However, the reality is that HTML is not a
template language. In other words, there is no logic in HTML. For
example, it is not possible to embed conditional statements (like in the
very first example above) into HTML.
</p>
                                                <p>
What this means is that Taglibs allow developers to infinitely extend
HTML to become much much more than it previously was. Almost like
inventing another scripting language. This is reminiscent the early
browser wars where each company was implementing their own browser tags.
Netscape went so far as to invent the &lt;blink&gt; tag. What did we
learn from that? Is that really a good thing? Sure, standardizing
taglibs is a great idea. Will it ever become widely adopted? We sure
hope so.
</p>
                                                <p>
One last point to make about using a HTML syntax is that this really
pigeon holes JSP and Struts into simply being a tool for creating
dynamic HTML/XML/WML (ie: tag markup) code. Velocity on the other hand
is designed to take as input any type of text (Java, SQL, HTML, etc) and
output anything as a result of running it through its processing engine.
</p>
                                                <p>
You make the decision.
</p>
                                                <p>
<strong>[ <a href="ymtd-sampleapp.html">Sample App</a> &lt;- Previous | 
    Next -&gt; <a href="./ymtd-embedded.html">Embedded Usage</a> ]
</strong></p>
                            </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, The Apache Software Foundation
                    </em></font></div>
                </td></tr>
            </table>
        </body>
    </html>
<!-- end the processing -->




















