You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@velocity.apache.org by jo...@apache.org on 2001/09/24 21:05:59 UTC

cvs commit: jakarta-velocity/xdocs anakia.xml

jon         01/09/24 12:05:59

  Modified:    docs     anakia.html
               xdocs    anakia.xml
  Log:
  added note about use of anakia on the main apache.org site
  
  Revision  Changes    Path
  1.30      +4 -3      jakarta-velocity/docs/anakia.html
  
  Index: anakia.html
  ===================================================================
  RCS file: /home/cvs/jakarta-velocity/docs/anakia.html,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- anakia.html	2001/09/21 10:32:23	1.29
  +++ anakia.html	2001/09/24 19:05:58	1.30
  @@ -168,9 +168,10 @@
       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 jakarta.apache.org. As it is more targeted to a
  -    specific purpose, it does not provide some of XSL's
  -    "extra" functionality.
  +    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
  
  
  
  1.12      +390 -389  jakarta-velocity/xdocs/anakia.xml
  
  Index: anakia.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-velocity/xdocs/anakia.xml,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- anakia.xml	2001/08/09 00:25:49	1.11
  +++ anakia.xml	2001/09/24 19:05:58	1.12
  @@ -1,389 +1,390 @@
  -<?xml version="1.0"?>
  -
  -<document>
  -
  - <properties>
  -  <title>Anakia</title>
  -  <author email="jon@latchkey.com">Jon S. Stevens</author>
  - </properties>
  -
  -<body>
  -
  -<section name="What Is Anakia?">
  -<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 jakarta.apache.org. As it is more targeted to a
  -    specific purpose, it does not provide some of XSL's
  -    &quot;extra&quot; 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>
  -
  -</section>
  -
  -<section name="Installation/Example">
  -<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
  -    <code>./build.sh</code>. (Shell scripts will work on the Windows
  -    platform if you install <a
  -    href="http://sources.redhat.com/cygwin/">Cygwin</a>.)
  -</p>
  -<p>
  -    Output from the build.sh script, 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 JDOM is
  -    necessary to understand how the .vsl file works.
  -</p>
  -</section>
  -
  -<section name="How does it work?">
  -
  -<p>
  -    Anakia is an Ant task that executes from an Ant build file. The
  -    build file looks something like this:
  -</p>
  -
  -<source><![CDATA[
  -    <project name="build-site" default="docs" basedir=".">
  -    <property name="docs.src" value="../xdocs"/>
  -    <property name="docs.dest" value="../docs"/>
  -
  -    <target name="prepare">
  -        <available classname="org.apache.velocity.anakia.AnakiaTask"
  -        property="AnakiaTask.present"/>
  -    </target>
  -
  -    <target depends="prepare" name="prepare-error" unless="AnakiaTask.present">
  -        <echo>
  -            AnakiaTask is not present! Please check to make sure that
  -            velocity.jar is in your classpath.
  -        </echo>
  -    </target>
  -
  -    <target name="docs" depends="prepare-error" if="AnakiaTask.present">
  -        <taskdef name="anakia" classname="org.apache.velocity.anakia.AnakiaTask"/>
  -        <anakia basedir="${docs.src}" destdir="${docs.dest}/"
  -             extension=".html" style="./site.vsl"
  -             projectFile="./stylesheets/project.xml"
  -             excludes="**/stylesheets/**"
  -             includes="**/*.xml"
  -             lastModifiedCheck="false"
  -             velocityPropertiesFile="velocity.properties">
  -        </anakia>
  -
  -        <copy todir="${docs.dest}/images" filtering="no">
  -            <fileset dir="${docs.src}/images">
  -                <include name="**/*.gif"/>
  -                <include name="**/*.jpeg"/>
  -                <include name="**/*.jpg"/>
  -            </fileset>
  -        </copy>
  -    </target>
  -</project>
  -]]></source>
  -
  -    <table border="0">
  -        <tr>
  -            <th>Name</th>
  -            <th>Description</th>
  -        </tr>
  -        <tr>
  -            <td>basedir</td>
  -            <td>Specifies the path to the directory location of your
  -            .xml files.</td>
  -        </tr>
  -        <tr>
  -            <td>destdir</td>
  -            <td>Specifies the path to the directory where the output
  -            files should go.</td>
  -        </tr>
  -        <tr>
  -            <td>extension</td>
  -            <td>
  -            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.
  -            </td>
  -        </tr>
  -        <tr>
  -            <td>style</td>
  -            <td>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. </td>
  -        </tr>
  -        <tr>
  -            <td>projectFile</td>
  -            <td>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. </td>
  -        </tr>
  -        <tr>
  -            <td>excludes</td>
  -            <td>This is the standard Ant excludes attribute. Specify any
  -            files or directories that you do not want Anakia to try to
  -            process.</td>
  -        </tr>
  -        <tr>
  -            <td>includes</td>
  -            <td>This is the standard Ant includes attribute. Specify any
  -            files or directories that you do want Anakia to try to
  -            process.</td>
  -        </tr>
  -        <tr>
  -            <td>lastModifiedCheck</td>
  -            <td>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.</td>
  -        </tr>
  -        <tr>
  -            <td>templatePath</td>
  -            <td>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.</td>
  -        </tr>
  -        <tr>
  -            <td>velocityPropertiesFile</td>
  -            <td>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.</td>
  -        </tr>
  -    </table>
  -</section>
  -
  -<section name="Context Objects">
  -<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 border="0">
  -        <tr>
  -        <th>Name</th>
  -        <th>Value</th>
  -        </tr>
  -        <tr>
  -            <td>$root</td>
  -            <td>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.</td>
  -        </tr>
  -        <tr>
  -            <td>$project</td>
  -            <td>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. </td>
  -        </tr>
  -        <tr>
  -            <td>$escape.getText($string)</td>
  -            <td>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: &quot; -> &amp;quot; | &lt;
  -            -> &amp;lt; | &gt; -> &amp;gt; | &amp; - > &amp;amp; </td>
  -        </tr>
  -        <tr>
  -            <td>$relativePath</td>
  -            <td>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.</td>
  -        </tr>
  -        <tr>
  -            <td>$xmlout</td>
  -            <td>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.</td>
  -        </tr>
  -        <tr>
  -            <td>$xmlout.outputString(Element, true)</td>
  -            <td>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.
  -            </td>
  -        </tr>
  -        <tr>
  -            <td>$treeWalk.allElements($element)</td>
  -            <td>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 &quot;ugly&quot; 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.</td>
  -        </tr>
  -        <tr>
  -            <td>$xpath.applyTo("document/properties/@title", $root)</td>
  -            <td>
  -               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.
  -            </td>
  -        </tr>
  -        <tr>
  -            <td>$date</td>
  -            <td>
  -                This is a new java.util.Date object. Useful for putting
  -                the current date/time into a page.
  -            </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>
  -
  -</section>
  -
  -<section name="Credits">
  -<p>
  -    Anakia was originally conceptualized and implemented by Jon S. Stevens.
  -</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>
  -</section>
  -
  -</body>
  -</document>
  +<?xml version="1.0"?>
  +
  +<document>
  +
  + <properties>
  +  <title>Anakia</title>
  +  <author email="jon@latchkey.com">Jon S. Stevens</author>
  + </properties>
  +
  +<body>
  +
  +<section name="What Is Anakia?">
  +<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 &quot;extra&quot; 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>
  +
  +</section>
  +
  +<section name="Installation/Example">
  +<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
  +    <code>./build.sh</code>. (Shell scripts will work on the Windows
  +    platform if you install <a
  +    href="http://sources.redhat.com/cygwin/">Cygwin</a>.)
  +</p>
  +<p>
  +    Output from the build.sh script, 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 JDOM is
  +    necessary to understand how the .vsl file works.
  +</p>
  +</section>
  +
  +<section name="How does it work?">
  +
  +<p>
  +    Anakia is an Ant task that executes from an Ant build file. The
  +    build file looks something like this:
  +</p>
  +
  +<source><![CDATA[
  +    <project name="build-site" default="docs" basedir=".">
  +    <property name="docs.src" value="../xdocs"/>
  +    <property name="docs.dest" value="../docs"/>
  +
  +    <target name="prepare">
  +        <available classname="org.apache.velocity.anakia.AnakiaTask"
  +        property="AnakiaTask.present"/>
  +    </target>
  +
  +    <target depends="prepare" name="prepare-error" unless="AnakiaTask.present">
  +        <echo>
  +            AnakiaTask is not present! Please check to make sure that
  +            velocity.jar is in your classpath.
  +        </echo>
  +    </target>
  +
  +    <target name="docs" depends="prepare-error" if="AnakiaTask.present">
  +        <taskdef name="anakia" classname="org.apache.velocity.anakia.AnakiaTask"/>
  +        <anakia basedir="${docs.src}" destdir="${docs.dest}/"
  +             extension=".html" style="./site.vsl"
  +             projectFile="./stylesheets/project.xml"
  +             excludes="**/stylesheets/**"
  +             includes="**/*.xml"
  +             lastModifiedCheck="false"
  +             velocityPropertiesFile="velocity.properties">
  +        </anakia>
  +
  +        <copy todir="${docs.dest}/images" filtering="no">
  +            <fileset dir="${docs.src}/images">
  +                <include name="**/*.gif"/>
  +                <include name="**/*.jpeg"/>
  +                <include name="**/*.jpg"/>
  +            </fileset>
  +        </copy>
  +    </target>
  +</project>
  +]]></source>
  +
  +    <table border="0">
  +        <tr>
  +            <th>Name</th>
  +            <th>Description</th>
  +        </tr>
  +        <tr>
  +            <td>basedir</td>
  +            <td>Specifies the path to the directory location of your
  +            .xml files.</td>
  +        </tr>
  +        <tr>
  +            <td>destdir</td>
  +            <td>Specifies the path to the directory where the output
  +            files should go.</td>
  +        </tr>
  +        <tr>
  +            <td>extension</td>
  +            <td>
  +            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.
  +            </td>
  +        </tr>
  +        <tr>
  +            <td>style</td>
  +            <td>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. </td>
  +        </tr>
  +        <tr>
  +            <td>projectFile</td>
  +            <td>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. </td>
  +        </tr>
  +        <tr>
  +            <td>excludes</td>
  +            <td>This is the standard Ant excludes attribute. Specify any
  +            files or directories that you do not want Anakia to try to
  +            process.</td>
  +        </tr>
  +        <tr>
  +            <td>includes</td>
  +            <td>This is the standard Ant includes attribute. Specify any
  +            files or directories that you do want Anakia to try to
  +            process.</td>
  +        </tr>
  +        <tr>
  +            <td>lastModifiedCheck</td>
  +            <td>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.</td>
  +        </tr>
  +        <tr>
  +            <td>templatePath</td>
  +            <td>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.</td>
  +        </tr>
  +        <tr>
  +            <td>velocityPropertiesFile</td>
  +            <td>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.</td>
  +        </tr>
  +    </table>
  +</section>
  +
  +<section name="Context Objects">
  +<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 border="0">
  +        <tr>
  +        <th>Name</th>
  +        <th>Value</th>
  +        </tr>
  +        <tr>
  +            <td>$root</td>
  +            <td>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.</td>
  +        </tr>
  +        <tr>
  +            <td>$project</td>
  +            <td>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. </td>
  +        </tr>
  +        <tr>
  +            <td>$escape.getText($string)</td>
  +            <td>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: &quot; -> &amp;quot; | &lt;
  +            -> &amp;lt; | &gt; -> &amp;gt; | &amp; - > &amp;amp; </td>
  +        </tr>
  +        <tr>
  +            <td>$relativePath</td>
  +            <td>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.</td>
  +        </tr>
  +        <tr>
  +            <td>$xmlout</td>
  +            <td>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.</td>
  +        </tr>
  +        <tr>
  +            <td>$xmlout.outputString(Element, true)</td>
  +            <td>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.
  +            </td>
  +        </tr>
  +        <tr>
  +            <td>$treeWalk.allElements($element)</td>
  +            <td>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 &quot;ugly&quot; 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.</td>
  +        </tr>
  +        <tr>
  +            <td>$xpath.applyTo("document/properties/@title", $root)</td>
  +            <td>
  +               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.
  +            </td>
  +        </tr>
  +        <tr>
  +            <td>$date</td>
  +            <td>
  +                This is a new java.util.Date object. Useful for putting
  +                the current date/time into a page.
  +            </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>
  +
  +</section>
  +
  +<section name="Credits">
  +<p>
  +    Anakia was originally conceptualized and implemented by Jon S. Stevens.
  +</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>
  +</section>
  +
  +</body>
  +</document>