| <HTML><HEAD><TITLE>Anakia</TITLE></HEAD><BODY alink="#023264" bgcolor="#ffffff" leftmargin="4" link="#023264" marginheight="4" marginwidth="4" text="#000000" topmargin="4" vlink="#023264"><TABLE border="0" cellpadding="0" cellspacing="0" width="100%"><TR><TD align="left" valign="top"><A href="http://jakarta.apache.org/index.html"><IMG border="0" hspace="0" src="resources/jakarta-logo.gif" vspace="0"></A></TD><TD align="left" bgcolor="#ffffff" valign="top" width="100%"><IMG align="right" alt="" border="0" hspace="0" src="resources/header.gif" vspace="0"></TD></TR><TR><TD><IMG border="0" height="5" hspace="0" src="resources/void.gif" vspace="0" width="5"></TD></TR><TR><TD background="resources/line.gif" colspan="2" height="2" width="100%"><IMG alt="" border="0" height="2" hspace="0" src="resources/line.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0" cellpadding="0" cellspacing="0" width="100%"><TR><TD valign="top" width="1%"></TD><TD nowrap="1" valign="top" width="14%"><BR> |
| |
| <P>About</P> |
| <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="index.html">Overview</A></LI></FONT> |
| <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="getting-started.html">Getting Started</A></LI></FONT> |
| <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="install.html">Install</A></LI></FONT> |
| <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="design.html">Design</A></LI></FONT> |
| <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="contributors.html">Contributors</A></LI></FONT> |
| <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="code-standards.html">Coding Standards</A></LI></FONT> |
| <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="license.html">License</A></LI></FONT> |
| <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="todo.html">TODO</A></LI></FONT> |
| <P>Guides</P> |
| <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="user-guide.html">User's Guide</A></LI></FONT> |
| <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="developer-guide.html">Developer's Guide</A></LI></FONT> |
| <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="vtl-reference-guide.html">VTL Reference Guide</A></LI></FONT> |
| <P>Tools</P> |
| <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="anakia.html">Anakia</A></LI></FONT> |
| <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="texen.html">Texen</A></LI></FONT> |
| <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="migration.html">Migration To Velocity</A></LI></FONT> |
| </TD><TD align="left" valign="top" width="*"><TABLE border="0" cellpadding="3" cellspacing="0"><TR><TD><BR> |
| |
| |
| |
| |
| |
| <DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0" width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0" src="resources/void.gif" vspace="0" width="5"><B>What Is Anakia?</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0" cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000" face="arial,helvetica,sanserif"> |
| <P align="justify"> |
| 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 align="justify"> |
| 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 align="justify"> |
| 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 align="justify"> |
| 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 align="justify"> |
| 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> |
| </FONT></TD></TR></TABLE></DIV><BR> |
| |
| <DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0" width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0" src="resources/void.gif" vspace="0" width="5"><B>Installation/Example</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0" cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000" face="arial,helvetica,sanserif"> |
| <P align="justify"> |
| Before reviewing the jakarta-velocity/examples/anakia directory, |
| you must <A href="install.html">build Velocity</A>. |
| </P> |
| <P align="justify"> |
| After building Velocity, <CODE><FONT face="courier, monospaced">cd</FONT></CODE> into the jakarta-velocity/examples/anakia/build |
| directory and run <CODE><FONT face="courier, monospaced">./build.sh</FONT></CODE>. (Shell scripts will work on |
| the Windows platform if you install <A href="http://sources.redhat.com/cygwin/">Cygwin</A>.) |
| </P> |
| <P align="justify"> |
| Output from the build.sh script, in this case HTML files, is placed into the |
| jakarta-velocity/examples/anakia/docs/ directory. |
| </P> |
| <P align="justify"> |
| 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> |
| </FONT></TD></TR></TABLE></DIV><BR> |
| |
| <DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0" width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0" src="resources/void.gif" vspace="0" width="5"><B>How does it work?</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0" cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000" face="arial,helvetica,sanserif"> |
| |
| <P align="justify"> |
| Anakia is an Ant task that executes from an Ant build file. The build file looks |
| something like this: |
| </P> |
| |
| <P align="justify"> |
| <DIV align="center"><TABLE border="0" cellpadding="0" cellspacing="4"><TR><TD bgcolor="#023264" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264" height="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#023264" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff"><PRE><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></PRE></TD><TD bgcolor="#023264" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#023264" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264" height="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#023264" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV> |
| </P> |
| |
| <P align="justify"> |
| <TABLE border="0" cellpadding="2" cellspacing="2" width="100%"><CAPTION></CAPTION> |
| <TR> |
| <TD align="center" bgcolor="#039acc" colspan="" rowspan="" valign="center"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="-1"><B>Name</B> |
| </FONT></TD> |
| <TD align="center" bgcolor="#039acc" colspan="" rowspan="" valign="center"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="-1"><B>Description</B> |
| </FONT></TD> |
| </TR> |
| <TR> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">basedir |
| </FONT></TD> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">Specifies the path to the directory location of your .xml files. |
| </FONT></TD> |
| </TR> |
| <TR> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">destdir |
| </FONT></TD> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">Specifies the path to the directory where the output files should go. |
| </FONT></TD> |
| </TR> |
| <TR> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">extension |
| </FONT></TD> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">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 align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">style |
| </FONT></TD> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">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 align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">projectFile |
| </FONT></TD> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">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. <B>It is an optional |
| task argument.</B> 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 align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">excludes |
| </FONT></TD> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">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 align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">includes |
| </FONT></TD> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">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 align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">lastModifiedCheck |
| </FONT></TD> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">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 align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">velocityPropertiesFile |
| </FONT></TD> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">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> |
| </P> |
| </FONT></TD></TR></TABLE></DIV><BR> |
| |
| <DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0" width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0" src="resources/void.gif" vspace="0" width="5"><B>Context Objects</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0" cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000" face="arial,helvetica,sanserif"> |
| <P align="justify"> |
| The 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> |
| <P align="justify"> |
| <TABLE border="0" cellpadding="2" cellspacing="2" width="100%"><CAPTION></CAPTION> |
| <TR> |
| <TD align="center" bgcolor="#039acc" colspan="" rowspan="" valign="center"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="-1"><B>Name</B> |
| </FONT></TD> |
| <TD align="center" bgcolor="#039acc" colspan="" rowspan="" valign="center"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="-1"><B>Value</B> |
| </FONT></TD> |
| </TR> |
| <TR> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">$root |
| </FONT></TD> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">This contains the JDOM root Element to your .xml document. |
| </FONT></TD> |
| </TR> |
| <TR> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">$project |
| </FONT></TD> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">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 align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">$escape.getText($string) |
| </FONT></TD> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">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; |
| </FONT></TD> |
| </TR> |
| <TR> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">$relativePath |
| </FONT></TD> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">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 align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">$xmlout |
| </FONT></TD> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">This contains an 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. |
| </FONT></TD> |
| </TR> |
| <TR> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">$treeWalk.allElements($element) |
| </FONT></TD> <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">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. |
| </FONT></TD> |
| </TR> |
| <TR> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">$xpath.applyTo("document/properties/@title", $root) |
| </FONT></TD> |
| <TD align="left" bgcolor="#a0ddf0" colspan="" rowspan="" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"> |
| 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. |
| |
| </FONT></TD> |
| </TR> |
| </TABLE> |
| </P> |
| |
| </FONT></TD></TR></TABLE></DIV><BR> |
| |
| <DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0" width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0" src="resources/void.gif" vspace="0" width="5"><B>Credits</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0" cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000" face="arial,helvetica,sanserif"> |
| <P align="justify"> |
| Anakia was originally conceptualized and implemented by Jon S. Stevens. |
| </P> |
| <P align="justify"> |
| 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 align="justify"> |
| Further help and assistance was provided by Jason van Zyl and Geir Magnusson Jr. |
| XPath support was added by Bob McWhirter. |
| </P> |
| </FONT></TD></TR></TABLE></DIV><BR> |
| |
| |
| </TD></TR></TABLE></TD></TR></TABLE><BR><TABLE border="0" cellpadding="0" cellspacing="0" width="100%"><TR><TD bgcolor="#023264"><IMG height="1" src="resources/resources.gif" width="1"></TD></TR><TR><TD align="center"><FONT color="#023264" face="arial,helvetica,sanserif" size="-1"><I> |
| Copyright © 2000 The Apache Software Foundation. |
| All Rights Reserved. |
| </I></FONT></TD></TR></TABLE></BODY></HTML> |