blob: 681aa0fa3899d60b2709e68ed8282cab175dc7b0 [file] [log] [blame]
<!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 - Anakia</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="What Is Anakia?"><strong>What Is Anakia?</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
Essentially an XML transformation tool, Anakia uses <a href="http://www.jdom.org">JDOM</a> and <a href="http://jakarta.apache.org/velocity">Velocity</a> to transform
XML documents into the format of your choice. It provides an alternative to
using Ant's &lt;style&gt; task and
<a href="http://xml.apache.org/xalan/">XSL</a> to process XML
files.
</p>
<p>
The basic model that AnakiaTask uses is pretty straightforward :
<ol>
<li>Parse your XML into a JDOM Document:<br />
<pre>SAXBuilder builder;
Document root = null;
try
{
builder = new SAXBuilder(
"org.apache.xerces.parsers.SAXParser" );
root = builder.build( file );
}
catch( Exception )
{
System.out.println( ... );
}</pre></li>
<li>Stuff the Document (or root Element) into the context:<br />
<pre>context.put("root", root );</pre></li>
<li>Render a template using Velocity. Within the template, one
can use JDOM's methods to access the data contained in the
XML document.</li>
</ol>
</p>
<p>
Anakia is potentially easier to learn than XSL, but it maintains a
similar level of functionality. Learning cryptic &lt;xsl:&gt; tags
is unnecessary; you only need to know how to use the provided
Context objects, JDOM, and Velocity's simple directives. Anakia
seems to perform much faster than Xalan's XSL processor at creating
pages. (23 pages are generated in 7-8 seconds on a PIII 500mhz
running Win98 and JDK 1.3 with client Hotspot. A similar system
using Ant's &lt;style&gt; task took 14-15 seconds -- nearly a 2x
speed improvement.)
</p>
<p>
Anakia -- intended to replace Stylebook, which was originally used
to generate simple, static web sites in which all pages had the same
look and feel -- is great for documentation/project web sites, such
as the sites on <a href="http://www.apache.org/">www.apache.org</a>
and <a href="http://jakarta.apache.org">jakarta.apache.org</a>. As it
is more targeted to a specific purpose, it does not provide some of
XSL's "extra" functionality.
</p>
<p>
The example in the jakarta-velocity/examples/anakia directory
provides a good introduction to Anakia. You should find it quite
simple to use.
</p>
<p>
Anakia creates a Context, which contains a JDOM Document object of
the .xml page, as well as an (optional) JDOM Document object of your
project.xml page. The .vsl page is executed (using Velocity) with
the Context. You can then navigate your .xml file and pull
information out of it by simply executing methods on the JDOM
Document object.
</p>
<p>
Anakia is being used to create the documentation for not only this
website, but also for the Jakarta Project's website as well as
many of the projects that live under the Jakarta Project. This
process is
<a href="http://jakarta.apache.org/site/jakarta-site2.html">documented</a>
on the site. You are welcome to use this for your own needs as well.
</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="Installation/Example"><strong>Installation/Example</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
Before reviewing the jakarta-velocity/examples/anakia directory,
you must <a href="install.html">build Velocity</a>.
</p>
<p>
After building Velocity, <code>cd</code> into the
jakarta-velocity/examples/anakia/build directory and run 'ant'.
</p>
<p>
Output from running ant, in this case HTML files, is placed
into the jakarta-velocity/examples/anakia/docs/ directory.
</p>
<p>
The jakarta-velocity/examples/anakia/xdocs/ directory has all of the
.xml source code. The xdocs/stylesheets directory contains the .vsl
file, in which most of the magic happens. Understanding <a href="user-guide.html">Velocity Template Language</a> and
<a href="http://www.jdom.org/">JDOM</a> is
necessary to understand how the .vsl file works.
</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="How does it work?"><strong>How does it work?</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
Anakia is an Ant task that executes from an Ant build file. The
build file looks something 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;project name=&quot;build-site&quot; default=&quot;docs&quot; basedir=&quot;.&quot;&gt;
&lt;property name=&quot;docs.src&quot; value=&quot;../xdocs&quot;/&gt;
&lt;property name=&quot;docs.dest&quot; value=&quot;../docs&quot;/&gt;
&lt;target name=&quot;prepare&quot;&gt;
&lt;available classname=&quot;org.apache.velocity.anakia.AnakiaTask&quot;
property=&quot;AnakiaTask.present&quot;/&gt;
&lt;/target&gt;
&lt;target depends=&quot;prepare&quot; name=&quot;prepare-error&quot; unless=&quot;AnakiaTask.present&quot;&gt;
&lt;echo&gt;
AnakiaTask is not present! Please check to make sure that
velocity.jar is in your classpath.
&lt;/echo&gt;
&lt;/target&gt;
&lt;target name=&quot;docs&quot; depends=&quot;prepare-error&quot; if=&quot;AnakiaTask.present&quot;&gt;
&lt;taskdef name=&quot;anakia&quot; classname=&quot;org.apache.velocity.anakia.AnakiaTask&quot;/&gt;
&lt;anakia basedir=&quot;${docs.src}&quot; destdir=&quot;${docs.dest}/&quot;
extension=&quot;.html&quot; style=&quot;./site.vsl&quot;
projectFile=&quot;./stylesheets/project.xml&quot;
excludes=&quot;**/stylesheets/**&quot;
includes=&quot;**/*.xml&quot;
lastModifiedCheck=&quot;false&quot;
velocityPropertiesFile=&quot;velocity.properties&quot;&gt;
&lt;/anakia&gt;
&lt;copy todir=&quot;${docs.dest}/images&quot; filtering=&quot;no&quot;&gt;
&lt;fileset dir=&quot;${docs.src}/images&quot;&gt;
&lt;include name=&quot;**/*.gif&quot;/&gt;
&lt;include name=&quot;**/*.jpeg&quot;/&gt;
&lt;include name=&quot;**/*.jpg&quot;/&gt;
&lt;/fileset&gt;
&lt;/copy&gt;
&lt;/target&gt;
&lt;/project&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>
<table>
<tr>
<th bgcolor="#039acc" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
Name
</font>
</th>
<th bgcolor="#039acc" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
Description
</font>
</th>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
basedir
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
Specifies the path to the directory location of your
.xml files.
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
destdir
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
Specifies the path to the directory where the output
files should go.
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
extension
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
This is the extension that is appended to the end of your
.xml file. For example, with an extension of ".html",
index.xml would be converted into index.html. By default,
the extension is .html.
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
style
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
This is the path (relative to Velocity's
template.loader.1.template.path) to the
VelocityStyleTemplate to process. This file is the
equivalent to the .xsl file in Ant's style task.
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
projectFile
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
This is the path to a "project" file. This file is an
XML file that can be used as a "navigation" file. If you
have used Stylebook or Struts system for generation of the
web site documentation, you will understand the purpose of
this file. <strong>It is an optional task argument.</strong>
If you look at the Anakia example in the
jakarta-velocity/examples/anakia directory, you can see the
project.xml file being used in the .vsl file.
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
excludes
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
This is the standard Ant excludes attribute. Specify any
files or directories that you do not want Anakia to try to
process.
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
includes
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
This is the standard Ant includes attribute. Specify any
files or directories that you do want Anakia to try to
process.
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
lastModifiedCheck
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
This turns on or off the ability to check the last
modified date on files in order to determine whether or not
they need to be re-rendered or not. The value of this
attribute can be "true, false, yes, no". By default, it is
true, meaning that the last modified date should be checked
and if the original .xml file, project file, or .vsl file
have not changed, then don't process the page. This
accelerates processing because pages that have not changed
will not get reprocessed.
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
templatePath
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
This is the path to the templateRoot which is the
directory where your site.vsl file is located. This can be
defined in the Velocity.properties or it can be defined
here. It it an optional argument if it is defined in the
Velocity properties file already. However, if defined, this
value will override the path defined in the
Velocity.properties file.
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
velocityPropertiesFile
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
This is the path to the velocity.properties file. It is
an optional argument and by default is set to find the
properties file in the same directory that the JVM was
started in.
</font>
</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="Context Objects"><strong>Context Objects</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
The Anakia Ant task places several objects into the Context for you.
Right now, you do not have control over what is placed into the
Context. Eventually, we hope to have a way to give you control over
this. However, that does not prevent Anakia from being extremely
useful for you today. :-) The objects that are available to you in
your .vsl template are:
</p>
<table>
<tr>
<th bgcolor="#039acc" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
Name
</font>
</th>
<th bgcolor="#039acc" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
Value
</font>
</th>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
$root
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
This contains the JDOM root Element to your .xml document. When
this (or any other variable containing an element) are simply
placed into template output, their XML form is rendered.
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
$project
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
This contains the JDOM root Element to your project.xml
document. If you have not specified a project.xml document,
then this variable will not be in the context.
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
$escape.getText($string)
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
This context object will convert HTML Entities in the
$string that is passed into it and it will return the
converted String. This is good for dealing with CDATA. The
entities that are converted are: " -&gt; &amp;quot; | &lt;
-&gt; &amp;lt; | &gt; -&gt; &amp;gt; | &amp; - &gt; &amp;amp;
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
$relativePath
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
This contains a String which is the relative path to
your .xml document from the baseDir that was specified in
your Ant task attributes. Please see the examples/anakia
.vsl document for example usage of this String.
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
$xmlout
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
This contains an class which extends the instance of the
JDOM XMLOutputter() object. This allows you to easily create
String output out of your JDOM element objects.
$xmlout.outputString(Element). Again, please look at the
examples for more information on how to use this
object. NOTE: this object is obsoleted as simply specifying
$element will output the XML serialized form of the element.
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
$xmlout.outputString(Element, true)
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
This contains an class which extends the instance of the
JDOM XMLOutputter() object. The difference between this
.outputString() and the one in XMLOutputter is that it will
output all of the Elements <strong>within</strong> the
passed in Element. So, if you pass in a &lt;td&gt; Element,
you will get everything inside the &lt;td&gt; &lt;/td&gt;, but
not the actual &lt;td&gt; &lt;/td&gt;. NOTE: this object is
obsoleted as simply specifying $element.content will produce the
desired output.
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
$treeWalk.allElements($element)
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
This will allow you to walk a tree of JDOM Element
objects starting at $element. The point of this context
object is to allow you to build an XSLT type system where
you can look at each Element node conditionally and set its
content and attribute values. This is probably one of the
more "ugly" aspects of Anakia, but it does do the
job and suggestions for improvement are appreciated. This
context object is still under development and more
documentation will follow soon. NOTE: this object is obsolete and
is kept for backward compatibility only. You can use
$element.selectNodes("//*") to achieve the same effect.
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
$xpath.applyTo("document/properties/@title", $root)
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
The W3C XPath Specification <a href="http://www.w3.org/TR/xpath/">http://www.w3.org/TR/xpath/
</a> refers to NodeSets repeatedly, but this implementation
simply uses java.util.List to hold all Nodes. A 'Node' is any
object in a JDOM object tree, such as an org.jdom.Element,
org.jdom.Document, or org.jdom.Attribute. Please see the .vsl
example file and the org.apache.velocity.anakia.XPathTool javadoc
for more information. NOTE: this object is obsolete and is kept
for backward compatibility only. You can use
$element.selectNodes("document/properties/@title") to achieve
the same effect with a more intuitive syntax.
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
$date
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
This is a new java.util.Date object. Useful for putting
the current date/time into a page.
</font>
</td>
</tr>
</table>
<p>
All node lists returned from Anakia objects through $element.selectNodes,
$element.content, and $element.children, as well as through obsoleted
$treeWalk.allElements and $xpath.applyTo have two special features:
<ul>
<li>they support the selectNodes method just as a single element does
that applies an XPath expression to all nodes in the list, and</li>
<li>when inserted into template output by simply specifying $list, they
produce the XML fragment consisting of all nodes they contain. This
eliminates much of the #foreach code in templates.</li>
</ul>
</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="Credits"><strong>Credits</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>
Anakia was originally conceptualized and implemented by
<a href="mailto:jon@latchkey.com">Jon S. Stevens</a>.
</p>
<p>
The name <a href="http://www.kabalarians.com/female/anakia.htm">Anakia</a> is a
cool name that I think fits this project quite nicely. "The name of
Anakia has given you the desire for creative, artistic or musical
expression in an original way. You strive to be different and have
the self-confidence to implement your ideas because you have the
perseverance necessary to see something through, despite obstacles."
</p>
<p>
Further help and assistance was provided by Jason van Zyl and Geir
Magnusson Jr. XPath support was added by Bob McWhirter. The more
intuitive syntax achieved through selectNodes() and self-rendering
elements and node lists was added by Attila Szegedi.
</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 -->