jvanzyl 00/10/04 19:19:30
Modified: docs code-standards.html contributors.html design.html
getting-started.html index.html install.html
script-elements.html
Log:
- edited docs.
Revision Changes Path
1.2 +26 -30 jakarta-velocity/docs/code-standards.html
Index: code-standards.html
===================================================================
RCS file: /home/cvs/jakarta-velocity/docs/code-standards.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- code-standards.html 2000/09/30 17:03:09 1.1
+++ code-standards.html 2000/10/05 02:19:29 1.2
@@ -18,28 +18,26 @@
<DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff"
face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="5"><B>Coding
Standards</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0"
cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000"
face="arial,helvetica,sanserif">
<P align="justify">
- This document describes a list of coding conventions that are required
- for code submissions to the project. By default, the coding conventions
- for most Open Source Projects should follow the existing coding conventions
- in the code that you are working on. For example, if the bracket is on
- the same line as the if statement, then you should write all your code
- to have that convention.<B></B>
-</P>
-
-<P align="justify">
- <B>If you commit code that does not follow these conventions and you
- are caught, you are responsible for also fixing your own code.</B>
+ Submissions to the Velocity project must follow the coding conventions
+ outlined in this document. Velocity developers
+ are asked to follow coding conventions already present in the code.
+ (For example, if the existing code has the bracket on
+ the same line as the if statement, then all subsequent code
+ should also follow that convention.) Anything not
+ explicitly mentioned in this document should adhere to the
+ official
+ <A href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">Sun
+ Java Coding Conventions</A>.
</P>
<P align="justify">
- Below is a list of coding conventions that are specific to Turbine,
- everything else not specificially mentioned here should follow the official
- <A href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">Sun
- Java Coding Conventions</A>.
+ <B>Developers who commit code that does not follow
+ the coding conventions outlined in this document will be
+ responsible for fixing their own code.</B>
</P>
<P align="justify">
-1. Brackets should begin and end on a new line. Examples:
+1. Brackets should begin and end on new lines. Examples:
</P>
<P align="justify">
@@ -71,8 +69,8 @@
</P>
<P align="justify">
-2. It is <B>OK</B> to have spaces between the parens or not. The preference
-is to not include the extra spaces. For example, both of these are ok:
+2. Spaces between parentheses are optional. The preference is to exclude
+extra spaces. Both of these conventions are acceptable:
</P>
<P align="justify">
@@ -87,10 +85,9 @@
</P>
<P align="justify">
-3. 4 spaces. <B>NO</B> tabs. Period. We understand that a lot of you like
-to use tabs, but the fact of the matter is that in a distributed development
-enviroment, when the cvs commit messages get sent to a mailing list, they
-are almost impossible to read if you use tabs.
+3. Four spaces. <B>NO</B> tabs. Period. The Velocity
+mailing list receives cvs commit messages that are almost impossible
+to read if tabs are used.
</P>
<P align="justify">
@@ -100,20 +97,19 @@
</P>
<P align="justify">
-4. Unix linefeeds for all .java source code files. Other platform specific
-files should have the platform specific linefeeds.
+4. Use Unix linefeeds for all .java source code files. Only platform-specific
+files (e.g. .bat files for Windows) should contain non-Unix linefeeds.
</P>
<P align="justify">
-5. Javadoc <B>MUST</B> exist on all your methods. Also, if you are working
-on existing code and there currently isn't a javadoc for that method/class/variable
-or whatever, then you should contribute and add it. This will improve the
-project as a whole.
+5. Javadoc <B>MUST</B> exist on all methods. Contributing
+a missing javadoc for any method, class, variable, etc., will be greatly
+appreciated as this will help to improve the Velocity project.
</P>
<P align="justify">
-6. The Jakarta Apache/Velocity License <B>MUST</B> be placed at the top
-of each and every file.
+6. The Jakarta Apache/Velocity License <B>MUST</B> be placed
+at the top of every file.
</P>
</FONT></TD></TR></TABLE></DIV><BR>
1.2 +9 -7 jakarta-velocity/docs/contributors.html
Index: contributors.html
===================================================================
RCS file: /home/cvs/jakarta-velocity/docs/contributors.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- contributors.html 2000/09/30 17:03:11 1.1
+++ contributors.html 2000/10/05 02:19:29 1.2
@@ -19,20 +19,22 @@
<P align="justify">
The people listed below have made significant contributions to Velocity by
- working long and hard to make quality software for the rest of the world to
use.
+ working long and hard to make quality software for the rest of the world to
+ use.
</P>
<P align="justify">
- If you would like to become a contributor, please see the document titled
- todo.html to find areas where you can contribute. If there is nothing in there
- that suits your interest, but you still have ideas, please feel free to suggest
- them on the mailing list.
+ If you would like to contribute to Velocity, please see the
+ <A href="todo.html">to do</A> list to find areas where you can contribute.
+ If there is nothing in there that suits your interest, but you still have
+ ideas, please feel free to suggest them on the mailing list.
</P>
<P align="justify">
- We are following a certification scheme like the one that is outlined here:
+ Velocity follows a certification scheme similar to the one that is outlined
+ on
<A
href="http://www.advogato.org/certs.html">http://www.advogato.org/certs.html</A>.
- The ordering of the names is based on the first contributor at the top to the
most recent
+ Names on this list are ordered from first contributor at the top to the most
recent contributor
at the bottom.
</P>
1.2 +53 -39 jakarta-velocity/docs/design.html
Index: design.html
===================================================================
RCS file: /home/cvs/jakarta-velocity/docs/design.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- design.html 2000/09/30 17:03:10 1.1
+++ design.html 2000/10/05 02:19:29 1.2
@@ -18,54 +18,68 @@
<DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff"
face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0"
width="5"><B>Design</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0"
cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000"
face="arial,helvetica,sanserif">
<P align="justify">
- Velocity is a Java based template engine. It can be used as a
- stand-alone utility for generating source code, HTML, reports,
+ Velocity is a Java-based template engine. It can be used as a
+ standalone utility for generating source code, HTML, reports,
or it can be combined with other systems to provide template
- services. One such example is the planned marriage of Velocity
- with the <A href="http://java.apache.org/turbine">Turbine</A>
- web application framework. Velocity will be tightly integrated with Turbine
- to provide a template service that will enable a true MVC model
- by which web applications may be developed.
+ services. Velocity will be tightly integrated with the
+ <A href="http://java.apache.org/turbine">Turbine</A>
+ web application framework. Velocity-Turbine
+ provide a template service by which web applications may be
+ developed according to a true MVC model.
</P>
<P align="justify">
- The original concept for Velocity was borrowed from WebMacro. We are
- gratious for the amount of development and design work that went into
- WebMacro.
- </P>
+ Velocity has a myriad of potential uses -- generating SQL, PostScript,
+ or Java source code from templates -- but it is expected to be most
+ widely used by web developers looking for a viable alternative to
+ <A href="http://www.php.org/">PHP</A> and
+ <A href="http://java.sun.org/products/jsp/">Java
+ Server Pages</A> (JSPs).
+ </P>
+ <P align="justify">
+ Velocity allows web page designers to embed simple yet powerful script
+ elements in their web pages. These script elements work
+ in conjunction with a Context object, which is defined in Java code.
+ A context object--essentially a Hashtable that provides get and set
+ methods for retrieving and setting objects by name within the Context
+ --provides a "hook" from the Java code to the Velocity script
+ elements. These script elements allow a web designer to retrieve
+ objects from the Context and insert these into a web page as text
+ values. The web designer has some control over looping (for each)
+ and conditional statements (if/else).
+ </P>
+
<P align="justify">
- The fundamental design of Velocity is around the idea that there are a few
- useful script elements that you embed within your HTML code that work in
- conjunction with a Context object that is populated in your Java code. The
- purpose of the Context object is to provide a "hook" from your
- Java code to your Velocity code. Essentially a Context object is simply a
- Hashtable which provides get and set methods for retrieving and setting
- objects by name within the Context. These script elements provide enough
- basic functionality to allow you to retrieve objects from the Context and
- put them into your page as text values with some degree of control over
- looping (for each) and conditional statements (if/else).
+ Velocity enforces a Model-View-Controller (MVC) style of development
+ by separating Java code from HTML template code. Unlike JSPs,
+ Velocity does not allow Java code to be embedded in pages. Unlike PHP,
+ Velocity does not implement features with other functions. The MVC
+ approach is one of Velocity's great strengths, and allows for more
+ maintainable and better designed web pages.
</P>
-
+
<P align="justify">
- For people who are not familiar with MVC style of development, at first
- glance, it will appear as though Velocity is missing a large set of
- functionality. It turns out that this is actually the strength of Velocity.
- For example, unlike JSP, there is no way to embed Java code within your page
- and the script elements provide little more than basic looping and
- conditional statements. Another example is the PHP model where every single
- feature is implemented with another function. So, how is this better than
- the alternatives? The answer is that by using Velocity, you are enforcing a
- MVC style of development which defines that your Java code and your HTML
- template code should be separate. This style of development sometimes takes
- slightly longer (especially if you are new to MVC), but results in much more
- maintainable code over the long term (believe us, we have been doing this
- for a long time now). It also provides an abstraction that prevents page
- designers from messing with software engineer's Java code. In other words,
- it provides an enforcement of a contract that defines what roles people play
- in the development process.
+ Although MVC-style development can sometimes lead to longer incubation
+ periods for web sites, particularly if the developers involved are new
+ to MVC, this approach saves time over the long term (believe us, we have
+ been doing this for a long time now). The MVC abstraction prevents web page
+ designers from messing with a software engineer's Java code, and
+ programmers from unduly influencing the look of web sites. Velocity enforces
+ a contract that defines what roles people play in the web site development
+ process.
+ </P>
+
+ <P align="justify">
+ Velocity uses a grammar-based parser generated by
+ <A href="http://www.metamata.com/javacc/">JavaCC</A> (Java Compiler
+ Compiler) using the JJTree extension to create an Abstract Syntax Tree.
+ Its concept was borrowed from
+ <A href="http://www.webmacro.org/">WebMacro</A>. Those involved in
+ the Velocity project acknowledge and appreciate the development and design
+ work that went into the WebMacro project.
</P>
-
+
</FONT></TD></TR></TABLE></DIV><BR>
1.2 +30 -9 jakarta-velocity/docs/getting-started.html
Index: getting-started.html
===================================================================
RCS file: /home/cvs/jakarta-velocity/docs/getting-started.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- getting-started.html 2000/09/30 17:03:09 1.1
+++ getting-started.html 2000/10/05 02:19:29 1.2
@@ -18,19 +18,40 @@
<DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff"
face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="5"><B>Getting
Started</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0"
cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000"
face="arial,helvetica,sanserif">
<P align="justify">
- The purpose of this document is to define simple documentation on getting
+ This document provides developers with simple documentation for getting
started with Velocity. For information about the overall structure of
- Velocity, please refer to the Design Document
- . The composition of this document will be written from the
- perspective of what you should do in order to start a newly functional system.
+ Velocity, please refer to the <A href="design.html">Design</A> document.
</P>
<P align="justify">
- The first thing that you should do is download and install Velocity.
- This step is documented in the INSTALL
- document, so it will not be covered here. If you would like to view the
detailed API documentation
- run "build-velocity.sh|bat javadocs" from the "build"
directory.
- This will create a full set of Velocity API docs in the
"docs/apidocs" directory.
+ Instructions for downloading and installing Velocity can be found on the
+ <A href="install.html">Install</A> document.
+</P>
+
+</FONT></TD></TR></TABLE></DIV><BR>
+
+<DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff"
face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="5"><B>View Detailed API
Documentation</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0"
cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000"
face="arial,helvetica,sanserif">
+
+<P align="justify">
+ If you are working on Unix/Linux and would like to create a full set
+ of detailed API documentation for Velocity, go to the "build"
directory
+ and run the following script.
+
+ <DIV align="center"><TABLE border="0" cellpadding="0" cellspacing="4"><TR><TD
bgcolor="#023264" height="1" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264"
height="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0"
width="1"></TD><TD bgcolor="#023264" height="1" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD
bgcolor="#023264" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff"><PRE>
+
+ ./build-velocity.sh
+
+ </PRE></TD><TD bgcolor="#023264" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD
bgcolor="#023264" height="1" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264"
height="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0"
width="1"></TD><TD bgcolor="#023264" height="1" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
+
+ If you are working on Windows, the following command will have the same
+ effect.
+
+ <DIV align="center"><TABLE border="0" cellpadding="0" cellspacing="4"><TR><TD
bgcolor="#023264" height="1" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264"
height="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0"
width="1"></TD><TD bgcolor="#023264" height="1" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD
bgcolor="#023264" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff"><PRE>
+
+ build-velocity.bat
+
+ </PRE></TD><TD bgcolor="#023264" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD
bgcolor="#023264" height="1" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264"
height="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0"
width="1"></TD><TD bgcolor="#023264" height="1" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
+
</P>
</FONT></TD></TR></TABLE></DIV><BR>
1.2 +33 -33 jakarta-velocity/docs/index.html
Index: index.html
===================================================================
RCS file: /home/cvs/jakarta-velocity/docs/index.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- index.html 2000/09/30 17:03:10 1.1
+++ index.html 2000/10/05 02:19:29 1.2
@@ -18,30 +18,30 @@
<DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff"
face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="5"><B>What is
Velocity?</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0"
cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000"
face="arial,helvetica,sanserif">
<P align="justify">
- Velocity is a Java based template engine. It can be used as a
- stand-alone utility for generating source code, HTML, reports,
- or it can be combined with other systems to provide template
- services. One such example is the planned marriage of Velocity
- with the <A href="http://java.apache.org/turbine/">Turbine</A>
- web application framework. Velocity will be tightly integrated with Turbine
- to provide a template service that will enable a true MVC model
- by which web applications may be developed.
- </P>
-
- <P align="justify">
- Velocity uses a grammar based parser generated by
- <A href="http://www.metamata.com/javacc/">JavaCC</A>
- (Java Compiler Compiler) using the JJTree extension to create an
- Abstract Syntax Tree (AST) which may subsequently be traversed
- (repeatedly if desired) by a tree walker. The tree walker
- is implemented using the visitor design pattern. This allows
- the parsing logic to be separated from the actions performed
- on the resultant AST. For example there are two visitors that
- come with Velocity: the first is a simple implementation that produces
- a visual tree of the syntax and nothing more, mostly used for
- debugging; the second is the visitor that actually generates
- output from user defined values and introspection.
+ Velocity is a Java-based template engine. It permits web page designers
+ to use simple yet powerful script elements that reference methods
+ defined in Java code. Web designers can work in parallel with Java
+ programmers to develop web sites according to the Model-View-Controller
+ (MVC) model, meaning that web page designers can focus solely on creating
+ a site that looks good, and programmers can focus solely on writing
+ top-notch code. Velocity separates Java code from the web pages,
+ making the web site more maintainable over the long run and providing
+ a viable alternative to
+ <A href="http://java.sun.org/products/jsp/">Java Server Pages</A>
+ (JSPs) or <A href="http://www.php.org/">PHP</A>.
</P>
+
+ <P align="justify">
+ Velocity's capabilities reach well beyond the realm of web sites; for
+ example, it can generate SQL or PostScript from templates.
+ It can be used either as a standalone utility for generating
+ source code and reports, or as an integrated component of other systems.
+ When complete, Velocity will provide template services for the
+ <A href="http://java.apache.org/turbine/">Turbine</A>
+ web application framework. Velocity-Turbine will provide
+ a template service that will allow web applications to be developed
+ according to a true MVC model.
+ </P>
</FONT></TD></TR></TABLE></DIV><BR>
@@ -51,7 +51,7 @@
<P align="justify">
There is no official release yet, but there will be one
- shortly. But you may retrieve the full source via <A
href="http://jakarta.apache.org/getinvolved/cvsindex.html">CVS</A>.
+ shortly. The full source can be retrieved via <A
href="http://jakarta.apache.org/getinvolved/cvsindex.html">CVS</A>.
</P>
</FONT></TD></TR></TABLE></DIV><BR>
@@ -59,7 +59,7 @@
<DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff"
face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="5"><B>Where do I get nightly
builds?</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0"
cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000"
face="arial,helvetica,sanserif">
<P align="justify">
- You can find the builds
+ Nightly builds of Velocity can be found
<A href="http://jakarta.apache.org/builds/jakarta-velocity/nightly/">here</A>.
</P>
@@ -68,23 +68,23 @@
<DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff"
face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="5"><B>How do I contribute, give feedback,
fix bugs and so on?</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0"
cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000"
face="arial,helvetica,sanserif">
<P align="justify">
- We really need and appreciate any contributions you can give. This includes
- documentation help, source code and feedback. Discussion about changes
- should come in the form of source code and/or very detailed and well thought
- out constructive feedback.
+ The Velocity project really needs and appreciates any contributions,
+ including documentation help, source code and feedback. Suggested
+ changes should come in the form of source code and/or very detailed
+ and constructive feedback.
</P>
<BLOCKQUOTE><UL>
<LI>
- We have a complete list of <A href="contributors.html">Active
Developers</A>.
+ There is a list of <A href="contributors.html">Active Developers</A>.
Submit some code and get your name added!</LI>
<LI>
- We have a <A
href="http://jakarta.apache.org/getinvolved/mail.html">Velocity mailing
- list</A> for discussion.</LI>
+ Discussion occurs on the <A
href="http://jakarta.apache.org/getinvolved/mail.html">Velocity mailing
+ list</A>.</LI>
<LI>
Access to the CVS "<B>jakarta-velocity</B>" repository is
available both
<A
href="http://jakarta.apache.org/cvsweb/index.cgi/jakarta-velocity/">online</A>
- as well as with a <A
href="http://jakarta.apache.org/getinvolved/cvsindex.html">cvs client</A>.</LI>
+ and with a <A
href="http://jakarta.apache.org/getinvolved/cvsindex.html">cvs client</A>.</LI>
</UL></BLOCKQUOTE>
</FONT></TD></TR></TABLE></DIV><BR>
1.2 +21 -10 jakarta-velocity/docs/install.html
Index: install.html
===================================================================
RCS file: /home/cvs/jakarta-velocity/docs/install.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- install.html 2000/09/30 17:03:10 1.1
+++ install.html 2000/10/05 02:19:29 1.2
@@ -26,27 +26,38 @@
<DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff"
face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0"
width="5"><B>Compiling</B></FONT></TD></TR><TR><TD><IMG border="0" height="5"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE
border="0" cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000"
face="arial,helvetica,sanserif">
<P align="justify">
- Execute the following script in the velocity/build directory:
+ On Unix/Linux, execute the following script in the velocity/build directory:
</P>
<P align="justify">
<DIV align="center"><TABLE border="0" cellpadding="0" cellspacing="4"><TR><TD
bgcolor="#023264" height="1" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264"
height="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0"
width="1"></TD><TD bgcolor="#023264" height="1" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD
bgcolor="#023264" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff"><PRE>
-./build-velocity
+./build-velocity.sh
</PRE></TD><TD bgcolor="#023264" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#023264"
height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif"
vspace="0" width="1"></TD><TD bgcolor="#023264" height="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264"
height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif"
vspace="0" width="1"></TD></TR></TABLE></DIV>
</P>
<P align="justify">
- Executing the above script will create a "bin" directory within the
Velocity
- distribution directory. In there will be the compiled class files (inside a
- "classes" directory) as well as a "velocity.jar" file. You
can either use
- the .jar file directly or copy the org directory into your classpath.
+ On Windows, execute the following script in the velocity\build directory:
</P>
<P align="justify">
- If you get compiler error about not being able to find some package, then
- it means that you have not edited the scripts to properly specify the paths
- to each of the packages.
+<DIV align="center"><TABLE border="0" cellpadding="0" cellspacing="4"><TR><TD
bgcolor="#023264" height="1" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264"
height="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0"
width="1"></TD><TD bgcolor="#023264" height="1" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD
bgcolor="#023264" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff"><PRE>
+
+build-velocity.bat
+</PRE></TD><TD bgcolor="#023264" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#023264"
height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif"
vspace="0" width="1"></TD><TD bgcolor="#023264" height="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264"
height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif"
vspace="0" width="1"></TD></TR></TABLE></DIV>
+</P>
+
+<P align="justify">
+ Executing this script will create a "bin" directory within the
Velocity
+ distribution directory. The bin directory will contain the compiled class
+ files (inside a "classes" directory) as well as a
"velocity.jar" file.
+ Be sure to update your classpath to include Velocity's .jar file.
+</P>
+
+<P align="justify">
+ If you get a compiler error related to one or more packages that could not
+ be found, ensure the build-velocity script you are using is edited to
+ properly specify the paths to each of the packages that could not be found.
</P>
</FONT></TD></TR></TABLE></DIV><BR>
@@ -54,7 +65,7 @@
<DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff"
face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="5"><B>Testing Your
Installation</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0"
cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000"
face="arial,helvetica,sanserif">
<P align="justify">
- There is testing scripts in the velocity/examples directory.
+ There are testing scripts in the velocity/examples directory.
</P>
</FONT></TD></TR></TABLE></DIV><BR>
1.2 +107 -59 jakarta-velocity/docs/script-elements.html
Index: script-elements.html
===================================================================
RCS file: /home/cvs/jakarta-velocity/docs/script-elements.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- script-elements.html 2000/09/30 17:03:10 1.1
+++ script-elements.html 2000/10/05 02:19:29 1.2
@@ -18,10 +18,14 @@
<DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff"
face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="5"><B>Script
Elements</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0"
cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000"
face="arial,helvetica,sanserif">
<P align="justify">
There are several different types of Script Elements within Velocity. The
- overall purpose of these elements is described in the <A
href="design.html">Design Document</A>. The following elements are currently
- defined within Velocity and also explained in detail below. All of the elements
are
- prefixed with a #. For example, #if, #foreach, #set.
+ overall purpose of these elements is described in the <A
href="design.html">Design Document</A>.
</P>
+
+ <P align="justify">
+ The following elements are currently defined within Velocity and also
+ explained in detail below. Velocity script elements are prefixed with a #.
+ For example, #if, #foreach, #set.
+ </P>
<BLOCKQUOTE><UL>
<LI><B>Variables</B></LI>
<LI><B>Conditionals</B>:
@@ -41,14 +45,15 @@
<LI><B>Set</B></LI>
<LI><B>Comment</B></LI>
<LI><B>Stop</B></LI>
+ <LI><B>Macro</B></LI>
</UL></BLOCKQUOTE>
</FONT></TD></TR></TABLE></DIV><BR>
<DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff"
face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0"
width="5"><B>Variables</B></FONT></TD></TR><TR><TD><IMG border="0" height="5"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE
border="0" cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000"
face="arial,helvetica,sanserif">
<P align="justify">
- Variables are referenced in a similar fashion to the way that they are in
- Perl (ie: they use a $), but they also take advantage of some Java
- principles that are easy for template designers to work with. For example:
+ Velocity references its variables in a fashion similar to Perl (i.e. they
+ use a $), but takes advantage of some Java principles that template
+ designers will find easy to use. For example:
</P>
<P align="justify">
@@ -60,17 +65,17 @@
</P>
<P align="justify">
- As you can see in a couple of the examples above there are alternative uses
- for the same variables. Velocity takes advantage of Java's introspection and
+ These examples illustrate alternative uses for the same variables.
+ Velocity takes advantage of Java's introspection and
bean features to resolve the variable names to both objects in the Context
- as well as the objects methods. It is possible to embed the variables almost
- anywhere in your template and have them be evaluated.
+ as well as the objects methods. It is possible to embed variables almost
+ anywhere in your template. These variables can be evaluated.
</P>
<P align="justify">
- Everything coming to and from the variables is treated as a String object.
- If you have an object that is representing $foo such as an Integer object,
- then Velocity will call its .toString() method in order to resolve the
+ Everything coming to and from a variable is treated as a String object.
+ If there is an object that represents $foo (such as an Integer object),
+ then Velocity will call its .toString() method to resolve the
object into a String.
</P>
</FONT></TD></TR></TABLE></DIV><BR>
@@ -79,8 +84,9 @@
<DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff"
face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="5"><B>If / Else
Conditionals</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0"
cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000"
face="arial,helvetica,sanserif">
<P align="justify">
- The #if statement in Velocity allows you to conditionally include the text
- within the brackets. For example:
+ The #if statement in Velocity allows for text in the brackets to be
+ included in the text, on the conditional that the if statement
+ is true. For example:
</P>
<P align="justify">
@@ -92,16 +98,14 @@
</P>
<P align="justify">
- The variable $foo is evaluated to see if it is a boolean or not null and the
- content within the brackets is what is output if the evaluation is true. As
- you can see, this has the advantage over other systems because you do not
- need to wrap your HTML code within an out.println(), therefore enabling you
- to develop a more MVC solution. Of course there are other solutions to
- out.println() within JSP, but they are just as ugly as out.println().
+ The variable $foo is evaluated to see if it is a boolean or not null; the
+ content within the brackets becomes the output if the evaluation is true.
+ Unlike in JSP, Velocity does not force web developers to wrap HTML code
+ within an out.println(), or to delve into ugly workarounds to out.println().
</P>
<P align="justify">
- Another example is that you can include #else elements with your #if element.
+ An #else element can be used with an #if element.
</P>
<P align="justify">
@@ -115,10 +119,16 @@
<strong>Velocity Still Rocks!</strong>
}</PRE></TD><TD bgcolor="#023264" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD
bgcolor="#023264" height="1" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264"
height="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0"
width="1"></TD><TD bgcolor="#023264" height="1" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
</P>
+
+ <P align="justify">
+ In this example, if $foo is false, then the output will be
+ <B>Velocity Still Rocks!</B>
+ </P>
<P align="justify">
- Note: In the current version of Velocity, it is not possible to do something
like what
- is shown below. We will be adding this functionality quickly though.
+ Note that logical operators are not yet available in Velocity.
+ This functionality is expected to be added soon. An example of
+ a logical operator is shown below.
</P>
<P align="justify">
@@ -130,11 +140,10 @@
</P>
<P align="justify">
- If you would like to emulate the functionality of #elseif, then you can do
- so by using nested #if statements. As you would expect, nesting elements
- works for all of the elements to an infinite level of nesting. For example,
- you can nest a #foreach within a #if. We will be considering in the future
- of adding a #elseif to simplify things.
+ Nested #if statements can be used to emulate the functionality of #elseif.
+ Nesting elements work for all elements to an infinite level of nesting;
+ for example, a #foreach can be nested within an #if. An #elseif element
+ may be added in the future to simplify things.
</P>
</FONT></TD></TR></TABLE></DIV><BR>
</FONT></TD></TR></TABLE></DIV><BR>
@@ -142,13 +151,15 @@
<DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff"
face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0"
width="5"><B>Loops</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0"
cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000"
face="arial,helvetica,sanserif">
<DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff"
face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="5"><B>Foreach
Loop</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0"
cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000"
face="arial,helvetica,sanserif">
<P align="justify">
- The #foreach element allows you to create loops. For example:
+ The #foreach element allows for looping. The #foreach element is followed
+ by a set of brackets that enclose the target and object to be stepped
+ through. For example:
</P>
<P align="justify">
<DIV align="center"><TABLE border="0" cellpadding="0" cellspacing="4"><TR><TD
bgcolor="#023264" height="1" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264"
height="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0"
width="1"></TD><TD bgcolor="#023264" height="1" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD
bgcolor="#023264" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff"><PRE>
<ul>
- #foreach $product in $allProducts
+ #foreach ($product in $allProducts)
{
<li>$product</li>
}
@@ -157,16 +168,17 @@
</P>
<P align="justify">
- The #foreach loop causes the $allProducts list to be looped over for all
- of the elements in the list. Each time through the loop, the value from
- $allProducts is placed into the $product variable.
+ This #foreach loop causes the $allProducts list (the object) to be
+ looped over for all of the products (targets) in the list. Each time
+ through the loop, the value from $allProducts is placed into the
+ $product variable.
</P>
<P align="justify">
- The contents of the $allProducts variable is either a Vector, Hashtable or
- Array. Thus, the value that is assigned to the $product variable is a Java
- Object and can be referenced from the variable as so. For example, if $product
- was really a Product class in Java, you could get the name of the Product
+ The contents of the $allProducts variable is either a Vector, a Hashtable
+ or an Array. The value assigned to the $product variable is a Java
+ Object and can be referenced from a variable as such. For example, if
+ $product was really a Product class in Java, its name could be retrieved
by referencing the $product.Name method (ie: Product.getName()).
</P>
</FONT></TD></TR></TABLE></DIV><BR>
@@ -174,10 +186,10 @@
<DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff"
face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0"
width="5"><B>Parse</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0"
cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000"
face="arial,helvetica,sanserif">
<P align="justify">
- The #parse script element allows you to import a local file and have it
- parsed through the Velocity template engine and inserted into the location
- where the #parse directive is defined. The current Context is applied to the
- variables that are embedded within the template.
+ The #parse script element allows a local files to be imported and parsed
+ through the Velocity template engine, then inserted into the location
+ where the #parse directive is defined. The current Context is applied to
+ the variables that are embedded within the template.
</P>
<P align="justify">
@@ -189,9 +201,10 @@
<DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff"
face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0"
width="5"><B>Include</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0"
cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000"
face="arial,helvetica,sanserif">
<P align="justify">
- The #include script element allows you to import a local file that is
- inserted into the location where the #include directive is defined. The
- contents of the file are not rendered through the template engine.
+ The #include script element allows the template designer to import a
+ local file, which is then inserted into the location where the #include
+ directive is defined. The contents of the file are not rendered through
+ the template engine.
</P>
<P align="justify">
@@ -215,17 +228,16 @@
</P>
<P align="justify">
- One difference between Velocity and WebMacro is that the left hand side
- variable must be prefixed with a $. We felt that this is more appropriate
- for the script element language because you are effectively setting a
- variable and the references to variables should be consistent.
+ The variable on the left side of the #param script element must be
+ prefixed with a $. This provides a consistent syntax for referencing
+ variables in Velocity.
</P>
</FONT></TD></TR></TABLE></DIV><BR>
<DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff"
face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="5"><B>Set</B></FONT></TD></TR><TR><TD><IMG
border="0" height="5" hspace="0" src="resources/void.gif" vspace="0"
width="1"></TD></TR></TABLE><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD><FONT color="#000000" face="arial,helvetica,sanserif">
<P align="justify">
- The #set script element allows the template designer to set variables within
- the Context.
+ The #set script element allows the template designer to set variables
+ within the Context.
</P>
<P align="justify">
@@ -235,15 +247,13 @@
</P>
<P align="justify">
- One difference between Velocity and WebMacro is that the left hand side
- variable must be prefixed with a $. We felt that this is more appropriate
- for the script element language because you are effectively setting a
- variable and the references to variables should be consistent.
+ When using the #set directive, the variable on the left side must be
+ prefixed with a $. This provides a
+ consistent syntax for referencing variables in Velocity.
</P>
<P align="justify">
- Currently, the above example is the only thing that is supported. We will
- eventually be suporting the full range of WebMacro functionality here.
+ The following script elements have not been implemented.
</P>
</FONT></TD></TR></TABLE></DIV><BR>
@@ -261,8 +271,8 @@
<P align="justify">
A current problem with Velocity is that the space that comments occupy
- is not removed from the template. The newlines should be removed. This
- will be fixed shortly.
+ is not removed from the template. The newlines created be these comments
+ will soon be removed.
</P>
</FONT></TD></TR></TABLE></DIV><BR>
@@ -277,6 +287,44 @@
#stop
</PRE></TD><TD bgcolor="#023264" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD
bgcolor="#023264" height="1" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264"
height="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0"
width="1"></TD><TD bgcolor="#023264" height="1" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
</P>
+</FONT></TD></TR></TABLE></DIV><BR>
+
+<DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0"
width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff"
face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0"
width="5"><B>Macro</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0"
cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000"
face="arial,helvetica,sanserif">
+ <P align="justify">
+ With the #macro script element, the template designer can define a
+ time-saving macro.
+ </P>
+
+ <P align="justify">
+ <DIV align="center"><TABLE border="0" cellpadding="0" cellspacing="4"><TR><TD
bgcolor="#023264" height="1" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264"
height="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0"
width="1"></TD><TD bgcolor="#023264" height="1" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD
bgcolor="#023264" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff"><PRE>
+ #macro (row $content) <tr><td>$content</td></tr> #end
+ </PRE></TD><TD bgcolor="#023264" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD
bgcolor="#023264" height="1" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264"
height="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0"
width="1"></TD><TD bgcolor="#023264" height="1" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
+ </P>
+
+ <P align="justify">
+ This establishes a macro called "row", which uses HTML tags to
+ put content into its own table data cell in an HTML table. Having
+ defined the #row macro, the template designer can now call the #row
+ macro by name.
+ </P>
+
+ <P align="justify">
+ <DIV align="center"><TABLE border="0" cellpadding="0" cellspacing="4"><TR><TD
bgcolor="#023264" height="1" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264"
height="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0"
width="1"></TD><TD bgcolor="#023264" height="1" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD
bgcolor="#023264" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff"><PRE>
+ <table>
+ #foreach ($element in $list)
+ #row ($element)
+ #end
+ </table>
+ </PRE></TD><TD bgcolor="#023264" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD
bgcolor="#023264" height="1" width="1"><IMG border="0" height="1" hspace="0"
src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264"
height="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0"
width="1"></TD><TD bgcolor="#023264" height="1" width="1"><IMG border="0" height="1"
hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
+ </P>
+
+ <P align="justify">
+ Here a newly created #row macro is nested inside a #foreach
+ statement. As the #foreach statement loops through each $element
+ target in the $list object, the #row macro will take the value of
+ $element and put it into its table data cell.
+ </P>
+
</FONT></TD></TR></TABLE></DIV><BR>