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 <style> 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 <xsl:> 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 <style> 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
- "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>
-
-</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; | <
- -> &lt; | > -> &gt; | & - > &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 <td> Element,
- you will get everything inside the <td> </td>, but
- not the actual <td> </td>. 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 "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.</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 <style> 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 <xsl:> 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 <style> 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>
+
+</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; | <
+ -> &lt; | > -> &gt; | & - > &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 <td> Element,
+ you will get everything inside the <td> </td>, but
+ not the actual <td> </td>. 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 "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.</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>