No need for a trunk under archive.



git-svn-id: https://svn.apache.org/repos/asf/struts/archive/trunk@470649 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/build-legacy/core/README b/build-legacy/core/README
deleted file mode 100644
index 32f578f..0000000
--- a/build-legacy/core/README
+++ /dev/null
@@ -1,21 +0,0 @@
-$Id$
-
-STRUTS
-======
-
-Introduction
-------------
-
-This subproject contains the source code for the "Struts" application support
-package, consisting of the following major components:
-
-- Controller servlet with action mapping technology, implementing the Model-
-  View-Controller (MVC) design pattern for web applications commonly called
-  "Model 2", with a servlet as the "front component".
-
-- Comprehensive custom tag library for building internationalized JSP pages
-  that have HTML forms which interact with JavaBeans that are managed
-  automatically by the controller servlet.
-
-For help with installing and using Struts, see the Struts User Guide.
-
diff --git a/build-legacy/core/maven.xml b/build-legacy/core/maven.xml
deleted file mode 100644
index 1a7e6d8..0000000
--- a/build-legacy/core/maven.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<project default="jar:jar"
-  xmlns:j="jelly:core"
-  xmlns:ant="jelly:ant">
-
-  <preGoal name="dist">
-    <attainGoal name="jar:install"/>
-  </preGoal>
-  
-  <preGoal name="xdoc:jelly-transform">
-    <attainGoal name="html2xdoc"/>
-
-    <!-- 
-      Maven FAQ PlugIn 1.2 will allow multiple faqs
-      For now, we'll just generate them from xdocs    
-    <attainGoal name="faq"/>
-    -->
-  </preGoal>
-
-  <postGoal name="dist:prepare-bin-filesystem">
-
-    <!-- Copy Instructions and Readmes -->
-    <ant:copy todir="${maven.dist.bin.assembly.dir}">
-      <ant:fileset dir=".">
-        <ant:include name="README*"/>
-        <ant:include name="LICENSE*"/>
-        <ant:include name="STATUS*"/>
-        <ant:include name="INSTALL*"/>
-      </ant:fileset>
-    </ant:copy>
-
-    <!-- Copy configuration files -->
-    <j:set var="docsDest" value="${maven.docs.dest}"/>
-    <ant:copy todir="${maven.dist.bin.assembly.dir}/conf">
-      <ant:fileset dir="./conf/share">
-        <ant:include name="*.xml"/>
-        <ant:include name="*.dtd"/>
-      </ant:fileset>
-    </ant:copy>
-  </postGoal>
-
-
-  <postGoal name="dist:prepare-src-filesystem">
-    <!-- Copy Instructions and Readmes -->
-    <ant:copy todir="${maven.dist.src.assembly.dir}">
-      <ant:fileset dir=".">
-        <ant:include name="README*"/>
-        <ant:include name="LICENSE*"/>
-        <ant:include name="STATUS*"/>
-        <ant:include name="INSTALL*"/>
-      </ant:fileset>
-    </ant:copy>
-
-    <!-- Copy configuration files -->
-    <j:set var="docsDest" value="${maven.docs.dest}"/>
-    <ant:copy todir="${maven.dist.src.assembly.dir}/conf">
-      <ant:fileset dir="./conf/share">
-        <ant:include name="*.xml"/>
-        <ant:include name="*.dtd"/>
-      </ant:fileset>
-    </ant:copy>
-  </postGoal>
-
-
-    <!--
-        Prepare Cactus webapp with necessary config files.
-    -->
-    <postGoal name="war:webapp">
-      <j:set
-       var="webapp.root"
-       
-     value="${pom.getPluginContext('maven-war-plugin').getVariable('maven.war.webapp.dir')}" />
-        <ant:echo>Copying files to ${webapp.root}</ant:echo>
-        <ant:filter token="cactus.contextURL" value="${cactus.contextURL}"/>
-        <ant:copy todir="${webapp.root}/WEB-INF/classes" filtering="on">
-            <ant:fileset dir="conf/test" includes="*.properties"/>
-        </ant:copy>
-        <ant:copy todir="${webapp.root}" filtering="off">
-            <ant:fileset dir="web/test" includes="**/*.jsp"/>
-            <ant:fileset dir="web/test" includes="**/*.txt"/>
-        </ant:copy>
-        <ant:copy todir="${webapp.root}/WEB-INF" filtering="off">
-            <ant:fileset dir="${maven.build.dir}/classes/META-INF/tlds" includes="*.tld"/>
-        </ant:copy>
-        <ant:copy file="conf/test/struts-config.xml" todir="${webapp.root}/WEB-INF" />
-        <ant:copy file="conf/test/maven-web.xml" tofile="${webapp.root}/WEB-INF/web.xml" />
-    </postGoal>
-
-  
-
-</project>
diff --git a/build-legacy/core/xdocs/acquiring.xml b/build-legacy/core/xdocs/acquiring.xml
deleted file mode 100644
index 6e8fdb0..0000000
--- a/build-legacy/core/xdocs/acquiring.xml
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0"?>
-<document url="./acquiring.xml">
-
-<!--
-// ======================================================================== 78
--->
-
-<properties>
-    <title>Acquiring - The Apache Struts Web Application Framework</title>
-</properties>
-
-<body>
-
-    <section name="Acquiring Struts" href="Acquiring">
-
-    <p>
-    The latest <em>production release</em> of Struts is
-    available in a convenient binary distribution and also with complete
-    source code. 
-    </p>
-
-        <p>
-            Apache downloads are now mirrored.
-            When you follow either the Binary or Source link,
-            please select your preferred mirror and then click on the link
-            to the <strong>Struts</strong> download.
-        </p>
-
-    <ul>
-        
-    <li>
-        <a href="http://jakarta.apache.org/site/binindex.cgi">
-        <strong>Struts Binary Distribution - Latest stable release</strong></a>
-    </li>
-
-    <li>
-        <a href="http://jakarta.apache.org/site/sourceindex.cgi">
-        <strong>Struts Source Code Distribution - Latest stable release</strong></a>
-    </li>
-    
-    </ul>
-
-    <p>
-    <strong>In addition to a Struts distribution,</strong> you will need to ensure that you have
-    downloaded and installed all of the
-    <a href="userGuide/installation.html#Prerequisites">
-    prerequisite</a> software applications. 
-    Then, follow the appropriate instructions to
-    <a href="userGuide/installation.html#Installing">
-    install and use a Struts binary distribution</a> in your web application 
-    or for
-    <a href="userGuide/installation.html#Building">
-    building Struts from the source distribution</a>.
-    </p>
-    
-</section>
-
-<section name="Nightly Builds" href="Builds">
-
-    <p>
-    For developers who are helping to develop Struts, or who just want "the 
-    latest bits", the latest development version is made available each morning. 
-    Use at your own risk!
-    </p>
-
-    <ul>
-        
-    <li>
-        Nightly builds - Download the source directly via
-        <a href="http://www.apache.org/dev/version-control.html">
-        Anonymous Subversion</a>.
-    </li>
-    
-    <li>
-        Nightly builds - Download the binary distributions from the
-       <a href="http://svn.apache.org/builds/struts/nightly/">
-        Struts nightly builds directory</a>.
-    </li>
-    
-    <li>
-        Nightly builds - Download the source distributions from the
-        <a href="http://svn.apache.org/builds/struts/nightly/src/">
-        Struts nightly build source directory</a>.
-    </li>
-    
-    </ul>
-    
-    <p>
-        If you are building Struts from source, be sure to refer to the
-        <a href="userGuide/installation.html">Installation page</a> in the
-        User Guide for prerequesites.
-        There are several JARs from the Jakarta Commons project that
-        are required to build Struts.
-    </p>
-    
-    <p>
-    If you are interested in the Tag Library Descriptor (TLD) files, 
-    they are maintained in the 
-    <a href="http://svn.apache.org/repos/asf/struts/core/trunk/conf/share/">
-    /conf/share</a> folder of the main repository. 
-    </p>
-    
-    <p>
-    Also be sure to check the
-    <a href="userGuide/release-notes.html">
-    Release Notes</a> for the nightly builds so you know what you are getting!
-    </p>
-
-    <p>
-    Access to the Subversion repository for Struts is available through both
-    <a href="http://svn.apache.org/viewcvs.cgi/struts/core/trunk/?root=Apache-SVN">web browser</a> 
-    and
-    <a href="http://www.apache.org/dev/version-control.html">
-    Subversion client</a> interfaces.
-    </p>
-
-</section>
-
-<section>
-    <p class="right">
-    Next: <a href="using.html">Using Struts</a>
-    </p>
-</section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/announce.xml b/build-legacy/core/xdocs/announce.xml
deleted file mode 100644
index 4894c17..0000000
--- a/build-legacy/core/xdocs/announce.xml
+++ /dev/null
@@ -1,266 +0,0 @@
-<?xml version="1.0"?>
-<document>
-
-  <properties>
-    <title>Announcements</title>
-  </properties>
-
-<body>
-
-<section name="Announcements">
-
-    <h4 id="a20030630">30 Jun 2003 - Struts 1.1 Final released</h4>
-    <p>
-        The Struts team is proud, and extremely pleased, to announce the Final
-        release of Struts 1.1. This release includes significant new
-        functionality, as well as numerous fixes for bugs which were reported
-        against the previous release, and supersedes the earlier 1.0.2 version
-        as the latest official release of Struts from the Apache Software
-        Foundation.
-    </p>
-    <p>The binary distribution is available at: <a href=
-    "http://www.apache.org/dist/jakarta/struts/binaries/">
-    http://www.apache.org/dist/jakarta/struts/binaries/</a> </p>
-    <p>and the source distribution is available at: <a href=
-    "http://www.apache.org/dist/jakarta/struts/source/">
-    http://www.apache.org/dist/jakarta/struts/source/</a></p>
-    <p>In addition, the library distribution, which contains updated binaries
-       without the sample applications, is available at: </p>
-    <p><a href="http://www.apache.org/dist/jakarta/struts/library/">
-    http://www.apache.org/dist/jakarta/struts/library/</a> </p>
-    <p>Details of the changes in this release are available in the Release
-    Notes,which can be found here: </p>
-    <p><a href=
-    "http://jakarta.apache.org/struts/userGuide/release-notes-1.1.html">
-    http://jakarta.apache.org/struts/userGuide/release-notes-1.1.html</a> </p>
-    <hr/>
-
-    <h4 id="a20030223">23 Feb 2003 - Struts 1.1 Release Candidate 1 Released</h4>
-    <p>
-        The Struts team is proud to announce the release of Struts 1.1 Release
-        Candidate 1. This release includes some new functionality, as well as
-        fixes for a number of bugs which were reported against earlier versions.
-        The Struts Team believes that this release is ready for prime time, hence
-        its designation as a release candidate.
-    </p>
-    <p>
-        The binary distribution is available at:
-    </p>
-    <p>
-        <a href="http://www.apache.org/dist/jakarta/struts/binaries/">
-        http://www.apache.org/dist/jakarta/struts/binaries/</a>
-    </p>
-    <p>
-        and the source distribution is available at:
-    </p>
-    <p>
-        <a href="http://www.apache.org/dist/jakarta/struts/source/">
-        http://www.apache.org/dist/jakarta/struts/source/</a>
-    </p>
-    <p>
-        In addition, the library distribution, which contains updated binaries
-        without the sample applications, is available at:
-    </p>
-    <p>
-        <a href="http://www.apache.org/dist/jakarta/struts/library/">
-        http://www.apache.org/dist/jakarta/struts/library/</a>
-    </p>
-    <p>
-        Details of the changes in this release are available in the Release
-        Notes, which can be found here:
-    </p>
-    <p>
-        <a href="http://jakarta.apache.org/struts/userGuide/release-notes-1.1-rc1.html">
-        http://jakarta.apache.org/struts/userGuide/release-notes-1.1-rc1.html</a>
-    </p>
-    <hr/>
-
-    <h4 id="S20021231">31 Dec 2002 - Struts 1.1 Beta 3 Released</h4>
-    <p>The Struts team is proud to announce the release of Struts 1.1 Beta 3. This
-    release includes significant new functionality, while retaining full
-    backwards compatibility with earlier versions of Struts. It also
-    incorporates fixes for a number of bugs which were reported against earlier
-    versions.
-    </p>
-    <p>
-    The binary distribution is available at:
-    </p>
-    <p>
-    <a href="http://www.apache.org/dist/jakarta/struts/binaries/">
-    http://www.apache.org/dist/jakarta/struts/binaries/</a>
-    </p>
-    <p>
-    and the source distribution is available at:
-    </p>
-    <p>
-    <a href="http://www.apache.org/dist/jakarta/struts/source/">
-    http://www.apache.org/dist/jakarta/struts/source/</a>
-    </p>
-    <p>
-    In addition, the library distribution, which contains updated binaries
-    without the sample applications, is available at:
-    </p>
-    <p>
-    <a href="http://www.apache.org/dist/jakarta/struts/library/">
-    http://www.apache.org/dist/jakarta/struts/library/</a>
-    </p>
-    <p>
-    Details of the changes in this release are available in the Release Notes,
-    which can be found here:
-    </p>
-    <p>
-    <a href="http://jakarta.apache.org/struts/userGuide/release-notes-1.1-b3.html">
-    http://jakarta.apache.org/struts/userGuide/release-notes-1.1-b3.html</a>
-    </p>
-    <hr/>
-
-    <h4 id="a20020813">12 Aug 2002 - Struts 1.1 Beta 2 Released</h4>
-    <p>The Struts team is proud to announce the release of Struts 1.1 Beta 2. This
-    release includes significant new functionality, while retaining full
-    backwards compatibility with earlier versions of Struts. It also
-    incorporates fixes for a number of bugs which were reported against earlier
-    versions.
-    </p>
-    <p>
-    The binary distribution is available at:
-    </p>
-    <p>
-    <a href="http://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b2/">http://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b2/</a>
-    </p>
-    <p>
-    and the source distribution is available at:
-    </p>
-    <p>
-    <a href="http://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b2/src/">http://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b2/src/</a>
-    </p>
-    <p>
-    In addition, the library distribution, which contains updated binaries
-    without the sample applications, is available at:
-    </p>
-    <p>
-      http://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b2/lib/
-    </p>
-    <p>
-    Details of the changes in this release are available in the Release Notes,
-    which can be found here:
-    </p>
-    <p>
-      http://jakarta.apache.org/struts/userGuide/release-notes-1.1-b2.html
-    </p>
-    <hr/>
-
-    <h4 id="a20020319">19 Mar 2002 - Struts 1.1 Beta 1 Released</h4>
-    <p>
-    The Struts team announces the release of Struts 1.1 Beta 1. This release
-    includes substantial new functionality, while retaining full backwards
-    compatibility with earlier versions of Struts. It also incorporates fixes
-    for a number of bugs which were reported against earlier versions.
-    </p>
-    <p>
-    The binary distribution for this release is available
-    <a href="http://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b1/">
-    <strong>here</strong></a>
-    and the source distribution
-    is available
-    <a href="http://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b1/src/">
-    <strong>here</strong></a>.
-    In addition, a library distribution, which consists of a minimal
-    binary distribution, without sample web applications or additional code, is
-    available
-    <a href="http://www.apache.org/dist/jakarta/jakarta-struts/release/v1.1-b1/lib/">
-    <strong>here</strong></a>.
-    </p>
-    <hr/>
-
-    <h4 id="a20020211">11 Feb 2002 - Struts 1.0.2 Released</h4>
-    <p>
-    The Struts team announces the release of Struts 1.0.2. This release is a
-    bug fix only release, which fixes a compatibility problem inadvertently introduced
-    with the previous 1.0.1 release.
-    </p>
-    <p>
-    The binary distribution for this release is available
-    <a href="http://jakarta.apache.org/builds/jakarta-struts/release/v1.0.2/">
-    <strong>here</strong></a>
-    and the source distribution
-    is available
-    <a href="http://jakarta.apache.org/builds/jakarta-struts/release/v1.0.2/src/">
-    <strong>here</strong></a>.
-    In addition, a library distribution, which consists of a minimal
-    binary distribution, without sample web applications or additional code, is
-    available
-    <a href="http://www.apache.org/dist/jakarta/jakarta-struts/release/v1.0.2/lib/">
-    <strong>here</strong></a>.
-    </p>
-    <hr/>
-
-    <h4 id="a20020112">12 Jan 2002 - Struts 1.0.1 Released</h4>
-    <p>
-      The Struts team is proud to announce the release of Struts 1.0.1. This
-      release is primarily a bug fix release, which fixes a number of known
-      problems with the previous 1.0 release.
-    </p>
-    <p>
-      The binary distribution for this release is available
-      <a href="http://www.apache.org/dist/jakarta/jakarta-struts/release/v1.0.1/">here</a>
-      and the source distribution is available
-      <a href="http://www.apache.org/dist/jakarta/jakarta-struts/release/v1.0.1/src/">here</a>.
-      In addition, a library distribution, which consists of a minimal binary distribution,
-      without sample web applications or additional code, is available
-      <a href="http://www.apache.org/dist/jakarta/jakarta-struts/release/v1.0.1/lib/">here</a>.
-    </p>
-    <hr/>
-
-
-    <h4 id="a20010615">15 Jun 2001 - Struts 1.0 Released</h4>
-
-<p>
-The production release of Struts 1.0, an open source framework for building Web applications, is now available for download at jakarta.apache.org. Struts encourages application architectures based on the Model-View-Controller (MVC) pattern and provides services common
-to most Web applications. Struts helps developers deploy products that are reliable, scaleable, and easier to maintain.
-</p>
-
-<p>
-The Struts framework offers services in three primary areas:
-</p>
-
-<p>
-* A controller servlet to dispatch requests to specific Action classes (provided by the application developer).<br/>
-* JSP custom tags to help developers create interactive form-based applications.<br/>
-* Utility classes for XML parsing, automatic JavaBean population, and internationalization of prompts and messages.
-</p>
-
-<p>
-Struts' support for internationalization builds on top of the Java Locale API, and have made it a popular choice for applications worldwide. Struts contributors include developers from Australia, France, Russia, and other parts of the globe.
-</p>
-
-<p>
-In addition to the Struts official distribution, several third-party libraries are already available, which offer enhanced support for JSP templates, HTML form validation, and automatic JavaBean creation. Struts has also been integrated with the Expresso Framework distributed by
-JCorporate Ltd. (jcorporate.com).
-</p>
-
-<p>
-Struts can be used with a J2EE Application server to deploy distributed applications, but will run under any compliant Servlet container (Servlet API 2.2+, JSP 1.1+), including Tomcat 3.2 or later. In fact, Struts is already used as an informal compliance test for Java Servlet
-containers and J2EE Application servers
-</p> 
-
-<p>
-The Struts project was founded in May 2000 by Craig McClanahan. McClanahan is also the lead developer of Tomcat 4.0, Sun's reference implementation for Java Servlet and ServerPage containers. Both Tomcat and Struts are open source available under the Apache Software License,
-and may be downloaded at jakarta.apache.org.
-</p>
-
-<p>
-Twenty-six independent developers contributed to the creation of Struts 1.0, with the help of over 1300 subscribers to the Struts mailing lists.<br/>
-</p>
-
-<hr />
-
-</section>
-
-    <section>
-       <p class="right">Next:
-       <a href="userGuide/index.html">User and Developer Guides</a>
-       </p>
-    </section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/example.xml b/build-legacy/core/xdocs/example.xml
deleted file mode 100644
index 1c6968b..0000000
--- a/build-legacy/core/xdocs/example.xml
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0"?>
-<document>
-
-  <properties>
-    <title></title>
-  </properties>
-
-  <meta name="keyword" content="jakarta, java"/>
-
-<body>
-
-<section name="Section 1">
-<p>
-This is section 1.
-</p>
-
-<table>
-<tr>
-    <td>This is a table</td><td>This is a table</td>
-</tr>
-<tr>
-    <td>This is a table</td><td>This is a table</td>
-</tr>
-</table>
-
-<ul>
-    <li>This is an unordered list.</li>
-</ul>
-
-</section>
-
-<section name="Section 2">
-<p>
-This is section 2.
-</p>
-
-<ol>
-    <li>This is an ordered list.</li>
-</ol>
-</section>
-
-<section name="Section 3">
-<p>
-This is section 3.
-</p>
-
-<source>
-    Anything within this tag is rendered as a "box"
-    with blue lines and <pre></pre> tags around it.
-</source>
-
-    <subsection name="Subsection of Section 3">
-    <p>
-        This is the subsection 3.
-    </p>
-
-    <source><![CDATA[      
-    <?xml version="1.0" encoding="ISO-8859-1" ?>
-    <!DOCTYPE struts-config PUBLIC
-              "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
-              "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
-    <struts-config>
-        <form-beans>
-            <form-bean
-                name="logonForm"
-                type="app.LogonForm"/>
-        </form-beans>
-        <action-mappings>
-            <action
-                path="/Welcome"
-                forward="/pages/Welcome.jsp"/>
-            <action
-                path="/Logon"
-                forward="/pages/Logon.jsp"/>
-            <action
-                path="/LogonSubmit"
-                type="app.LogonAction"
-                name="logonForm"
-                scope="request"
-                validate="true"
-                input="/Logon.do">
-                <forward
-                    name="success"
-                    path="/Welcome.do"/>
-                <forward
-                    name="failure"
-                    path="/Logon.do"/>
-            </action>
-            <action
-                path="/Logoff"
-                type="app.LogoffAction">
-                <forward
-                    name="success"
-                    path="/Welcome.do"/>
-            </action>
-        </action-mappings>
-        <message-resources parameter="resources.application"/>
-    </struts-config>
-    ]]></source>
-
-
-    </subsection>
-</section>
-
-<footer>
-    <a href="http://sourceforge.net/projects/ctecl">
-      <img src="http://sourceforge.net/sflogo.php?group_id=72748" border="0" alt="sf logo"/>
-    </a>
-</footer>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/faq.fml b/build-legacy/core/xdocs/faq.fml
deleted file mode 100644
index 5462ed7..0000000
--- a/build-legacy/core/xdocs/faq.fml
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<faqs title="Frequently Asked Questions">
-
-<!-- 
-    Maven FAQ PlugIn 1.2 will allow multiple faqs but, for now, we'll just 
-    generate them from xdocs. This file is just an example of a FAQ file for
-    the FAQ plug-in and is not maintained.
--->     
-      
-  <part id="general">
-    <title>General</title>
-
-    <faq id="why">
-      <question>Why do we need Struts?</question>
-      <answer>
-        Java technologies give developers a serious boost when creating and 
-        maintaining applications to meet the demands of today's public Web 
-        sites and enterprise intranets. Struts combines Java Servlets, Java 
-        ServerPages, custom tags, and message resources into a unified 
-        framework. The end result is a cooperative, synergistic platform, 
-        suitable for development teams, independent developers, and everyone 
-        in between.
-      </answer>
-    </faq>
-
-    <faq id="how">
-      <question>How does Struts work?</question>
-      <answer>
-        Java Servlets are designed to handle requests made by Web browsers. 
-        Java ServerPages are designed to create dynamic Web pages that can turn
-         billboard sites into live applications. Struts uses a special Servlet 
-         as a switchboard to route requests from Web browsers to the appropriate 
-         ServerPage. This makes Web applications much easier to design, create, 
-         and maintain.
-      </answer>
-    </faq>
-    
-    <faq id="compatible">
-      <question>Is Struts compatible with other Java technologies?</question>
-      <answer>
-        Yes. Struts is committed to supporting industry standards. Our lead 
-        developer is a member of <a id="http://java.sun.com/aboutJava/communityprocess/jsr/jsr_052_jsptaglib.html">JSR052</a>, 
-        Sun's Expert group for developing a standard library of custom JSP 
-        tags. A primary design criteria is that Struts must be compatible with 
-        Sun's J2EE platform for corporate enterprises. In fact, Struts really 
-        acts as an integrator of Java technologies, so that they can be used in 
-        the &quot;real world&quot;.
-      </answer>
-    </faq>
-
-    <faq id="who">
-      <question>Who wrote Struts?</question>
-      <answer>
-	    <p>Struts was created by Craig R. McClanahan, and donated to the Apache 
-	    Software Foundation in May 2000. Craig is the primary developer of both 
-	    Struts and <a id="http://jakarta.apache.org/tomcat/index.html">Tomcat 4</a>, 
-	    the basis for the official reference implementation for a servlet 2.3 
-	    and JSP 1.2 container. With stable releases of Struts and Tomcat 4 in 
-	    circulation, Craig is now the Specification Lead for 
-	    <a id="http://jcp.org/jsr/detail/127.jsp">JavaServer Faces (JSR-127)</a>, 
-	    and is the Web Layer Architect for the Java2 Enterprise Edition (J2EE) 
-	    platform as a whole.</p>
-	    <p>There are now many active committers to the Struts project, working 
-	    cooperatively from around the globe. Other Java developers are invited 
-	    to <a id="helping.html#contribute">contribute to the project</a>. 
-	    Struts is an <a id="http://jakarta.apache.org/">Apache Jakarta</a>  
-	    project, with the common mission to &quot;provide commercial-quality 
-	    server solutions based on the Java Platform that are developed in an 
-	    open and cooperative fashion&quot;. All told, 17 individual developers 
-	    and committers contributed to the Struts 1.0 codebase.</p>
-      </answer>
-    </faq>
-
-    <faq id="struts">
-      <question>Why is it called Struts?</question>
-      <answer>
-        It's a reference to struts in the architectural sense, a reminder of 
-        the nearly invisible pieces that hold up buildings, houses, and bridges.
-      </answer>
-    </faq>
-    
-    <faq id="license">
-      <question>How is Struts licensed?</question>
-      <answer>
-        Struts is copyrighted software available under a 
-        &quot;free-to-use-license&quot; by The Apache Software Foundation. 
-        The license appears at the head of every source code file. A reference
-        copy of the license is available 
-        <a href="http://www.apache.org/LICENSE-1.1">here</a>.
-      </answer>
-    </faq>
-
-    <faq id="usage">
-      <question>Can Struts be used in a commercial product?</question>
-      <answer>
-        <p>Yes. The only requirements you must meet are those listed in the 
-        Apache Software Foundation license, which is included at the top of 
-        each source file and in the file LICENSE in the top-level directory 
-        of the distribution.</p>
-        <p>In addition, <a id="helping.html#bugs">contributions of patches, 
-        improved code, new features,</a> or even just requests for features 
-        are also welcome.</p>
-      </answer>
-    </faq>
-    
-    <faq id="credits">
-      <question>Do I have to credit Struts on my own website?</question>
-      <answer>
-        You need to credit Struts if you <strong>redistribute your own framework</strong>
-        based on Struts	for other people to use. (See the 
-        <a id="http://www.apache.org/LICENSE">Apache License</a> for details.)
-        But you do <strong>not</strong> need to credit Struts just because your
-        web application utilizes the framework.	It's the same situation as using 
-        the Apache HTTPD server or Tomcat. Not required if its just running 
-        your web site. Required if you've used the source code to create your 
-        own server that you are redistributing to other people.      
-      </answer>
-    </faq>
-    
-    <faq id="where">
-      <question>Where can I get a copy of Struts?</question>
-      <answer>
-        The best place to download Struts is at 
-        <a id="http://jakarta.apache.org/struts/">jakarta.apache.org/struts</a>. 
-        The nightly builds are very stable, and recommended as the best place 
-        to start today.
-      </answer>
-    </faq>
-    
-    <faq id="install">
-      <question>How do I install Struts?</question>
-      <answer>
-        <p>To develop applications with Struts, you can usually just add the
-        Struts JAR file	to your Java development environment. You can then 
-        start using the Struts classes as part of your own application. 
-        A blank Struts application (in the <code>webapps</code> directory, 
-        open <code>struts-blank.war</code>)	is provided, which you can just 
-        copy to get a quick-start on your own brainchild.</p>
-        <p>Since the full source code for Struts is available, we also provide 
-        <a id="../userGuide/installation.html">complete instructions</a> for
-        compiling your own Struts JAR from scratch. (This is actually easier 
-        than it looks!)</p>
-        <p>Your Struts application can usually be deployed using a standard WAR 
-        file. In most cases, you simply deposit the WAR file on your application 
-        server, and it is installed	automatically. If not, step-by-step 
-        installation instructions for 
-        <a id="../userGuide/installation.html#Containers">various servlet 
-        containers</a> are available.</p>
-      </answer>
-    </faq>
-    
-  </part>
-
-  <!--
-    <faq id="">
-      <question></question>
-      <answer>
-      </answer>
-    </faq>
-  -->
-</faqs>
diff --git a/build-legacy/core/xdocs/faqs/actionForm.xml b/build-legacy/core/xdocs/faqs/actionForm.xml
deleted file mode 100644
index 4084e91..0000000
--- a/build-legacy/core/xdocs/faqs/actionForm.xml
+++ /dev/null
@@ -1,285 +0,0 @@
-<?xml version="1.0"?>
-
-<document url="./actionForm.xml">
-
- <properties>
-  <title>Building an ActionForm</title>
- </properties>
-
-<body>
-<section href="actionForm" name="How to Build an Action Form"/>
-           
-<section href="login" name="Creating a Login Form">
-
-    <p>
-    This is a simple example of a login form to illustrate how Struts
-    makes dealing with forms much less painful than using straight HTML
-    and standard JSP facilities.  
-    Consider the following page (based on the example MailReader application 
-    included  with Struts) named <code>logon.jsp</code>:
-    </p>
-
-<hr/>
-
-<pre><code><![CDATA[
-<%@ page language="java" %>
-<%@ taglib  uri="/WEB-INF/struts-html.tld" prefix="html" %>
-<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
-
-<html:html>
-<head>
-<title>
-    <bean:message key="logon.title"/>
-</title>
-</head>
-
-<body bgcolor="white">
-
-<html:errors/>
-
-<html:form action="/logon" focus="username">
-<table border="0" width="100%">
-    <tr>
-        <th class="right">
-            <bean:message key="prompt.username"/>
-        </th>
-        <td class="left">
-            <html:text  property="username" size="16"/>
-        </td>
-    </tr>
-    <tr>
-        <th class="right">
-            <bean:message key="prompt.password"/>
-        </th>
-        <td class="left">
-            <html:password property="password" size="16"/>
-        </td>
-    </tr>
-    <tr>
-        <td class="right">
-            <html:submit>
-                <bean:message key="button.submit"/>
-            </html:submit>
-        </td>
-        <td class="right">
-            <html:reset>
-                <bean:message key="button.reset"/>
-            </html:reset>
-        </td>
-    </tr>
-</table>
-
-</html:form>
-</body>
-</html:html>
-]]></code></pre>
-
-<hr/>
-
-    <p>
-    The following items illustrate the key features of form handling in Struts,
-    based on this example:
-    </p>
-
-    <ul>
-
-        <li>
-        The <code>taglib</code> directive tells the JSP page compiler where to
-        find the <em>tag library descriptor</em> for the Struts tag library.  
-        In this case, we are using <code>bean</code> as the prefix that 
-        identifies tags from the struts-bean library, and "html" as the prefix  
-        that identifies tags from the struts-html library.  
-        Any desired prefix can be used.
-        </li>
-          
-        <li>
-        This page uses several occurrences of the
-        <strong>message</strong> tag to look up internationalized
-        message strings from a <code>MessageResources</code> object containing
-        all the resources for this application.  
-        For this page to work, the following message keys must be defined in 
-        these resources:
-          
-        <ul>
-        
-            <li>
-            <strong>logon.title</strong> - Title of the logon page
-            </li>
-
-            <li>
-            <strong>prompt.username</strong> - A "Username:" prompt string
-            </li>
-
-            <li>
-            <strong>prompt.password</strong> - A "Password:" prompt string
-            </li>
-
-            <li>
-            <strong>button.submit</strong> - "Submit" for the button label
-            </li>
-
-            <li>
-            <strong>button.reset</strong> - "Reset" for the button label
-        </li>
-        
-        </ul>
-
-        When the user logs on, the application can store a <code>Locale</code>
-        object in the user's session.  
-        This <code>Locale</code> will be used to select messages in the 
-        appropriate language.  
-        This makes it easy to implement giving the user an option to switch 
-        languages -- simply change the stored <code>Locale</code> object, and 
-        all messages are switched automatically.
-        </li>
-          
-        <li>
-        The <strong>errors</strong> tag displays any error messages that have been 
-        stored by a business logic component, or nothing if no errors have been 
-        stored.  
-        This tag will be described further below.
-        </li>
-          
-        <li>
-        The <strong>form</strong> tag renders an HTML <code>&lt;form&gt;</code> element, 
-        based on the specified attributes.
-        It also associates all of the fields within this form with a 
-        <code>ActionForm</code> bean 
-        [<code>org.apache.struts.action.ActionForm</code>].
-        The tag looks up the <code>/logon</code> action mapping in the Struts
-        configuration.
-        The <code>logon</code> mapping tells the tag that the form bean is
-        stored in the session context under the key <code>logonForm</code>.
-        The Struts developer provides the Java implementation of the 
-        ActionForm bean, subclassing the Struts class <code>ActionForm</code>
-        (see <a href="../userGuide/building_controller.html#action_form_classes">Building
-        Controller</a> components).
-        This bean is used to provide initial values for all of the input
-        fields that have names matching the property names of the bean.
-        If an appropriate bean is not found, a new one will be created
-        automatically, using the Java class name specified through the 
-        action mapping.
-        </li>
-
-        <li>
-        The form bean can also be specified in the tag by providing
-        <code>name</code> and <code>type</code> attributes. But most often,
-        everything is specified in the
-        <a href="../userGuide/building_controller.html#config">Struts Configuration 
-        File</a>.
-        </li>
-
-        <li>
-        The <strong>text</strong> tag renders an HTML <code>&lt;input&gt;</code> 
-        element of type "text".  
-        In this case, the number of character positions to occupy on the 
-        browser's screen has been specified as well. 
-        When this page is executed, the current value of the 
-        <code>username</code> property of the corresponding bean (that is, 
-        the value returned by <code>getUsername</code>).
-        </li>
-
-        <li>
-        The <strong>password</strong> tag is used similarly.
-        The difference is that the browser will echo asterisk characters,
-        instead of the input value, as the user types their password.
-        </li>
-
-        <li>
-        The <strong>submit</strong> and<strong>reset</strong> tags generate the corresponding
-        buttons at the bottom of the form.  
-        The text labels for each button are created using message tags,
-        as with the prompts, so that these values are internationalized.
-        </li>
-          
-    </ul>
-
-    <p>
-    Handling multipart forms is also easy.  
-    Obviously when you create a multipart form you're creating a form that  
-    has at least one input of type "file".  
-    The first step to creating a multipart form is to utilize the struts-html 
-    taglib to create the presentation page:
-    </p>
-
-<hr/>
-
-<pre><code><![CDATA[
-<%@page language="java">
-<%@taglib 
-    uri="/WEB-INF/struts-html.tld"
-   prefix="html">
-
-<html:form action="uploadAction.do" enctype="multipart/form-data">
-
-    Please Input Text: <html:text property="myText">
-    Please Input The File You Wish to Upload: <html:file property="myFile">
-   
-   <html:submit />
-
-</html:form>
-]]></code></pre>
-
-<hr/>
-
-    <p>
-    The next step is to create your ActionForm bean:
-    </p>
-
-
-<hr/>
-
-<pre><code><![CDATA[
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import org.apache.struts.action.ActionForm;
-import org.apache.struts.action.ActionMapping;
-import org.apache.struts.upload.FormFile;
-
-public class UploadForm extends ActionForm {
-
-    protected String myText;
-    protected FormFile myFile;
-    
-    public void setMyText(String text) {
-        myText = text;
-    }
-    
-    public String getMyText() {
-        return myText;
-    }
-    
-    public void setMyFile(FormFile file) {
-        myFile = file;
-    }
-    
-    public FormFile getMyFile() {
-        return myFile;
-    }
-
-}
-]]></code></pre>
-
-<hr/>
-
-    <p>
-    Look at the Javadocs for 
-    <code><a href="../api/org/apache/struts/upload/FormFile.html">
-    FormFile</a></code> to see the methods it exposes to manipulate files in 
-    file uploading.
-    Also look at the Javadocs for
-    <a href="../api/org/apache/struts/action/ActionServlet.html">
-    ActionServlet</a> and
-    <a href="../api/org/apache/struts/action/ActionMapping.html">
-    ActionMapping</a> for the various parameters you can specify to change 
-    how files are uploaded.  
-    Basically in your <code>execute</code> method in your action class you 
-    would call <code>((UploadForm) form).getMyFile()</code> to retrieve the 
-    FormFile and do what you want with it.
-    </p>
-
-</section>
-
- </body>
-</document>
-
diff --git a/build-legacy/core/xdocs/faqs/apps.xml b/build-legacy/core/xdocs/faqs/apps.xml
deleted file mode 100644
index 2606a86..0000000
--- a/build-legacy/core/xdocs/faqs/apps.xml
+++ /dev/null
@@ -1,143 +0,0 @@
-<?xml version="1.0"?>
-<document url="./apps.xml">
-<properties>
-<title>Building Applications</title>
-</properties>
-<body>
-<section name="How to Build Applications" href="building_apps"/>
-<section href="intro" name="About This Document">
-<p>
-This document outlines one possible sequence of development steps that can be followed to create a
-Struts application.  It is not intended as a complete description of each
-referenced development activity.  More detailed documentation is available
-elsewhere and is referenced by "(more...)" links where possible.
-</p>
-</section>
-
-<section href="caveats" name="Caveats">
-<ol>
-<li>Requirements development and design are outside of the scope of this  document.</li>
-<li>For help installing Struts, see the <a href="../userGuide/installation.html">Getting Started</a> chapter.</li>
-<li>There are many other ways to approach Struts development and there are many
-    other features available besides the ones discussed below. This document
-    outlines only one way to get started.</li>
-<li>This document focuses on form/data centric applications, but may also work with
-    other types of applications.</li>
-<li>This material was written for Struts 1.1 (beta 2).</li>
-</ol>
-</section>
-
-<section href="overview" name="Overview">
-<ol>
-<li>Implement data entry forms as JSP files.</li>
-<li>Implement one or more <code>ActionForm</code> descendents to buffer data
-    between JSPs and Actions.</li>
-<li>Create an XML document that defines the validation rules for your
-    application.</li>
-<li>Implement one or more <code>Action</code> descendents to respond form
-    submissions.</li>
-<li>Create <code>struts-config.xml</code> to associate forms with
-    actions.</li>
-<li>Create or update <code>web.xml</code> to reference
-    <code>ActionServlet</code>, taglibs used by Struts.</li>
-<li>Parallel Tasks
-<ol>
-<li>Building</li>
-<li>Unit Testing</li>
-<li>Deployment</li>
-</ol>
-</li>
-</ol>
-</section>
-
-<section href="details" name="Details">
-<ol>
-<li>Implement data entry forms as JSP files.
-<ol>
-<li>Use elements from the <code>html</code> taglib
-    to define the form elements. <a href="../userGuide/struts-html.html">
-    (more...)</a></li>
-<li>Use <code>message</code> and other elements from the <code>bean</code>
-    taglib to define the labels and other static text of the form. 
-    <a href="../userGuide/struts-bean.html">(more...)</a>
-<ol>
-<li>Create and maintain a properties file of the text elements
-    to be displayed. <a href="../userGuide/preface.html#resources">(more...) 
-    </a></li>
-</ol>
-</li>
-<li>Use <code>property</code> attributes to link form fields to 
-    <code>ActionForm</code> instance variables.</li>
-</ol>
-</li>
-<li>Implement one or more <code>ActionForm</code> descendents
-    to buffer data between JSPs and Actions.
-<ol>
-<li>Create get/set pairs that correspond to the property names
-    in your related JSP form. Example:
-<pre>&lt;html:text property="city" /&gt;</pre>
-    needs:
-<pre>getCity() and setCity(String c)</pre>
-</li>
-<li>When needed, create a <code>reset</code> method
-    that sets the fields of the <code>ActionForm</code> to their default values. Most ActionForms do not need to do this.</li>
-</ol>
-</li>
-<li>Create an XML document that defines the validation rules for your
-    application.</li>
-<li>Implement one or more <code>Action</code> descendents
-    to respond to form submissions.
-<ol>
-<li>Descend from DispatchAction or LookupDispatchAction if you
-    want one class to handle more than one kind of event (example: one Action
-    to handle 'insert', 'update' and 'delete' events, using a different "surrogate" execute method for each). <a href="http://husted.com/struts/tips/002.html">(more...)</a></li>
-<li>Use the <code>execute</code> method
-    (or its surrogates) of your Action class to interface with objects in your
-    application responsible for database interaction, such as EJBs, etc.
-    <!-- [:TODO: find good doc to link to] -->
-</li>
-<li>Use the return value of the <code>execute</code> method
-    (or its surrogates) direct the user interface to the appropriate next page.
-<!-- [:TODO: find good doc to link to] -->
-</li>
-</ol>
-</li>
-<li>Create <code>struts-config.xml</code> to
-    associate forms with actions. The file minimally needs:</li>
-<li>Create or update <code>web.xml</code> to
-    reference <code>ActionServlet</code>, taglibs used by Struts. <a href="../userGuide/configuration.html#dd_config"> (more...)</a></li>
-<li>Parallel Tasks
-<ol>
-<li>Building
-<ol>
-<li>Use Ant. It can compile, create WAR file, perform XSLT
-   transformations, run unit tests, interact with version control systems,
-   clean up, etc. <a href="http://jakarta.apache.org/ant"> (more...)</a></li>
-<li>Create and use build script incrementally, as you create
-    files that need to be copied, compiled, etc. </li>
-</ol>
-</li>
-<li>Unit Testing
-<ol>
-<li>Unit test normal java beans with JUnit. <a href="http://www.junit.org"> (more...)</a></li>
-<li>Unit test JSP, taglibs and conventional servlet components
-    with Cactus. <a href="http://jakarta.apache.org/cactus"> (more...)</a></li>
-<li>Unit test Action servlets with StrutsTestCase. <a href="http://strutstestcase.sourceforge.net"> (more...)</a></li>
-<li>Add all unit tests to the build script as a separate
-    target. This target should use the <code>junit</code> tag to launch each TestCase descendent. <a href="http://jakarta.apache.org/ant/manual/OptionalTasks/junit.html"> (more...)</a></li>
-</ol>
-</li>
-<li>Deployment
-<ol>
-<li>Build script should create a war file containing the
-    files developed above, along with files that make up the Struts framework.
-    <!-- [:TODO: describe this further, look for doc to link to] -->
-</li>
-</ol>
-</li>
-</ol>
-</li>
-</ol></section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/faqs/database.xml b/build-legacy/core/xdocs/faqs/database.xml
deleted file mode 100644
index a2be42a..0000000
--- a/build-legacy/core/xdocs/faqs/database.xml
+++ /dev/null
@@ -1,291 +0,0 @@
-<?xml version="1.0"?>
-
-<document url="./database.xml">
-
- <properties>
-  <title>Accessing a Database</title>
- </properties>
-
-<body>
-<section href="actionForm" name="How to Access a Database"/>
-
-<section name="Accessing a Database" href="database">
-
-    <p>
-    The best thing is use the Action as a thin adaptor between the
-    web/presentation-tier and your business classes (including those that
-    access a database).
-    </p>
-
-    <p>
-    So you first design a business API that uses plain Java classes.
-    The best thing is to use objects that take ordinary Java types and return
-    a JavaBean or collection of JavaBeans.
-    The Action then calls these objects and passes the result back to the
-    web/presentation tier.
-    </p>
-
-    <p>
-    A common approach is to create an Action class for each of the business
-    API methods/classes that you need to call.
-    Ideally, all the database access code should be encapsulated in the
-    business API classes, so Struts doesn't know what persistent layer you
-    are using (or even if there is a persistence layer).
-    It just passes a key or search String and gets back a bean or collection
-    of beans.
-    This lets you use the same business API classes in other environments,
-    and also to run unit tests against your business API outside of Struts or
-    a HTTP environment.
-    </p>
-
-    <p>
-    To get started, it's simplest to setup a 1:1 correspondence between the
-    Actions and the entry-points to your business API.
-    As you gain experience, you will find ways to combine your Actions, say
-    by using the DispatchAction.
-    It's even possible to use a single "framework" Action to call all of your
-    business classes, as is done with Scaffold ProcessAction in the contrib
-    folder.
-    Using fewer Actions does require a deeper understanding of how Struts and
-    MVC frameworks operate.
-    Don't hesitate to err on the side of creating more Actions at first.
-    The Struts configuration makes it easy to refactor your Actions later,
-    since you can change the Action type without changing anything else in the
-    application.
-    </p>
-
-    <p>
-    Ideally, the business logic layer should encapsulate the data access
-    details, including acquiring a database connection.
-    However, some application designs expect that the caller be able to provide a
-    database connection or DataSource instance.
-    When this is the case, the Struts DataSource manager can make it easy for
-    your Action to produce these resources on demand.
-    </p>
-
-    <p>
-    The Struts DataSource manager is configured as an element in the
-    <a href="../userGuide/configuration.html#data-source_config">
-    Struts configuration file</a> (struts-config.xml).
-    The manager can be used to deploy any connection pool that implements the
-    <code>javax.sql.DataSource</code> interface and is configurable totally
-    from JavaBean properties.
-    If your DBMS or container provides a connection pool that meets these
-    requirements, then that component might be your first choice.
-    </p>
-
-    <p>
-    The Jakarta Commons dbcp's BasicDataSource
-    [<code>org.apache.commons.dbcp.BasicDataSource</code>] also works well
-    with the DataSource manager, if a native component is not available.
-    </p>
-    
-    <p>
-    <strong>Note:</strong> The Generic DataSource which was included with previous 
-    versions of Struts has been removed as of release 1.2.0 in favor of 
-    plugging in the BasicDataSource, or another DataSource implementation.
-    </p>
-
-    <p>
-    This is how you would specify a DBCP BasicDataSource for your application:
-    </p>
-
-<pre><code><![CDATA[
-<data-sources>
-<!-- configuration for commons BasicDataSource -->
-<data-source type="org.apache.commons.dbcp.BasicDataSource">
-    <set-property
-      property="driverClassName"
-      value="org.postgresql.Driver" />
-    <set-property
-      property="url"
-      value="jdbc:postgresql://localhost/mydatabase" />
-    <set-property
-      property="username"
-      value="me" />
-    <set-property
-      property="password"
-      value="test" />
-    <set-property
-      property="maxActive"
-      value="10" />
-    <set-property
-      property="maxWait"
-      value="5000" />
-    <set-property
-      property="defaultAutoCommit"
-      value="false" />
-    <set-property
-      property="defaultReadOnly"
-      value="false" />
-    <set-property
-      property="validationQuery"
-      value="SELECT COUNT(*) FROM market" />
-</data-source>
-</data-sources>
-]]></code></pre>
-
-    <p>
-    Note that you can define as many datasource objects as your application
-    requires and refer to each using a logical name.
-    This can be useful in providing better security or scalability, or even
-    to test datasource implementations against each other.
-    </p>
-
-    <p>
-    After a DataSource is defined, here is an example of using the
-    manager to establish a connection from within an Action's
-    <code>execute</code> method.
-    </p>
-
-<pre><code>
-public ActionForward
-       execute(ActionMapping mapping,
-               ActionForm form,
-               HttpServletRequest request,
-               HttpServletResponse response) throws Exception
-{
- javax.sql.DataSource dataSource;
- java.sql.Connection myConnection;
- try {
-  dataSource = getDataSource(request);
-  myConnection = dataSource.getConnection();
-  // do what you wish with myConnection
- } catch (SQLException sqle) {
-    getServlet().log("Connection.process", sqle);
- } finally {
-    //enclose this in a finally block to make
-    //sure the connection is closed
-    try {
-       myConnection.close();
-    } catch (SQLException e) {
-       getServlet().log("Connection.close", e);
-    }
-   }
-}
-</code></pre>
-
-    <p>
-    <em>Note: If you use the Commons BasicDataSource with Struts,
-    the query you provide for the pingQuery attribute (if you choose to
-    include it) must return at least one row.</em>
-    </p>
-
-    <p>
-    <strong>Example:</strong> <code>SELECT COUNT(*) FROM VALIDTABLE</code>
-    </p>
-
-    <p>
-    Just be sure you to replace "VALIDTABLE" with the name of a valid table
-    in your database.
-    </p>
-
-</section>
-
-<section name="Using Multiple Datasources" href="multi_dsrc">
-    <p>
-    If you need more than one data source in a module, you can include a key
-    attribute in the data-source element:
-    </p>
-<pre><code><![CDATA[
-<data-sources>
-   <data-source key="A" type="org.apache.commons.dbcp.BasicDataSource">
-      ... properties as before ...
-   </data-source>
-   <data-source key="B" type="org.apache.commons.dbcp.BasicDataSource">
-      ... properties as before ...
-   </data-source>
-   ...
-</data-sources>
-]]></code></pre>
-
-    <p>
-    Which can then be accessed by including the key ("A" in this case) as an
-    additional parameter to the Action.getDataSource() method.
-    </p>
-
-<pre><code>
-   ...
-   try {
-      dataSourceA = getDataSource(request, "A");
-      dataSourceB = getDataSource(request, "B");
-   ...
-</code></pre>
-
-    <p>
-    Each module can have as many data sources as it needs. The keys only
-    need to be unique within a module since the struts module system maintains
-    a name space for the items in each module to protect you from name
-    clashes.
-    </p>
- </section>
-
-<section href="more" name="See Also">
-
-    <p>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg24621.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg24621.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg24709.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg24709.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg24626.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg24626.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg24331.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg24331.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg24102.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg24102.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg23501.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg23501.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg23455.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg23455.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg23375.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg23375.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg23321.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg23321.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg23098.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg23098.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg22713.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg22713.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg21974.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg21974.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg21026.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg21026.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg19338.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg19338.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg18323.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg18323.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg14975.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg14975.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg14914.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg14914.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg14435.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg14435.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg01562.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg01562.html</a>
-    </p>
-
-    <p>
-    Transformation/Data Transfer<br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg24480.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg24480.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg23623.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg23623.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg10195.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg10195.html</a><br/>
-    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg10205.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg10205.html</a>
-    </p>
-
-</section>
-
-
-<section href="DynaResultSet" name="Rendering a dynamic result set">
-
-    <p>
-        The result of most queries will map to the ActionForms you are already using,
-        and so you can render the ResultSet as a collection of ActionForms.
-        But sometimes there are columns in a ResultSet that are not properties of an ActionForm,
-        or even known in advance.
-    </p>
-
-    <p>
-        Happily, the Struts tags don't care what type of bean you use with them.
-        You could even output a ResultSet directly.
-        But a ResultSet retains a connection to the database, and passing "all that" directly to a JSP gets messy.
-        So what's a developer to do?
-    </p>
-
-    <p>
-        Since Struts 1.1, the simplest option is to use a
-        <a href="http://jakarta.apache.org/commons/beanutils/api/org/apache/commons/beanutils/ResultSetDynaClass.html">ResultSetDynaClass</a>
-        to transfer the ResultSet into an ArrayList of DynaBeans.
-        The Struts custom tags can use DynaBean properties as easily as they use conventional JavaBean properties.
-        (See <strong>DynaActionForm classes</strong> in the Struts User Guide for details.)
-    </p>
-
-    <p>
-        Since this is in the BeanUtils jar, you already have it on board, and just need to implement the transfer routine
-        (see the ResultSetDynaClass link).
-    </p>
-
-</section>
-
-</body>
-</document>
-
diff --git a/build-legacy/core/xdocs/faqs/eclipse.xml b/build-legacy/core/xdocs/faqs/eclipse.xml
deleted file mode 100644
index e876629..0000000
--- a/build-legacy/core/xdocs/faqs/eclipse.xml
+++ /dev/null
@@ -1,232 +0,0 @@
-<?xml version="1.0"?>
-
-<document url="./ssl.xml">
-
-<properties>
-
-
-<title>How to setup a basic Struts project using Eclipse IDE - Apache Struts</title>
-
-</properties>
-
-<body>
-
-<section href="eclipse" name="How to setup a basic Struts project using Eclipse IDE"/>
-<section name="Legal Disclamer">
-
-<p>
-* DISCLAIMER - This simple How-To shows you one of many ways to setup a working project using<br/>
-the Struts framework.  This is mainly geared toward struts users who are new to Eclipse, and<br/> 
-don't want to spend a lot of time figuring out the differences between their old IDE (if any)<br/>
-and this one.<br/>
-<br/>
-I will also apologize ahead of time for the formatting of this page.<br/>
-</p>
-<br/>
-In this How-To, I will demonstrate (using Eclipse 2.0.1) how to setup, compile, run,<br/> 
-and debug the struts-example web application that is bundled with the distribution.<br/>
-
-Next, I will modify the code to pull some data from a MySql database using the popular <br/>
-relational mapping tool OJB. (This is actually quite simple)
-
-</section>
-
-<section name="Let's get started">
-Before we begin, you will need to create a directory somewhere to store your project.<br/>
-I typically use C:\personal\development\Projects\(some project)<br/>
-Once that's done, extract the struts-example.war to that directory <br/>
-(using your favorite zip utility)<br/>
-<br/>
-Delete the META-INF folder because this will be created during the build/jar/war process.<br/>
-            
-Add a build.xml file to the project root.  I use something like this:
-
-  <pre>
-  
-  &lt;project name="Struts Example" default="main" basedir="."&gt;
-  
-    &lt;!--  This is a basic build script, only the minimums here --&gt;
-    
-    &lt;!-- Tell ant to use my environment variables --&gt;
-    &lt;property environment="env"/&gt;
-  
-    &lt;property file="./build.properties"/&gt;
-  
-      &lt;property name="build.compiler"     value="modern"/&gt;
-      &lt;property name="build.dir"          value="./WEB-INF/classes" /&gt;
-      &lt;property name="src.dir"            value="./WEB-INF/src"/&gt;
-    &lt;property name="servlet.jar"        value="/Apache_Home/jakarta-servletapi-4/lib/servlet.jar"/&gt;
-      &lt;property name="war.file"              value="struts-example"/&gt;
-      &lt;property name="war.file.name"      value="${war.file}.war"/&gt;
-      &lt;property name="tomcat.home"       value="${env.CATALINA_HOME}"/&gt;
-      &lt;property name="deploy.dir"         value="${tomcat.home}/webapps"/&gt;
-  
-    &lt;path id="project.class.path"&gt;
-        &lt;fileset dir="./WEB-INF/lib/"&gt;
-            &lt;include name="**/*.jar"/&gt;
-        &lt;/fileset&gt;
-        &lt;pathelement path="${src.dir}"/&gt;
-        &lt;pathelement path="${servlet.jar}"/&gt;
-    &lt;/path&gt;
-  
-      &lt;target name="clean"&gt;
-          &lt;delete dir="${build.dir}" includeEmptyDirs="true" /&gt;
-      &lt;/target&gt;
-  
-  
-      &lt;target name="prep"&gt;
-          &lt;mkdir dir="${build.dir}"/&gt;
-      &lt;/target&gt;
-  
-      &lt;target name="compile"&gt;
-        &lt;javac   srcdir="${src.dir}"
-                    destdir="${build.dir}"
-                    debug="on"
-                deprecation="on"&gt;
-          &lt;include name="**/*.java"/&gt;
-          &lt;classpath refid="project.class.path"/&gt;
-        &lt;/javac&gt;
-      &lt;/target&gt;
-  
-      &lt;target name="cleanWebApp"&gt;
-        &lt;delete file="${deploy.dir}/${war.file.name}" /&gt;
-          &lt;delete  dir="${deploy.dir}/${war.file}" includeEmptyDirs="true" /&gt;
-      &lt;/target&gt;
-  
-      &lt;target name="war"&gt;
-          &lt;war warfile="${war.file.name}" webxml="./WEB-INF/web.xml"&gt;
-                 &lt;fileset dir="./" includes="**/*.*" excludes="*.war, **/*.nbattrs, web.xml, **/WEB-INF/**/*.*, **/project-files/**/*.*"/&gt;
-                 &lt;webinf  dir="./WEB-INF"    includes="**/*" excludes="web.xml, **/*.jar, **/*.class"/&gt;
-                 &lt;lib     dir="./WEB-INF/lib"/&gt;
-                 &lt;classes dir="${build.dir}" includes="**/*.properties" /&gt;
-          &lt;/war&gt;
-      &lt;/target&gt;
-  
-      &lt;target name="deploy"&gt;
-          &lt;copy todir="${deploy.dir}"&gt;
-            &lt;fileset dir="./" includes="${war.file.name}"/&gt;
-          &lt;/copy&gt;
-      &lt;/target&gt;
- 
-    &lt;target name="main" depends="clean, prep, cleanWebApp, compile, war"/&gt;
-  
-  &lt;/project&gt;
-  
-  </pre>
-
-    <ol>
-        <li>
-            Create a new project.<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style01.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            New Java Project<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style02.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            Browse for the folder you created for your project.<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style03.jpg"></img><br/><br/><br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style04.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            Eclipse will detect your source folders from any subdirectories under your project.<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style05.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            In our case, this is where the src folder was placed.<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style06.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            Default standard libs are automatically added depending on the type of project.<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style07.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            Add the existing web app jars.<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style08.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            Now we need to add a few jars from the file system.<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style09.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            We always need this one (servlet.jar)<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style10.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            Ahhhh...everything looks ok for now.  You can always go back and modify these settings <br/>
-            later.<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style11.jpg"></img><br/><br/><br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style12.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            When everything settles down, you should see something like this (of course, it might 
-            look different depending on your installation/customization):<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style13.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            Compilation warnings and errors are detected immediately.  In this screenshot, I drill down<br/>
-            into the source folder, package, file, class, and double click on the method....which <br/>
-            brings up the source editor.  I hover the mouse over the offending warning to see <br/>
-            a description of what's wrong.<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style14.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            I changed ApplicationConfig to ModuleConfig, then saved and now I see new errors.<br/>
-            You can right click and import ModuleConfig right from the error.<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style15.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            A quick look at the import section.<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style18.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            Right click, Source, Organize Imports<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style20.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            Ahhhh...better<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style21.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            From the Package Explorer, right click your build.xml and run Ant:<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style22.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            Is this cool or what?<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style23.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            Oh crap!<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style24.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            Quick look at what jars are being used to process my build.<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style26.jpg"></img><br/><br/><br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style25.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            I simply removed all the existing jars from the IDE's Ant configuration and<br/>
-            added all from my own installation.<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style27.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            Can't forget that last one<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style28.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            Everything went ok (for me)<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style30.jpg"></img><br/><br/><br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style29.jpg"></img><br/><br/><br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style31.jpg"></img><br/><br/><br/>
-        </li>
-        <li>
-            Time to test-drive<br/>
-            <img alt="" src="../images/how-to/eclipse/developing-eclipse-style32.jpg"></img><br/><br/><br/>
-        </li>
-    </ol>
-
-</section>
-
-
-
-</body></document>
diff --git a/build-legacy/core/xdocs/faqs/helping.xml b/build-legacy/core/xdocs/faqs/helping.xml
deleted file mode 100644
index 9cfd307..0000000
--- a/build-legacy/core/xdocs/faqs/helping.xml
+++ /dev/null
@@ -1,424 +0,0 @@
-<?xml version="1.0"?>
-<document url="./helping.xml">
-<properties>
-<title>How to Help FAQ - Apache Struts</title>
-</properties>
-
-<body>
-
-<section href="faq" name="How to Help FAQ"/>
-
-<section href="contents" name="Index">
-
-<p>
-
-"You can't always get what you want / 
-but if you try real hard / 
-you might just find /
-that you get what you need". 
-<br/>
-[Rolling Stones]
-</p>
-
-<ul>
-    <li><a href="#corp">
-    What can my company do to help support Struts?
-    </a></li>
-    <li><a href="#bugs">
-    How can I report bugs or make feature requests?
-    </a></li>
-    <li><a href="#contribute">
-    How can I contribute to Struts source code?
-    </a></li>
-    <li><a href="#documentation">
-    How can I contribute to the documentation?
-    </a></li>
-    <li><a href="#release">
-    So when is the next release coming out?
-    </a></li>
-    <li><a href="#release_help">
-    How can I help the next release along?
-    </a></li>
-</ul>
-
-</section>
-
-<section href="corp" name="What can my company do to help support Struts?">
-
-<p>
-Struts is an all volunteer product. 
-Our customers are the volunteers who donate their time and energy to 
-supporting the product. 
-If you want to support Struts, and become one of our customers, 
-then you need to 
-<a href="http://jakarta.apache.org/site/getinvolved.html">get involved</a>
-and become a volunteer.
-</p>
-
-<p>
-Our challenge to any team using Struts is to donate the time of one team member 
-one afternoon a week (or more if you can spare the resources). 
-Have your team member browse 
-<a href="http://jakarta.apache.org/site/bugs.html">Bugzilla</a> for any issues 
-without a patch or unit test, 
-and add the patch or test.
-If the patch is written on company time, 
-and you want to give your company an author's credit, that's fine with us.
-</p>
-
-<p>
-If Struts doesn't do what <em>you</em> want, it's up to <strong>you</strong> to step up 
-and propose the patch.
-If Struts doesn't ship as often as you would like, it's up to you to step up 
-with the tests and fixes that get a release out the door.
-</p>
-
-<p>
-If Struts does do what you want, help others become involved by turning your 
-war stories into FAQs and how-tos that we can make part of the 
-<a href="#documentation">documentation</a>. 
-The mailing list is very active and trundling through the archives is no 
-picnic. 
-We can always use people who can reduce the best threads to coherent articles 
-that we can put in the User Guide.
-</p>
-
-<p>
-Some Apache products like you to submit your patch to the mailing list. 
-We would prefer that you create a 
-<a href="http://jakarta.apache.org/site/bugs.html">Bugzilla</a>
-Bugzilla report and then attach the patch to the report. 
-To do this, you must first create the report, 
-and then modify the report to add your patch. 
-We realize this is a bit clumsy, but it keeps us from losing things, 
-and helps to ensure that your patch will be attended.
-</p>
-
-<p>
-We don't sell Struts for money, but anyone who wants to be our customer 
-can pay us back by donating the time and energy that money represents.
-</p>
-
-</section>
-
-<section href="bugs" name="How can I report bugs or make feature requests?">
-
-<p>
-You can research and report outstanding fixes and feature requests using
-<a href="http://jakarta.apache.org/site/bugs.html">Jakarta Bugzilla</a>. 
-If you are unsure if this is an actual problem, feel free to bring it up the 
-list first. 
-But to be sure that an issue is resolved, read 
-<a href="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html">
-How to Report Bugs Effectively</a> and report it to
-<a href="http://jakarta.apache.org/site/bugs.html"><strong>Bugzilla</strong></a>.
-</p>
-
-<p>
-Feature requests are also maintained in the Bugzilla database. 
-</p>
-
-<p>
-<a href="http://jakarta.apache.org/site/source.html">Patches</a> are always
-welcome. 
-If you can't write a patch to fix your bug, a <a href="kickstart.html#tests">unit test</a>
-that demonstrates the problem is also welcome.
-(And, of course, unit tests that prove your patch works are equally welcome.)
-</p>
-
-<p>
-If your bug or feature is already in Bugzilla, <strong>you can vote</strong>
-for the issue and call more attention to it. 
-Each user can cast up to six votes at a time.
-</p>
-
-<p>
-If there is a patch attached to the issue, you can also try applying
-to your local copy of Struts, and report whether it worked for you.
-Feedback from developers regarding a proposed patch is really quite
-helpful. 
-Don't hesitate to "me too" if you've tried the patch yourself.
-</p>
-
-</section>
-
-<section href="contribute" 
-    name="How can I contribute to the Struts source code?">
-
-<p>
-Struts is distributed by <a href="http://apache.org/">
-The Apache Software Foundation</a>.
-These are the same people who distribute the Apache Web server. 
-Like all ASF projects, Struts is managed as a &quot;meritocracy&quot;, 
-where everyone's contribution is welcome. 
-Users can help other users the 
-<a href="http://jakarta.apache.org/site/mail.html">mailing lists</a>,
-<a href="http://jakarta.apache.org/site/bugs.html">report bugs</a>, and
-<a href="http://jakarta.apache.org/site/bugs.html">request new features</a>. 
-Developers can
-contribute patches, new code, and documentation. 
-The most active Developers may become
-<a href="http://jakarta.apache.org/site/roles.html">Committers</a>, 
-who make the actual decisions about Strut's codebase.
-</p>
-
-<p>
-If you are new to open source development, see the
-<a href="http://jakarta.apache.org/site/getinvolved.html">
-How to get involved</a> page the main Jakarta site.
-</p>
-
-<p>
-A very good place to start is by <strong>reviewing the list of open issues</strong> and 
-pending feature requests (<a href="#bugs">Bugzilla</a>). 
-If you see an issue that needs a patch you can write, 
-feel free to annex your patch. 
-If you seen an issue that needs a unit test to prove its fixed, 
-feel free to annex your test case. 
-If someone has posted a patch to an issue you'd like to see resolved, 
-apply the patch to your local development copy of Struts. 
-Then let us know if it works for you, and if it does, 
-cast your vote for the issue and its patch.
-</p>
-
-<p>
-If none of the pending issues scratch your itch, 
-another good place to start is by <strong>contributing unit tests</strong> 
-for existing features (even those that still work).
-</p>
-
-<p>
-Our current approach to <a href="kickstart.html#tests">unit testing</a>
-works fairly well for exercising most method-level stuff, but does
-not really address situations of dynamic behavior -- most particularly the
-execution of custom tags for Struts.  
-You can try to fake what a JSP container does, but a much more reliable 
-testing regime would actually execute the tag in a real container.  
-For that purpose, we use the 
-<a href="http://jakarta.apache.org/cactus">Cactus</a> testing framework, 
-which re-executes the JUnit-based tests as well to make sure that nothing 
-bad happens when you switch environments.  
-Right now, there are very few dynamic tests; ideally, we will have tests 
-for every tag, that cover every reasonable combination of tag attribute 
-values (yes, that's a tall order -- the totally lines of test source code 
-will undoubtedly exceed the totally lines of code in the framework itself 
-if we achieve this).
-</p>
-
-</section>
-
-<section href="documentation" 
-    name="How can I contribute to the documentation?">
-
-<p>
-The only difference is that the documentation is kept in XML rather than Java
-source code. 
-Otherwise, all the same precepts and procedures pertain.
-</p>
-
-<p>
-The trick to getting started is to download the nightly build and try building 
-the documentation WAR. 
-Then try adding your own XML page under doc/ to see if the build succeeds. 
-If it doesn't, it will report where the bad element is, much like it reports 
-where a bad programming expression is. 
-If it does, then your page should be available under target/documentation/.
-</p>
-
-<p>
-The website portion of the package is the root directory of doc/. 
-The User Guide portion is under the userGuide/ folder. 
-If the material you'd to add doesn't fit right in with what's there, 
-the best thing may to start a new section after the existing material. 
-The navigation column can be found in the project.xml document.
-</p>
-
-<p>
-To display markup, substitute &amp;lt; for &lt;. 
-The unmatched trailing > will be ignored. 
-Since it is XML, all elements also need to closed. 
-So elements like &lt;br> and &lt;hr> need to set out as &lt;br/> and &lt;hr/>.
-</p>
-
-<p>
-Also watch for the length of code samples - 
-these do not wrap. 
-If a line is too long, it will force the right margin out past the edge of the 
-screen or printed page.
-</p>
-
-<p>
-The stylesheets we use are adequate, but could certainly be improved by an XML
-guru, if you happen to one of those.
-</p>
-
-</section>
-
-<section href="release" name="So when is the next release coming out?">
-
-<p>
-Here is the truth regarding releases:
-</p>
-
-<p>
-Jakarta products are released on the basis of merit, and ~not~ according
-to a strict timetable. 
-The volunteers devote whatever time they can to work on the product. 
-But all volunteers have real jobs and real lives, that do take precedence. 
-Since Struts does not have paid personnel working on the project, 
-we simply cannot make date-oriented commitments.
-</p>
-
-<p>
-All Jakarta products must circulate a public beta before release. 
-If a beta is not in circulation, 
-then it's a good bet that a release is not forthcoming any time soon. 
-Products sometimes go through several betas before final release. 
-So if this is beta 1, then it still may not be released any time soon.
-</p>
-
-<p>
-The bottom line is that Jakarta takes releases very seriously. 
-We do not compromise the quality of our software by watching the calendar 
-(and then ship something ready or not). 
-A release is ready when it is ready.
-</p>
-
-<p>
-That may sound flip, but it ~is~ the truth. 
-The delivery of production-quality, leading-edge software is not something 
-anyone can prognosticate. 
-If anyone tries, they are lying to you. 
-That, we won't do ;-)
-</p>
-
-<p>
-What we ~will~ do is release all of our development software as soon as it is 
-developed. 
-This way you can judge for yourself how quickly the development is proceeding, 
-and whether what is being developed will meet your needs. 
-If you need a feature right now, you can use the nightly build, or roll your 
-own patch. 
-There are no private Subversion repositories or private development lists. 
-What you see is what we got. 
-If you are following the DEV list, then you know everything the developers 
-know. 
-Really, you do.
-</p>
-
-<p>
-<em>So, what do you tell your team?</em> 
-If you can ship your application based on the nightly build of your choice, 
-then consider that an option. 
-You can still ship yours, even if we don't ship ours, 
-and you will have access to all the latest patches or enhancements. 
-(Just like we were working down the hall.) 
-If you can only ship your application based on a release build of Struts, 
-then you should base your development on the release build of Struts,
-and keep an eye on what is coming down the pipeline. 
-This way you are at least forewarned and forearmed.
-</p>
-
-</section>
-
-<section href="release_help" 
-    name="What can I do to help the next release along?">
-
-<ul>
-
-<li>
-  Most importantly, <strong>download the latest beta</strong> or release-candidate and 
-  test it against your own applications. 
-  Report any and all issues or suspected issues to 
-  <a href="http://jakarta.apache.org/site/bugs.html">Bugzilla</a>. 
-  The sooner we resolve any problems, the fewer betas or release candidates 
-  we will have to distribute before we are done. 
-  (How do we know when we're done? -- When we run out of issues =:o) 
-  The sooner we find them, the sooner we are done.)
-</li>
-
-<li>
-  <strong>Contribute <a href="kickstart.html#tests">unit tests</a></strong>. 
-  The closer we get to a release, the more we worry about breaking something. 
-  The more tests we have, the more confident we can be when applying patches. 
-  Tests that prove that a pending issue is actually a bug are the most 
-  welcome ones. 
-  But we are eager for any and all tests for any and all features, 
-  even those that still work =:0).
-</li>
-
-<li>
-  <strong>Review the list of issues</strong> at <a href="#bugs">Bugzilla</a>. 
-  If there are any to which you can respond, please do. 
-  If there any patches posted, feel free to test them your system, 
-  report the results, and cast your vote if they work.
-</li>
-
-<li>
-  <strong>Confirm an issue's category and status</strong>. 
-  Newbies often post feature requests or help-desk questions as "bugs". 
-  This bloats the list of fixes we (apparently) need to apply before the next 
-  beta, making it hard to see the forest for the trees. 
-  If an issue doesn't seem to be categorized correctly, exercise your best 
-  judgment and change it.
-  If one ticket seems like a duplicate of another, go ahead and enter the 
-  change. 
-  Every modification to the ticket is echoed to the DEV list and 
-  automatically subjected to peer review. 
-  Err on the side of doing.
-</li>
-
-<li>
-  Use Bugzilla to <strong>vote for issues</strong> you feel should be handled
-  first. 
-  If an issue on your ballot doesn't include a patch, feel free to try coding 
-  one yourself. 
-  (At Jakarta, patches are the only votes that truly count.) 
-  Well over <a href="../volunteers.html">thirty developers</a> have contributed 
-  code or documentation to the product. 
-  You can too =:0)
-</li>
-
-<li>
-  <strong>Answer questions on the user list.</strong> 
-  The Committers only have a limited amount of time to volunteer. 
-  If Developers are supporting each other on the lists, 
-  the Committers have more time to spend on the next release.
-</li>
-
-</ul>
-
-</section>
-
-<section href="decisions" 
-    name="Who makes the final decisions regarding Struts">
-
-<p>
-The management of the Jakarta site, and the Struts product, is based on 
-principles and practices used by creators of the Apache HTTPD server. 
-Struts follows the 
-<a href="http://jakarta.apache.org/site/guidelines.html">Project Guidelines</a>
-on the main Jakarta site.
-</p>
-
-<p>If you are new to this style of development, 
-the Apache HTTPD Dev list is available in a 
-<a href="mailto:dev-digest-subscribe@httpd.apache.org">digest form</a>. 
-Even if you are not working on the HTTPD server yourself, 
-it is interesting to watch how the HTTPD team works on the server.
-</p>
-
-<p>
-The Struts project has its own <a href="../using.html#Lists">Dev list</a>, 
-where all of the decisions regarding Struts are made. 
-Most development takes place via
-<a href="http://jakarta.apache.org/site/proposal.html#decisions/voting/items">
-Lazy Consensus</a>.
-Committers post most changes to the product unilaterally, using their own best 
-judgment, and only discuss or vote upon controversial matters. 
-Another Committer can veto any change in an unreleased product with cause.
-</p>
-
-</section>
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/faqs/index.xml b/build-legacy/core/xdocs/faqs/index.xml
deleted file mode 100644
index b000762..0000000
--- a/build-legacy/core/xdocs/faqs/index.xml
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<document url="./index.xml" authors="false">
-
-<properties>
-    <title>FAQs and Howtos - Apache Struts</title>
-</properties>
-
-<body>
-
-<section name="Struts FAQs">
-
- <ul>
-
-    <li>
-    <a href="kickstart.html">Kickstart FAQ</a> (read me first)
-    </li>
-
-    <li>
-    <a href="newbie.html">Newbie FAQ</a>
-    </li>
-
-    <li>
-    <a href="helping.html">How to Help FAQ</a>
-    </li>
-
-     <li>
-     <a href="works.html">How does Struts work?</a>
-     </li>
-
- </ul>
-
-</section>
-
-<section name="Howto Guides">
-
- <ul>
-
-    <li>
-    <a href="actionForm.html">Building an Action Form</a>
-    </li>
-    
-    <li>
-    <a href="apps.html">Building Applications</a>
-    </li>
-    
-    <li>
-    <a href="database.html">Accessing a Database</a>
-    </li>
-
-    <li>
-    <a href="indexedprops.html">Indexed Properties, Mapped Properties, and Indexed Tags</a>
-    </li>
-
-    <li>
-    <a href="ssl.html">Using the SSL protocol</a>
-    </li>
-    
-    <li>
-    <a href="struts-el.html">Struts EL Extension</a>
-    </li>
-
- </ul>
-
-</section>
-
-<section name="IDE Guides">
-
- <ul>
-
-    <li>
-    <a href="eclipse.html">Installing the Eclipse IDE</a>
-    </li>
-
-    <li>
-    <a href="netbeans.html">Installing the Netbeans IDE</a>
-    </li>
-    
- </ul>
-
-</section>
-
-<section name="External FAQs and Howtos">
-
-<ul>
-   <li>
-   <a href="http://wiki.apache.org/struts">Apache Struts Wiki</a>
-   </li>
-</ul>
-
- <ul>
-    <li>
-    <a href="http://www.jguru.com/faq/home.jsp?topic=Struts">jGuru FAQ</a>
-    </li>
- </ul>
-
-<ul>
-   <li>
-   <a href="http://www.husted.com/struts/tips">Struts Tips</a> by Ted Husted
-   </li>
-</ul>
-
- <ul>
-    <li>
-    <a href="http://strutstestcase.sourceforge.net">Unit Testing with Struts TestCase</a> by Deryl Seale
-    </li>
- </ul>
-
-<ul>
-   <li>
-   <a href="http://tinyurl.com/6jnv">Struts Validator: Validating Two Fields Match</a> by Matt Raible
-   </li>
-</ul>
-
-</section>
-
-</body></document>
diff --git a/build-legacy/core/xdocs/faqs/indexedprops.xml b/build-legacy/core/xdocs/faqs/indexedprops.xml
deleted file mode 100644
index 5c5f0fb..0000000
--- a/build-legacy/core/xdocs/faqs/indexedprops.xml
+++ /dev/null
@@ -1,380 +0,0 @@
-<?xml version="1.0"?>
-
-<document url="./indexedprops.xml">
- <properties>
-  <title>Indexed Properties, Mapped Properties, and Indexed Tags</title>
- </properties>
- <body>
-  <section name="Indexed Properties, Mapped Properties, and Indexed Tags"/>
-   <section href="introduction" name="Introduction">
-    <p>
-     The JSP specification discusses using "indexed properties" in reference to
-     the &lt;jsp:setProperty&gt; tag.  However, none of the support provided in
-     the base JSP specification actually deals with the "indexing" part.  In
-     truth, it allows for setting "array properties", but it doesn't do much
-     for setting or even getting the actual values in each entry of the array,
-     except with explicit JSP expressions (&lt;%=  %&gt;).
-    </p>
-    <p>
-     The Struts framework provides much more powerful features related to
-     indexed properties, but in truth most of the heavy lifting is not even in
-     the Struts framework, but in the Jakarta Commons Beanutils package.  This
-     package is used by Struts to provide this functionality.  You can see the
-     javadoc documentation for the Beanutils package at <a
-     href="http://jakarta.apache.org/commons/beanutils/api/index.html">http://jakarta.apache.org/commons/beanutils/api/index.html</a>.
-     The information particularly related to indexed properties is in the
-     package description for the org.apache.commons.beanutils package.  This
-     article mirrors that information, but focuses on how this functionality is
-     mapped to JSP tags using the Struts tag library.
-    </p>
-    <p>
-     The support for indexed properties also includes "mapped properties",
-     "nested properties" and "indexed tags", which are all related but slightly
-     different.  The latter is exclusive to Struts, but the first two are also
-     provided by the Beanutils package.  This article will cover all three of
-     these topics.
-    </p>
-   </section>
-   <section href="indexedprops" name="Indexed Properties">
-    <p>
-     The simplest demonstration of using indexed properties in Struts can be
-     shown with the following simple bean and JSP page:
-    </p>
-     <pre>
-package org.apache.struts.webapp.exercise;
-import org.apache.struts.action.ActionForm;
-public class StringBean extends ActionForm {
-    private String strAry[] = { "String 0", "String 1", "String 2", "String 3", "String 4" };
-
-    public String getStringIndexed(int index) { 
-        return strAry[index]; 
-    }
-    
-    public void setStringIndexed(int index, String value) { 
-        strAry[index] = value; 
-    }
-}</pre>
-    <p>
-     First note the two methods in the StringBean class, "getStringIndexed()"
-     and "setStringIndexed()".  Note that the "get" method takes an "int" and
-     the "set" method takes an "int" and "String".  The Beanutils package and
-     Struts recognizes this arrangement of signatures as an "indexed property",
-     in this case with the property name "stringIndexed".
-    </p>
-    <pre>
-&lt;!-- indexedtest.jsp --&gt;
-&lt;%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %&gt;
-&lt;jsp:useBean id="bean" class="org.apache.struts.webapp.exercise.StringBean"/&gt;
-&lt;bean:write name="bean" property="stringIndexed[1]"/&gt;</pre>
-    <p>
-     Note the property value of "stringIndexed[1]".  This is intended to
-     reference the indexed property "stringIndexed", and the 1st (zero-based)
-     entry of whatever array or collection which the indexed property
-     represents.
-    </p>
-    <p>
-     As you might be able to guess, when this page is executed, it will print
-     just the string "String 1", which is the corresponding array entry at that
-     index value.
-    </p>
-    <p>
-     This is a simple demonstration of what indexed properties can provide.
-    </p>
-   </section>
-   <section href="listbackedprops" name="List-Backed Indexed Properties">
-    <p>
-     A variation on indexed properties are properties whose type is
-     <code>java.util.List</code> or a subclass.
-    </p>
-    <p>
-     For instance, the first example using "StringBean.java" and
-     "indexedtest.jsp" could use a modified "StringBean.java" class, like this:
-    </p>
-    <pre>
-package org.apache.struts.webapp.exercise;
-import org.apache.struts.action.ActionForm;
-public class StringBean2 extends ActionForm {
-    private String strAry[] = { "String 0", "String 1", "String 2", "String 3", "String 4" };
-
-    public java.util.List getStringIndexed(int index) { 
-        return java.util.Arrays.asList(strAry);
-    }
-}</pre>
-    <p>
-     Note the different implementation of the "getStringIndexed()" method,
-     returning a List instead of a String.  If this bean class is substituted
-     with the original "indexedtest.jsp", the result will be identical.
-    </p>
-   </section>
-   <section href="mappedprops" name="Mapped Properties">
-    <p>
-     The idea of "mapped properties" as opposed to "indexed properties" is that
-     the property represents a "map" type, as opposed to an array or collection
-     type.  The signature of the "get" and "set" methods for a mapped property
-     are different from the same methods for an indexed property.  In
-     particular, instead of an "int" for the index, there is a "String" for the
-     key.
-    </p>
-    <p>
-     The previous example for indexed properties can be changed to the
-     following to demonstrate mapped properties:
-    </p>
-    <pre>
-package org.apache.struts.webapp.exercise;
-import java.util.HashMap;
-import org.apache.struts.action.ActionForm;
-public class StringBean3 extends ActionForm {
-    private String strAry[] = { "String 0", "String 1", "String 2", "String 3", "String 4" };
-    
-    private HashMap map = new HashMap();
-
-    public StringBean() {
-        map.put("zero", strAry[0]);
-        map.put("one", strAry[1]);
-        map.put("two", strAry[2]);
-        map.put("three", strAry[3]);
-        map.put("four", strAry[4]);
-    }
-
-    public Object getStringMapped(String key) { 
-        return map.get(key);
-    }
-    
-    public void setStringMapped(String key, Object value) { 
-        map.put(key, value); 
-    }
-}</pre>
-    <p>
-     Note the "get" and "set" methods to represent the mapped property.
-    </p>
-    <pre>
-&lt;!-- indexedtest3.jsp --&gt;
-&lt;%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %&gt;
-&lt;jsp:useBean id="bean" class="org.apache.struts.webapp.exercise.StringBean"/&gt;
-&lt;bean:write name="bean" property="stringMapped(two)"/&gt;</pre>
-    <p>
-     Note the property value of "stringMapped(two)".  This will reference the
-     mapped property "stringMapped", using the key value of "two".
-    </p>
-    <p>
-     When this page is executed, it will print just the string "String 2",
-     which is the string stored in the HashMap with the key "two".
-    </p>
-   </section>
-   <section href="nestedprops" name="Nested Properties">
-    <p>
-     Nested properties allows you to combine normal properties, indexed
-     properties, and mapped properties in a hierarchical fashion. A property
-     value of a bean does not have to be a primitive like "int" or "String.
-     The property value can be a bean with its own properties.  The following
-     example demonstrates this.
-    </p>
-    <pre>
-package org.apache.struts.webapp.exercise;
-import org.apache.struts.util.LabelValueBean;
-import org.apache.struts.action.ActionForm;
-public class StringBean4 extends ActionForm {
-    private LabelValueBean[] lvbeans;
-    
-    public StringBean() {
-        lvbeans   = new LabelValueBean[5];
-        lvbeans[0]   = new LabelValueBean("Zero", 0+"");
-        lvbeans[1]   = new LabelValueBean("One", 1+"");
-        lvbeans[2]   = new LabelValueBean("Two", 2+"");
-        lvbeans[3]   = new LabelValueBean("Three", 3+"");
-        lvbeans[4]   = new LabelValueBean("Four", 4+"");
-    }
-
-    public  LabelValueBean getLabelValue(int index) { 
-        return lvbeans[index];
-    }
-}</pre>
-    <p>
-     First note the use of the class "LabelValueBean".  This is a simple class
-     provided in the Struts library which represents a pair of two Strings, a
-     "label" and a "value".  It itself is a bean, providing these two
-     properties with standard getters and setter methods.
-    </p>
-    <p>
-     Then, see the "getLabelValue()" method, representing the indexed property
-     "labelValue".  This class doesn't show a "setter" method. If you only ever
-     provide read-only access a property, then it is not necessary to provide a
-     setter method.
-    </p>
-    <pre>
-&lt;!-- indexedtest4.jsp --&gt;
-&lt;%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %&gt;
-&lt;jsp:useBean id="bean" class="org.apache.struts.webapp.exercise.StringBean"/&gt;
-&lt;bean:write name="bean" property="labelValue[1].label"/&gt;</pre>
-    <p>
-     Note here the "nested" property reference. It is first using the indexed
-     property "labelValue" and then the "normal" property of the LabelValueBean
-     to get the final result.  When this page is executed, it will print the
-     string "One", representing the "label" property of the 1st entry of the
-     array represented by the "labelValue" indexed property.
-    </p>
-   </section>
-   <section href="dynamicindexes" name="Dynamic Indexes for Indexed Properties">
-    <p>
-     When people started using indexed properties in Struts tags, I'm
-     reasonably certain they started out with a high level of enthusiasm, but
-     were somewhat frustrated when they discovered reality.  The reality is
-     that the "index" for indexed properties often needs to be a dynamic value,
-     usually from the "indexId" counter in the "&lt;logic:iterate&gt;" tag.
-    </p>
-    <p>
-     For instance, the following example JSP page using the same "StringBean"
-     bean class uses a dynamic value for the index:
-    </p>
-    <pre>
-&lt;!-- indexedtest5.jsp --&gt;
-&lt;%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %&gt;
-&lt;%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %&gt;
-&lt;html&gt;
- &lt;body&gt;
-  &lt;html:form action="indexedtest5.do"&gt;
-   &lt;logic:iterate name="stringbean" property="stringArray" id="foo"
-                  indexId="ctr"&gt;
-    &lt;html:text name="stringbean"
-               property='&lt;%= "labelValue[" + ctr + "].label" %&gt;' /&gt;
-   &lt;/logic:iterate&gt;
-   &lt;html:submit property="submitValue"&gt;Submit Changes&lt;/html:submit&gt;
-  &lt;/html:form&gt;
- &lt;/body&gt;
-&lt;/html&gt;</pre>
-    <p>
-     The JSP expression syntax for the <code>property</code> attribute is somewhat 
-     messy and easy to get wrong so it's something we want to avoid. One
-     way to make this a little cleaner is to use "indexed tags", but there's a
-     wrinkle to this approach.  We'll first cover the details of indexed tags,
-     then we'll talk about the wrinkle, and then finally an alternative to
-     indexed tags.
-    </p>
-   </section>
-   <section href="indexedtags" name="Indexed Tags">
-    <p>
-     The "indexed tags" feature is provided by several tags that have an
-     optional boolean "indexed" attribute.  This is only legal when inside a
-     "&lt;logic:iterate&gt;" tag.  When the "indexed" attribute is true, then
-     the tag will incorporate the loop index into the resulting HTML component.
-    </p>
-    <p>
-     The several tags that support the "indexed" attribute can be broken into
-     three groups, split by what they do to incorporate the loop index into the
-     resulting HTML component.
-    </p>
-    <table>
-     <thead>
-     <tr>
-      <th>Group 1</th><th>Group 2</th><th>Group 3</th>
-     </tr>
-     </thead>
-     <tr><td>checkbox</td><td>button</td><td>link</td></tr>
-     <tr><td>file</td><td>image</td><td>&#160;</td></tr>
-     <tr><td>hidden</td><td>submit</td><td>&#160;</td></tr>
-     <tr><td>password</td><td>&#160;</td><td>&#160;</td></tr>
-     <tr><td>radio</td><td>&#160;</td><td>&#160;</td></tr>
-     <tr><td>select</td><td>&#160;</td><td>&#160;</td></tr>
-     <tr><td>text</td><td>&#160;</td><td>&#160;</td></tr>
-     <tr><td>textarea</td><td>&#160;</td><td>&#160;</td></tr>
-    </table>
-    <p>
-     In Group 1, all of these tags will generate an HTML "name" attribute of
-     "name[nn].property".  The value of each tag will also be initialized by
-     the getter method corresponding to that property specification.
-    </p>
-    <p>
-     In Group 2, these tags will generate an HTML "name" attribute of
-     "property[nn]".  These three tags don't have "name" attributes, so since
-     it wouldn't make sense to use "[nn].property" (no name value), the array
-     indexes are attached to the property instead.
-    </p>
-    <p>
-     The "link" tag in Group 3 isn't anything like any of the others.  The base
-     description of the "link" tag doesn't even mention how this works, but the
-     description of the "indexed" tag describes how it works somewhat (although
-     it doesn't specifically say that it uses the name "index" if "indexId"
-     isn't set).  In short, the "indexed" behavior of this tag is to add a URL
-     query parameter, where the parameter name is "index" or the value of the
-     "indexId" attribute, and the parameter value is the current index value.
-     Outside of this, the "indexed" behavior of the "link" tag needs no more
-     explanation, in contrast to the tags in the first two groups.
-    </p>
-   </section>
-   <section href="wrinkle" name="The Wrinkle with Indexed Tags">
-    <p>
-     The problem with using the "indexed" attribute to automatically attach the
-     loop index is that it gives you less control over how the loop index is
-     used.  For instance, in our earlier examples using the "&lt;html:text&gt;"
-     tag, we attached the loop index to the end of the "property" attribute
-     value, which was "labelValue" in our example.  This results in a "name"
-     attribute value in the HTML component of "labelValue[nn]".  This maps to a
-     "labelValue" indexed property on the "stringbean" bean instance.
-    </p>
-    <p>
-     However, if we instead add the "indexed" attribute, and remove the manual
-     attachment of the loop index, then the resulting "name" attribute in the
-     HTML component ends up as "stringbean[nn].labelValue".  This will not work
-     as is.  It can be changed to work, however.  From the previous example
-     (indexedtest5.jsp), the "&lt;html:text&gt;" component would change the
-     "name" attribute from "stringbean" to "labelValue", and the "property"
-     attribute to "label".  With the "indexed" attribute, that ends up with a
-     "name" attribute value of "labelValue[nn].label".
-    </p>
-    <p>
-     So, it's very likely you could use indexed tags to support your needs for
-     indexed properties, but you have to understand the resulting structure of
-     your "name" attribute in order to understand what other attribute values
-     you need.
-    </p>
-   </section>
-   <section href="strutsel" name="Using Struts-EL To Avoid Some Of The Pain">
-    <p>
-     The "indexed tags" feature was created partially because of the awkward
-     process for encoding the loop index into the property attribute, using a
-     JSP expression.  The creation of the <a href="http://java.sun.com/products/jsp/jstl/">JSTL</a> 
-     eventually resulted in a solution that makes that process less painful.
-    </p>
-    <p>
-     The JSTL uses a string-based expression language to evaluate attribute
-     values, instead of using a run-time JSP expression.  The engine that
-     performs these evaluations is often called just "EL" (expression language)
-     for short.  After the JSTL was created, a derivative of the Struts tag
-     library called Struts-EL was created.  In short, this does everything that
-     the Struts tag library does, but it uses the JSTL EL engine to evaluate
-     attribute values.
-    </p>
-    <p>
-     If you use Struts-EL, you can get back some of the flexibility of encoding
-     your loop indices manually, but the resulting expressions will be a little
-     more readable, and thus maybe a little easier to maintain.
-    </p>
-    <p>
-     For instance, following this is a version of "indexedtest5.jsp" using
-     Struts-EL:
-    </p>
-    <pre>
-&lt;!-- indexedtest6.jsp --&gt;
-&lt;%@ taglib uri="/WEB-INF/struts-html-el.tld" prefix="html-el" %&gt;
-&lt;%@ taglib uri="/WEB-INF/struts-logic-el.tld" prefix="logic-el" %&gt;
-&lt;html&gt;
- &lt;body&gt;
-  &lt;html-el:form action="indexedtest6.do"&gt;
-   &lt;logic-el:iterate name="stringbean" property="stringArray" id="foo"
-                     indexId="ctr"&gt;
-    &lt;html-el:text name="stringbean"
-                  property="labelValue[${ctr}].label" /&gt;
-   &lt;/logic-el:iterate&gt;
-   &lt;html-el:submit property="submitValue"&gt;Submit Changes&lt;/html:submit&gt;
-  &lt;/html-el:form&gt;
- &lt;/body&gt;
-&lt;/html&gt;</pre>
-    <p>
-     The Struts-EL library is part of the Struts distribution, in the "contrib"
-     directory.  The one drawback to using Struts-EL is that it requires a web
-     container supporting the Servlet 2.3 specification.
-    </p>
-   </section>
- </body>
-</document>
-
diff --git a/build-legacy/core/xdocs/faqs/kickstart.xml b/build-legacy/core/xdocs/faqs/kickstart.xml
deleted file mode 100644
index 08f0639..0000000
--- a/build-legacy/core/xdocs/faqs/kickstart.xml
+++ /dev/null
@@ -1,356 +0,0 @@
-<?xml version="1.0"?>
-<document url="./kickstart.xml">
-<properties>
-<title>Kickstart FAQ - Apache Struts</title>
-</properties>
-<body>
-<section href="faq" name="Kickstart FAQ"/>
-
-<section href="contents" name="Index">
-
-<p>
-Here are answers to the usual getting-started questions. <strong>For an in-depth, searchable FAQ, visit our friends at <a href="http://www.jguru.com/faq/home.jsp?topic=Struts">JGuru</a>.</strong>
-</p>
-
-  <ul>
-    <li><a href="#why">Why do we need Struts?</a></li>
-    <li><a href="#how">How does Struts work?</a></li>
-    <li><a href="#compat">Is Struts compatible with other Java technologies?</a></li>
-    <li><a href="#who">Who wrote Struts?</a></li>
-    <li><a href="#struts">Why is it called Struts?</a></li>
-    <li><a href="#license">How is Struts licensed?</a></li>
-    <li><a href="#usage">Can Struts be used in a commercial application?</a></li>
-    <li><a href="#credits">Do I have to credit Struts on my own website?</a></li>
-  </ul><ul>
-    <li><a href="#where">Where can I get a copy of Struts?</a></li>
-    <li><a href="#install">How do I install Struts?</a></li>
-    <li><a href="#jar">When do I need the struts.jar on my classpath?</a></li>
-    <li><a href="#tests">Does Struts provide its own unit tests?</a></li>
-  </ul><ul>
-    <li><a href="#requests">If the framework doesn't do what I want, can I request that a feature be added?</a></li>
-    <li><a href="#help">Where can I get help with Struts?</a></li>
-    <li><a href="#support">Is commercial support available for Struts?</a></li>
-    <li><a href="#providers">Are there ISPs that will host my Struts application?</a></li>
-    <li><a href="#powered">What Web sites are already Powered by Struts?</a></li>
-  </ul><ul>
-    <li><a href="#turbine">What's the difference between Struts and Turbine?  What's the difference between Struts and Expresso?</a></li>
-    <li><a href="#taglibs">Why aren't the Struts tags maintained as part of the Jakarta Taglibs project?</a></li>
-    <li><a href="#xhtml">Are the Struts tags XHTML compliant?</a></li>
-    <li><a href="#jsf">What about JSTL and JavaServer Faces?</a></li>
-    <li><a href="#ide">Is there a particularly good IDE to use with Struts?</a></li>
- </ul><ul>
-    <li><a href="#digest">Is there a digest for the mailing list?</a></li>
-    <li><a href="#newsgroup">Is there a Struts Newsgroup?</a></li>
-    <li><a href="#mailbounce">Why didn't my posting show up on the user list?"</a></li>
-    <li><a href="#unsubscribe">How do I unsubscribe from the mailing list?</a></li>
-  </ul>    
-</section>
-
-<section href="why" name="Why do we need Struts?">
-<p>Java technologies give developers a serious boost when creating and maintaining applications to meet the demands of today's public Web sites and enterprise intranets. Struts combines Java Servlets, Java ServerPages, custom tags, and message resources into a unified framework. The end result is a cooperative, synergistic platform, suitable for development teams, independent developers, and everyone in between.</p>
-</section>
-
-<section href="how" name="How does Struts work?">
-<p>Java Servlets are designed to handle requests made by Web browsers. Java ServerPages are designed to create dynamic Web pages that can turn billboard sites into live applications. Struts uses a special Servlet as a switchboard to route requests from Web browsers to the appropriate ServerPage. This makes Web applications much easier to design, create, and maintain.</p>
-</section>
-
-<section href="compat" name="Is Struts compatible with other Java technologies?">
-<p>Yes. Struts is committed to supporting industry standards. Our lead developer is a member of <a href="http://java.sun.com/aboutJava/communityprocess/jsr/jsr_052_jsptaglib.html">JSR052</a>, Sun's Expert group for developing a standard library of custom JSP tags. A primary design criteria is that Struts must be compatible with Sun's J2EE platform for corporate enterprises. In fact, Struts really acts as an integrator of Java technologies, so that they can be used in the &quot;real world&quot;.</p>
-</section>
-
-<section href="who" name="Who wrote Struts?">
-<p>Struts was created by Craig R. McClanahan, and donated to The Apache Software Foundation in May 2000. Craig is the primary developer of both Struts and <a href="http://jakarta.apache.org/tomcat/index.html">Tomcat 4</a>, the basis for the official reference implementation for a servlet 2.3 and JSP 1.2 container. With stable releases of Struts and Tomcat 4 in circulation, Craig is now the Specification Lead for <a href="http://jcp.org/jsr/detail/127.jsp">JavaServer Faces (JSR-127)</a>, and is the Web Layer Architect for the Java2 Enterprise Edition (J2EE) platform as a whole.</p>
-<p>There are now many active committers to the Struts project, working cooperatively from around the globe. Other Java developers are invited to <a href="helping.html#contribute">contribute to the project</a>. Struts is an <a href="http://jakarta.apache.org/">Apache Jakarta</a>  project, with the common mission to &quot;provide commercial-quality server solutions based on the Java Platform that are developed in an open and cooperative fashion&quot;. All told, 17 individual developers and committers contributed to the Struts 1.0 codebase.</p>
-</section>
-
-<section href="struts" name="Why is it called Struts?">
-<p>It's a reference to struts in the architectural sense, a reminder of the nearly invisible pieces that hold up buildings, houses, and bridges.</p>
-</section>
-
-<section href="license" name="How is Struts licensed?">
-<p>Struts is copyrighted software available under a &quot;free-to-use-license&quot; by The Apache Software Foundation. The license appears at the head of every source code file. A reference copy of the license is available <a href="http://www.apache.org/LICENSE-1.1">here</a>.</p>
-</section>
-
-<section href="usage" name="Can Struts be used in a commercial product?">
-<p>Yes. The only requirements you must meet are those listed in the Apache Software Foundation license, which is included at the top of each source file and in the file LICENSE in the top-level directory of the distribution.</p>
-<p>In addition, <a href="helping.html#bugs">contributions of patches, improved code, new features,</a> or even just requests for features are also welcome.</p>
-</section>
-
-<section href="credits" name="Do I have to credit Struts on my own website?">
-<p>You need to credit Struts if you <strong>redistribute your own framework</strong> based on Struts
-for other people to use. (See the <a href="http://www.apache.org/LICENSE">Apache License</a> for details.)
-But you do <strong>not</strong> need to credit Struts just because your web application utilizes the framework.
-It's the same situation as using the Apache HTTPD server or Tomcat. Not required if its just running your web site.
-Required if you've used the source code to create your own server that you are redistributing to other people.</p>
-</section>
-
-<section href="where" name="Where can I get a copy of Struts?">
-<p>The best place to download Struts is at <a href="http://jakarta.apache.org/struts/">jakarta.apache.org/struts</a>. The nightly builds are very stable, and recommended as the best place to start today.</p>
-</section>
-
-<section href="install" name="How do I install Struts?">
-<p>To develop applications with Struts, you can usually just add the Struts JAR file
-to your Java development environment. You can then start using the Struts classes as
-part of your own application. A blank Struts application (in the
-<code>webapps</code> directory, open <code>struts-blank.war</code>)
-is provided, which you can just copy to get a quick-start on your own brainchild.</p>
-<p>Since the full source code for Struts is available, we also provide
-<a href="../userGuide/installation.html">complete instructions</a>
-for compiling your own Struts JAR from scratch. (This is actually easier than it looks!)</p>
-<p>Your Struts application can usually be deployed using a standard WAR file. In most
-cases, you simply deposit the WAR file on your application server, and it is installed
-automatically. If not, step-by-step installation instructions for
-<a href="../userGuide/installation.html#Containers">various servlet
-containers</a> are available.</p>
-</section>
-
-<section href="jar" name="When do I need &quot;struts.jar&quot; on my classpath?">
-<p>When you are compiling an application that uses the Struts classes, you must have the &quot;struts.jar&quot; on the classpath your <strong>compiler</strong> sees -- it does not <em> have</em> to be on your CLASSPATH environment variable.</p>
-<p>Why is that an important distinction? Because if you are using a servlet container on your development machine to test your application, the &quot;struts.jar&quot; <strong>must not</strong> be on your CLASSPATH environment variable when running the container. (This is because each Web application must also have their own copy of the Struts classes, and the container will become confused if it is on the environment path as well.)</p>
-<p>There are several general approaches to this issue:</p>
-<ul>
-<li><strong>Use ANT</strong> for building your projects -- it can easily assemble classpaths for the compiler.  (This is how Struts itself is  built, along with Tomcat and most other Java-based projects).</li>
-<li><strong>Use an IDE</strong> where you can configure the "class path" used  for compilation independent of the CLASSPATH environment  variable.</li>
-<li><strong>Use a shell script</strong> that temporarily adds struts.jar  to the classpath just for compilation, for example<br/>
-<em>javac -classpath /path/to/struts.jar:$CLASSPATH $@</em></li>
-</ul>
-</section>
-
-<section href="tests" name="Does Struts include its own unit tests?">
-<p>
-Struts currently has two testing environments, to reflect the fact that
-some things can be tested statically, and some really need to be done in
-the environment of a running servlet container.</p>
-<p>
-For static unit tests, we use the <a href="http://www.junit.org">JUnit framework</a>.
-The sources for these tests are in the "src/test"
-hierarchy in the Subversion repository, and are executed via the "test.junit"
-target in the top-level build.xml file.  Such tests are focused on the
-low-level functionality of individual methods, are particularly
-suitable for the static methods in the org.apache.struts.util utility
-classes.  In the test hierarchy, there are also some "mock object" classes
-(in the org.apache.struts.mock package) so that you can package up things
-that look like servlet API and Struts API objects to pass in as arguments
-to such tests.</p>
-<p>
-Another valuable tool is
-<a href="http://sourceforge.net/projects/strutstestcase/">Struts TestCase</a>
-which provides a useful harness for Action classes that can be used with JUnit or
-<a href="http://jakarta.apache.org/cactus">Cactus</a>.
-</p>
-</section>
-
-<section href="requests" name="If the framework doesn't do what I want, can I request that a feature be added?">
-<p>
-First, it's important to remember that Struts is an all-volunteer project.
-We don't charge anyone anything to use Struts.
-Committers and other developers work on Struts because they need to use it with their own applications.
-If others can use it too, that's "icing on the cake".
-If you submit a patch for a feature that a Committer finds useful, then that Committer may choose to volunteer his or her time to apply the patch.
-If you just submit an idea without a patch, it is much less likely to be added (since first someone else has to volunteer their time to write the patch).
-</p>
-<p>
-We are grateful for any patches, and we welcome new ideas, but the best way to see that something gets added to the framework is to do as much of the work as you can, rather than rely on the "kindness of strangers". Worst case, you can apply the patch to your copy of Struts and still use the feature in your own application. (Which is what open source is ~really~ all about.)
-</p>
-</section>
-
-<section href="help" name="Where can I get help with Struts?">
-<p>The Struts package comes complete with a
-<a href="../userGuide/index.html">Users Guide</a> to
-introduce people to the framework and its underlying technologies. Various components
-also have their own in-depth Developers Guide, to cover more advanced topics. Comprehensive
-<a href="../api/index.html">Javadocs</a> are included
-along with the <strong>full source code</strong>. For your convenience, these are bundled together as
-a self-installing application. The <code>struts-documentation.war</code> is the same
-bundle that is deployed as the
-<a href="http://jakarta.apache.org/struts/">Struts Web site</a>.
-</p>
-<p>
-The
-<a href="http://jakarta.apache.org/site/mail.html">Strut's mailing list</a> is also
-very active, and welcomes posts from new users. Before posting a new question, be
-sure to consult the
-<a href="http://www.mail-archive.com/struts-user%40jakarta.apache.org/">
-<strong>MAILING LIST ARCHIVE</strong></a> and the very excellent
-<a href="http://www.tuxedo.org/~esr/faqs/smart-questions.html">
-How To Ask Questions The Smart Way</a> by Eric Raymond. Please do be sure
-to <a href="http://expita.com/nomime.html">turn off HTML</a> in your
-email client before posting.
-</p>
-</section>
-
-<section href="support" name="Is commercial support available?">
-<p>There is no official, commercial support for Struts, though third parties may offer different degrees of support. </p>
-</section>
-
-<section href="providers" name="Are there ISPs that will host my Struts application?">
-<p>For a listing of some Java and Struts ISPs, visit the <a href="http://struts.sf.net/commnity/index.html">Struts Community Resources</a> area on SourceForge.</p>
-</section>
-
-<section href="turbine" name="What's the difference between Struts and Turbine? What's the difference between Struts and Expresso?">
-<p>
-If you are starting from scratch, packages like
-<a href="http://jakarta.apache.org/turbine">Turbine</a> and
-<a href="http://jcorporate.com">Expresso</a>
-can be very helpful since they try to provide all of the basic services that your team is likely to need.
-Such services include things like data persistence and logging.
-</p>
-<p>
-If you are not starting from scratch, and need to hook up your web application to an existing infrastructure, then "plain vanilla" Struts can be a better choice.
-The core Struts framework does not presuppose that you are using a given set of data persistence, presentation, or logging tools.
-Anything goes =:0)
-</p>
-<p>
-Compared to other offerings, Struts endeavors to be a minimalist framework.
-We try leverage existing technologies whenever we can and provide only the missing pieces you need to combine disparate technologies into a coherent application.
-This is great when you want to select your own tools to use with Struts.
-But, if you prefer a more integrated infrastructure, then packages like Turbine or Expresso (which uses Struts) are perfectly good ways to go.
-</p>
-<p>See also</p>
-<ul>
-<li>&lt; <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg03206.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg03206.html</a> &gt;</li>
-<li>&lt; <a href="http://www.mail-archive.com/general@jakarta.apache.org/msg00495.html">http://www.mail-archive.com/general@jakarta.apache.org/msg00495.html</a> &gt;</li>
-<li>&lt; <a href="http://jakarta.apache.org/velocity/ymtd/ymtd.html">http://jakarta.apache.org/velocity/ymtd/ymtd.html</a> &gt;</li>
-</ul>
-</section>
-
-<section href="taglibs" name="Why aren't the Struts tags maintained as part of the Jakarta Taglibs project?">
-<p>Development of both products began about the same time. Leading up to the release of 1.0, it was thought better to continue to develop the taglibs alongside the controller. Now that 1.0 is out, the JavaServer Pages Standard Taglib is in active development. Once work on JSTL stabilizes, the Struts taglibs will be revisited. Tags which are not linked directly to the framework may be hosted at Jakarta Taglibs instead.</p>
-</section>
-
-<section href="xhtml" name="Are the Struts tags XHTML compliant?">
-<p>If you use an &lt;html:html xhtml="true&gt; or &lt;html:xhtml/&gt; element on your page, the tags
-will render as XHTML (since Struts 1.1). </p>
-</section>
-
-<section href="wml" name="Will the Struts tags support other markup languages such as WML">
-<p>
-Struts itself is markup neutral. The original Struts taglibs are only one example of how
-presentation layer components can access the framework. The framework objects are exposed
-through the standard application, session, and request contexts, where any Java component in
-the application can make use of them.
-</p>
-
-<p>Markup extensions that use Struts are available for
-<a href="http://jakarta.apache.org/velocity">Velocity</a> and
-<a href="http://www.openroad.ca/opencode/">XLST</a>, among others.
-A new Struts tag library for
-<a href="#jsf">Java Server Faces</a> is also in development.
-</p>
-
-<p>For more about using WAP/WML with Struts see the article
-<a href="http://www.sys-con.com/pbdj/archives2/0904/hamboeck/">
-WAP up your EAserver</a>.
-</p>
-</section>
-
-<section href="jsf" name="What about JSTL and JavaServer Faces?">
-    <p>
-       JSTL, the <a href="http://java.sun.com/products/jsp/jstl/">
-       JavaServer Standard Tag Library</a>, is a set of JSP tags that
-       are designed to make it easier to develop Web applications.
-       <a href="http://java.sun.com/j2ee/javaserverfaces/">JavaServer Faces</a>
-       (JSF) is a specification for a new technology that promises to make
-       it easier to write MVC applications, both for the Web and for the
-       desktop.
-    </p>
-<p>
-The inventor of Struts, Craig McClanahan, was a member of the
-expert group for the JavaServer Standard Tag Library (JSR 052) and
-is now the specification co-lead for JavaServer Faces (JSR 127). Both
-technologies are complementary to Struts.</p>
-<p>
-The mainstay of the Struts framework is the controller components, which
-can be used with any Java presentation technology. As new technologies
-become available, it is certain that new "glue" components will also
-appear to help these technologies work as well with Struts.
-    </p>
-    <p>
-        Struts originally came bundled with a set of custom JSP tags.
-        Today, several extensions are available to help
-        you use Struts with other popular presentation technologies, like
-        XSLT and Velocity. Likewise, extensions for JSTL and JSF are now available as well.
-    </p>
-<p>
-    The JSTL reference implementation is available through the
-    <a href="http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html">Jakarta Taglibs site</a>.
-    A JSTL taglibs for Struts,
-    <a href="../userGuide/building_view.html#struts-el"><strong>Struts-El</strong></a>,
-    is available and distributed with Struts beginning with the 1.1 release.
-</p>
-    <p>
-        Meanwhile, the JSF specification is still under development,
-        although an early-release reference implementation is available through the
-        <a href="http://java.sun.com/webservices/download.html">Java Web Services Developer Pack</a>.
-        An early-release JavaServer Faces taglib for Struts,
-        <a href="http://archive.apache.org/dist/jakarta/struts/old/release/struts-faces/">
-        <strong>Struts-Faces</strong></a>, is also in early release and available
-        through the nightly build.
-    </p>
-    <p>
-        For more about what JavaServer Faces means to the Struts community,
-        see the <a href="http://wiki.apache.org/struts/StrutsMoreAboutJSF">
-        StrutsMoreAboutJSF</a> wiki page.
-    </p>
-</section>
-
-<section href="ide" name="Is there a particularly good IDE to use with Struts">
-<p>
-Struts should work well with any development environment that you would like to use, as well as with any programmers editor. 
-The members of the Struts development team each use their own tools such as 
-<a href="http://www.gnu.org/software/emacs/emacs.html">Emacs</a>, 
-<a href="http://www.intellij.com/idea/">IDEA</a>, 
-<a href="http://www.eclipse.org/">Eclipse</a>, 
-and <a href="http://www.netbeans.org/">NetBeans</a>.
-</p>
-<p>
-At this writing, in the free zone, NetBeans had the edge with JSP editing, but Eclipse has more advanced refactoring features. 
-Eclipse is also a general-purpose IDE and can be used with non-Java projects.
-In the non-free zone, IDEA is highly regarded but costs money. (Of course, if *you* cost money, good tools are often a good investment.)
-</p>
-<p>
-See the <a href="../faqs/index.html">Howto Guides</a> for more about configuring IDEs to work with Struts.
-</p>
-</section>
-
-<section href="digest" name="Is there a digest for the User list?">
-<p>
-Yes. <a href="mailto:struts-user-digest-subscribe@jakarta.apache.org">send a blank message</a> to &lt; <a href="mailto:struts-user-digest-subscribe@jakarta.apache.org">struts-user-digest-subscribe@jakarta.apache.org</a>&gt;.
-</p>
-<p>
-If you are subscribed to the digest, you can also post to the list.
-Just be sure to send your post to the
-<a href="mailto:struts-user@jakarta.apache.org">user list</a> rather than trying to reply to the digest.
-</p>
-</section>
-
-<section href="newsgroup" name="Is there a Struts newsgroup?">
-<p>
-Not a usenet group, but the Struts User list can be accessed with your
-favorite newsgroup reader from the
-<a href="http://news.gmane.org/">GMane News Site</a>.  Subscribe to groups
-<code>gmane.comp.jakarta.struts.devel</code> for the developer list, or
-<code>gmane.comp.jakarta.struts.user</code> for the user list.
-</p>
-</section>
-
-<section href="mailbounce" name="Why didn't my posting show up on the user list?">
-<p>
-You must be subscribed to the <a href="mailto:struts-user-subscribe@jakarta.apache.org">user list</a>
-or <a href="mailto:struts-user-digest-subscribe@jakarta.apache.org">user digest</a> before posting
-(or use the <a href="http://news.gmane.org">GMane Newsgroups</a> instead).
-</p>
-</section>
-
-<section href="unsubscribe" name="How do I unsubscribe from the mailing list?">
-<p>
-<strong>From the email account used to subscribe to the list,</strong> <a href="mailto:struts-user-unsubscribe@jakarta.apache.org">send a blank message</a> to &lt; <a href="mailto:struts-user-unsubscribe@jakarta.apache.org">struts-user-unsubscribe@jakarta.apache.org</a>&gt;.
-</p>
-<p>
-If you are receiving the digest, you must send a blank email to
-&lt;<a href="mailto:struts-user-digest-unsubscribe@jakarta.apache.org">struts-user-unsubscribe@jakarta.apache.org</a>&gt;
-instead.
-</p>
-</section>
-
-</body></document>
diff --git a/build-legacy/core/xdocs/faqs/netbeans.xml b/build-legacy/core/xdocs/faqs/netbeans.xml
deleted file mode 100644
index 9730bc1..0000000
--- a/build-legacy/core/xdocs/faqs/netbeans.xml
+++ /dev/null
@@ -1,229 +0,0 @@
-<?xml version="1.0"?>
-
-<document url="./ssl.xml">
-
-<properties>
-
-
-<title>How to setup a basic Struts project using Netbeans IDE - Apache Struts</title>
-
-</properties>
-
-<body>
-
-<section href="netbeans" name="How to setup a basic Struts project using Netbeans IDE"/>
-<section name="Legal Disclamer">
-
-Please read <a href="http://jakarta.apache.org/site/idedevelopers.html">this</a> first.<br/>
-<p>
-* DISCLAIMER - This simple How-To shows you one of many ways to setup a working project using<br/>
-the Struts framework.  This is mainly geared toward struts users who are new to Netbeans, and<br/> 
-don't want to spend a lot of time figuring out the differences between their old IDE (if any)<br/>
-and this one.<br/>
-<br/>
-I will also apologize ahead of time for the formatting of this page.<br/>
-</p>
-<br/>
-In this How-To, I will demonstrate (using Netbeans 3.4) how to setup, compile, and build
-a customized version of the struts-example.<br/> 
-</section>
-
-
-<section name="Let's get started">
-<ol>
- <li>
-  Create a new project.<br/>
-  <img alt="" src="../images/how-to/netbeans/creating-project3.jpg"></img><br/><br/><br/>
-  <img alt="" src="../images/how-to/netbeans/creating-project4.jpg"></img><br/><br/><br/>
-  <img alt="" src="../images/how-to/netbeans/creating-project5.jpg"></img><br/><br/><br/>
-  <img alt="" src="../images/how-to/netbeans/creating-project6.jpg"></img><br/><br/><br/>
-  <img alt="" src="../images/how-to/netbeans/creating-project8.jpg"></img><br/><br/><br/>
-  </li>
- <li>
-  Now let's create (or reuse) a directory to hold the project.
-  What I did was copy the struts-example.war from the Struts distribution
-  and extracted it (using Winzip) like this:
-  <br/>
-  <img alt="" src="../images/how-to/netbeans/directory.jpg"></img><br/><br/><br/>
-  </li>
- <li>
-  Next we need to create a build.xml to build our project.  This file will sit in the root<br/>
-  directory of your project. (Actually, it doesn't matter where sits so long as you make <br/>
-  the appropriate changes to directories and such.)<br/>
-  <br/>
-  *Note - I will not spend any time here trying to convince you why you should be <br/>
-  using Ant to build your projects.  I guess I consider this to be obvious.<br/>
-  Here is the build.xml file I use for this demonstration (you MUST modify this <br/>
-  to use your environment):<br/>
-  <pre>
-  
-  &lt;project name="Struts Example" default="main" basedir="."&gt;
-  
-    &lt;!--  This is a basic build script, only the minimums here --&gt;
-    
-    &lt;!-- Tell ant to use my environment variables --&gt;
-    &lt;property environment="env"/&gt;
-  
-    &lt;property file="./build.properties"/&gt;
-  
-      &lt;property name="build.compiler"     value="modern"/&gt;
-      &lt;property name="build.dir"          value="./WEB-INF/classes" /&gt;
-      &lt;property name="src.dir"            value="./WEB-INF/src"/&gt;
-    &lt;property name="servlet.jar"        value="/Apache_Home/jakarta-servletapi-4/lib/servlet.jar"/&gt;
-      &lt;property name="war.file"              value="struts-example"/&gt;
-      &lt;property name="war.file.name"      value="${war.file}.war"/&gt;
-      &lt;property name="tomcat.home"       value="${env.CATALINA_HOME}"/&gt;
-      &lt;property name="deploy.dir"         value="${tomcat.home}/webapps"/&gt;
-  
-    &lt;path id="project.class.path"&gt;
-        &lt;fileset dir="./WEB-INF/lib/"&gt;
-            &lt;include name="**/*.jar"/&gt;
-        &lt;/fileset&gt;
-        &lt;pathelement path="${src.dir}"/&gt;
-        &lt;pathelement path="${servlet.jar}"/&gt;
-    &lt;/path&gt;
-  
-      &lt;target name="clean"&gt;
-          &lt;delete dir="${build.dir}" includeEmptyDirs="true" /&gt;
-      &lt;/target&gt;
-  
-  
-      &lt;target name="prep"&gt;
-          &lt;mkdir dir="${build.dir}"/&gt;
-      &lt;/target&gt;
-  
-      &lt;target name="compile"&gt;
-        &lt;javac   srcdir="${src.dir}"
-                    destdir="${build.dir}"
-                    debug="on"
-                deprecation="on"&gt;
-          &lt;include name="**/*.java"/&gt;
-          &lt;classpath refid="project.class.path"/&gt;
-        &lt;/javac&gt;
-      &lt;/target&gt;
-  
-      &lt;target name="cleanWebApp"&gt;
-        &lt;delete file="${deploy.dir}/${war.file.name}" /&gt;
-          &lt;delete  dir="${deploy.dir}/${war.file}" includeEmptyDirs="true" /&gt;
-      &lt;/target&gt;
-  
-      &lt;target name="war"&gt;
-          &lt;war warfile="${war.file.name}" webxml="./WEB-INF/web.xml"&gt;
-                 &lt;fileset dir="./" includes="**/*.*" excludes="*.war, **/*.nbattrs, web.xml, **/WEB-INF/**/*.*, **/project-files/**/*.*"/&gt;
-                 &lt;webinf  dir="./WEB-INF"    includes="**/*" excludes="web.xml, **/*.jar, **/*.class"/&gt;
-                 &lt;lib     dir="./WEB-INF/lib"/&gt;
-                 &lt;classes dir="${build.dir}" includes="**/*.properties" /&gt;
-          &lt;/war&gt;
-      &lt;/target&gt;
-  
-      &lt;target name="deploy"&gt;
-          &lt;copy todir="${deploy.dir}"&gt;
-            &lt;fileset dir="./" includes="${war.file.name}"/&gt;
-          &lt;/copy&gt;
-      &lt;/target&gt;
- 
-    &lt;target name="main" depends="clean, prep, cleanWebApp, compile, war"/&gt;
-  
-  &lt;/project&gt;
-  
-  </pre>
-  </li>
-  <li>
-  Build the project using Ant from the command line.<br/>
-  Here's what I get:
-  
-  <pre>
-  
-  C:\personal\development\Projects\struts-examples\struts-example>ant
-  Buildfile: build.xml
-  
-  clean:
-     [delete] Deleting directory C:\personal\development\Projects\struts-examples\struts-example\WEB-INF\classes
-  
-  prep:
-      [mkdir] Created dir: C:\personal\development\Projects\struts-examples\struts-example\WEB-INF\classes
-  
-  cleanWebApp:
-     [delete] Deleting: C:\Apache_Home\jakarta-tomcat-4.0.6\webapps\struts-example.war
-     [delete] Deleting directory C:\Apache_Home\jakarta-tomcat-4.0.6\webapps\struts-example
-  
-  compile:
-      [javac] Compiling 22 source files to C:\personal\development\Projects\struts-examples\struts-example\WEB-INF\classes
-      [javac] C:\personal\development\Projects\struts-examples\struts-example\WEB-INF\src\org\apache\struts\webapp\example\memory\MemoryDatabasePlugIn.java:78: warning: org.apache.struts.config.ApplicationConfig in org.apache.struts.config has been deprecated
-      [javac] import org.apache.struts.config.ApplicationConfig;
-      [javac]                                 ^
-      [javac] C:\personal\development\Projects\struts-examples\struts-example\WEB-INF\src\org\apache\struts\webapp\example\memory\MemoryDatabasePlugIn.java:185: warning: org.apache.struts.config.ApplicationConfig in org.apache.struts.config has been deprecated
-      [javac]     public void init(ActionServlet servlet, ApplicationConfig config)
-      [javac]                                             ^
-      [javac] C:\personal\development\Projects\struts-examples\struts-example\WEB-INF\src\org\apache\struts\webapp\example\memory\MemoryDatabasePlugIn.java:185: warning: init(org.apache.struts.action.ActionServlet,org.apache.struts.config.ApplicationConfig) in org.apache.struts.action.PlugIn has been deprecated
-      [javac]     public void init(ActionServlet servlet, ApplicationConfig config)
-      [javac]                 ^
-      [javac] C:\personal\development\Projects\struts-examples\struts-example\WEB-INF\src\org\apache\struts\webapp\example\memory\MemoryDatabasePlugIn.java:185: warning: org.apache.struts.config.ApplicationConfig in org.apache.struts.config has been deprecated
-      [javac]     public void init(ActionServlet servlet, ApplicationConfig config)
-      [javac]                                             ^
-      [javac] 4 warnings
-  
-  war:
-        [war] Building war: C:\personal\development\Projects\struts-examples\struts-example\struts-example.war
-  
-  main:
-  
-  BUILD SUCCESSFUL
-Total time: 11 seconds
-  </pre>  
-  <br/>
- </li>
- <li>
-  If it did not build for you, verify that the external jars (external to this project) are 
-  specified correctly.<br/>
-  </li>
-  <li>
-  Now we can finish setting up our Netbeans project<br/><br/>
-  Mount the directory where we extracted the example and where we ran the build:<br/>
-  <img alt="" src="../images/how-to/netbeans/building1.jpg"></img><br/><br/><br/>
-  <img alt="" src="../images/how-to/netbeans/building2.jpg"></img><br/><br/><br/>
-  </li>
-  <li>
-  If specified correctly, Netbeans will parse the build.xml automatically and will use <br/>
-  (mount jars) the resources that you've declared for building.<br/>
-    <img alt="" src="../images/how-to/netbeans/building3.jpg"></img><br/><br/><br/>
-  </li>
-  <li>
-    I usually get rid of the additional mounted directory under /WEB-INF/classes.  <br/>
-    Since everything there gets overwritten with each build, I don't usually need to<br/> 
-    see this (or possibly make changes in the wrong place)<br/>
-    <img alt="" src="../images/how-to/netbeans/building4.jpg"></img><br/><br/><br/>
-  </li>
-  <li>
-    In order for Netbeans to understand the package structure for our source code, we need<br/>
-    to mount all source directories directly.  <br/><br/>
-    *Note - Some IDEs will do this automatically <br/>
-    (Eclipse) or can be configured from the project config file (JBuilder)<br/>
-    <img alt="" src="../images/how-to/netbeans/building5.jpg"></img><br/><br/><br/>
-    <img alt="" src="../images/how-to/netbeans/building6.jpg"></img><br/><br/><br/>
-  </li>
-  <li>
-    Use your source mount point to add/edit/delete your .java files<br/>
-    <img alt="" src="../images/how-to/netbeans/building7.jpg"></img><br/><br/><br/>
-  </li>
-  <li>
-    Using the initial mount point, expand until you can right-click on the build.xml file (or one<br/>
-    of the targets) and build the project<br/>
-    <img alt="" src="../images/how-to/netbeans/building8.jpg"></img><br/><br/><br/>
-  </li>
-  <li>
-    If you receive errors from Netbeans (choking on the XML parse), don't worry, I did too.<br/>
-    I always call ant on the command line anyway, so I don't worry too much about the IDE's <br/>
-    internal XML jars.<br/>
-    <!--[:TODO:] finish this section with solution to Netbeans ant/xml incompatibility woes--><br/>
-    <img alt="" src="../images/how-to/netbeans/building8.jpg"></img><br/><br/><br/>
-  </li>
-  <li>
-    Feel free to change the code as you like, and then build and deploy your new app.
-  </li>
-  
-</ol>
-
-</section>
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/faqs/newbie.xml b/build-legacy/core/xdocs/faqs/newbie.xml
deleted file mode 100644
index 046f90c..0000000
--- a/build-legacy/core/xdocs/faqs/newbie.xml
+++ /dev/null
@@ -1,1317 +0,0 @@
-<?xml version="1.0"?>
-<document url="./newbie.xml">
-<properties>
-<title>Newbie FAQ - Apache Struts</title>
-</properties>
-<body>
-<section href="faq" name="Newbie FAQ"/>
-
-<section href="contents" name="Index">
-
-    <p>
-    Here are answers to the most common questions people ask when using
-    Struts on their first project.
-    <strong>For an in-depth, searchable FAQ, visit our friends at
-    <a href="http://www.jguru.com/faq/home.jsp?topic=Struts">JGuru</a>.</strong>
-    </p>
-
-    <ul>
-
-    <li>
-    <a href="#reload">Why was reload removed from Struts 1.1?</a>
-    </li>
-
-    <li>
-    <a href="#modules">What is a modular application? What does
-    module-relative mean?</a>
-    </li>
-
-    <li>
-    <a href="#naming">Why are some of the class and element names
-    counter-intuitive?</a>
-    </li>
-
-    <li>
-    <a href="#actionForms">Whither ActionForms?</a>
-    </li>
-
-    <li>
-    <a href="#actionFormInterface">Why is ActionForm a base class rather than an interface?</a>
-    </li>
-
-    <li>
-    <a href="#multiple">Can I use multiple HTML form elements with the same
-    name?</a>
-    </li>
-
-    <li>
-    <a href="#multipleSubmits">Can I have multiple submit buttons on the same
-    form?</a>
-    </li>
-
-    <li><a href="#checkbox">Why are my checkboxes not being set from ON to
-    OFF?</a>
-    </li>
-
-    <li><a href="#focus">Why doesn't the focus feature on the &lt;html:form>
-    tag work in every circumstance?</a>
-    </li>
-
-    <li>
-    <a href="#javascript.submit">How do I use JavaScript to submit a form? </a>
-    </li>
-
-    <li>
-    <a href="#javascript">How do I use JavaScript to ... </a>
-    </li>
-
-    <li>
-    <a href="#reset">Do I need to implement reset and set all my form
-    properties to their initial values?</a>
-    </li>
-
-    <li>
-    <a href="#scriptlets">Can't I just create some of my JavaBeans in the JSP
-    using a scriptlet?</a>
-    </li>
-
-    <li>
-    <a href="#otherBeans">Can I use other beans or hashmaps with ActionForms?</a>
-    </li>
-
-    <li>
-    <a href="#tags">Why do the Struts tags provide for so little
-    formatting?</a>
-    </li>
-
-    <li>
-    <a href="#layout">Why don't the Struts taglibs offer more layout options?</a>
-    </li>
-
-
-    <li>
-    <a href="#link">Why does the &lt;html:link> tag URL-encode javascript and
-    mailto links?"</a>
-    </li>
-
-    <li>
-    <a href="#authenticate">How can I authenticate my users?</a>
-    </li>
-
-    <li>
-    <a href="#pager">How can I scroll through list of pages like the search
-    results in google?</a>
-    </li>
-
-    <li>
-    <a href="#minimization">Why does the option tag render selected="selected"
-    instead of just "selected"?
-    </a></li>
-
-    <li><a href="#jsp">Do I have to use JSPs with my application?</a></li>
-
-    <li>
-    <a href="#formbeans">Do ActionForms have to be true JavaBeans?</a>
-    </li>
-
-    <li>
-    <a href="#separate">Do I have to have a separate ActionForm bean
-    for every HTML form?</a>
-    </li>
-
-    <li>
-    <a href="#prepopulate">How can I prepopulate a form?</a>
-    </li>
-
-    <li>
-    <a href="#noForm">Can I have an Action without a form?</a>
-    </li>
-
-    <li>
-    <a href="#requiredif">Can you give me a simple example of using the requiredif Validator rule?</a>
-    </li>
-
-    <li>
-    <a href="#validate">When is the best time to validate input?</a>
-    </li>
-
-    <li>
-    <a href="#avoidValidate">How can I avoid validating a form before data is entered?</a>
-    </li>
-
-    <li>
-    <a href="#wizard">How can I create a "wizard" workflow?</a>
-    </li>
-
-    <li>
-    <a href="#chaining">How can I "chain" Actions?</a>
-    </li>
-
-    </ul>
-
-    <p>
-    If you like to <a href="helping.html">contribute</a>,
-    there is a list of <a href="#undocumented"> undocumented questions</a>
-    at the end of this page.
-    </p>
-
-</section>
-
-<section href="reload" name="Why was reload removed from Struts 1.1?">
-
-<p>
-The problem with ReloadAction was that Struts was trying to act like a
-container, but it couldn't do a proper job of it. For example, you
-can't reload classes that have been modified, or (portably) add new
-classes to a running web application (even if the container supported it).
-</p>
-
-<p>
-Meanwhile, as 1.1 was being developed, work progressed on things
-like Tomcat's reload command via the Manager webapp. This feature allows
-you to quickly reload-on-demand, complete with saving and restoring your
-session). It started to make even less sense for Struts to half-implement
-a feature that containers are implementing fully.
-</p>
-
-<p>
-A more minor point is that freezing the configuration information at application
-startup time allows Struts to safely access the mapping information without
-bothering with synchronization. The "startup-only" strategy creates a modest
-but real improvement in performance for all users.
-</p>
-
-<p>So, ReloadAction is not supported in 1.1 for two reasons:</p>
-
-<ul>
-<li>
-    It never did let you reload everything that you would really
-    want to -- particularly changed classes -- so many people
-    ended up having to reload the webapp anyway.
-</li>
-<li>
-    Containers are starting to offer reload-on-demand features
-    which does the same thing as the Struts ReloadAction, only better.
-</li>
-<li>
-    Not supporting ReloadAction lets Struts avoid doing synchronization
-    locks around all the lookups (like figuring out which action to use,
-    or the destination of an ActionForward) so applications can run a
-    little faster.
-</li>
-</ul>
-
-<p>
-Of course, if someone came up with an implementation that solved these
-problems without creating any others, we would not be opposed to including
-a new ReloadAction.
-</p>
-
-</section>
-
-<section href="modules" name="What is a modular application? What does module-relative mean?">
-
-<p>
-Since Struts 1.1, the framework supports multiple application modules. All applications have at
-least one root, or default, module. Like the root directory in a file system, the default application
-has no name. (Or is named with an empty string, depending your viewpoint.) Developing an application
-with only a default module is no different from how applications were developed under Struts 1.0.
-Since Struts 1.1, you can add additional modules to your application, each of which can have their
-own configuration files, messages resources, and so forth. Each module is developed in the same way as
-the default module. Applications that were developed as a single module can added to a multiple
-module application, and modules can promoted to a standalone application without change. For more
-about configuring your application to support multiple modules, see
-<a href="../userGuide/configuration.html#dd_config_modules">Configuring Applications</a> in the
-User Guide.
-</p>
-
-<p>
-But to answer the question =:0), a modular application is a Struts application that uses more than
-one module. Module-relative means that the URI starts at the application-module level, rather than at
-the application-context level, or the absolute-URL level.
-</p>
-<ul>
-<li>Absolute URL: http://localhost/myApplication/myModule/myAction.do</li>
-<li>context-relative: /myModule/myAction.do</li>
-<li>module-relative: /myAction.do</li>
-</ul>
-
-</section>
-
-<section href="naming" name="Why are some of the class and element names counter-intuitive?">
-<p>
-The framework grew in the telling and as it evolved some of the names
-drifted.
-</p>
-<p>The good thing about a nightly build, is that everything becomes
-available to the community as soon as it is written. The bad thing about
-a nightly build is that things like class names get locked down early and
-then become difficult to change.
-</p>
-</section>
-
-
-<section href="actionForms" name="Wither ActionForms?">
-<p>
-<a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg19281.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg19281.html</a><br/>
-<a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg19338.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg19338.html</a><br/>
-<a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg20833.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg20833.html</a><br/>
-</p>
-</section>
-
-
-<section href="actionFormInterface" name="Why is ActionForm a base class rather than an interface?">
-<p>
-The MVC design pattern is very simple to understand but much more difficult
-to live with.  You just need this little bit of Business Logic in the View
-logic or you need just that little bit of View logic in the Business tier and
-pretty soon you have a real mess.
-</p>
-<p>
-Making ActionForm a class takes advantage of the single
-inheritance restriction of Java to it makes it more difficult for people to do
-things that they should not do.
-</p>
-<p>
-ActionForms implemented as interfaces encourage making the property types match
-the underlying business tier instead of Strings, which violates one of the
-primary purposes for ActionForms in the first place (the ability to reproduce
-invalid input, which is a fundamental user expectation).
-ActionForms as an interface would also encourage using existing DAO objects as
-ActionForms by adding ‘implements ActionForm’ to the class.  This violates
-the MVC design pattern goal of separation of the view and business logic.
-</p>
-<p>
-Since the goal of struts is to enforce this separation, it just makes more sense
-for Struts to own the ActionForm.
-</p>
-</section>
-
-<section href="JavaBeans" name="Do ActionForms have to be true JavaBeans?">
-<p>
-The utilities that Struts uses (Commons-BeanUtils since 1.1) require that ActionForm properties follow
-the JavaBean patterns for mutators and accessors (get*,set*,is*). Since Struts uses the Introspection API
-with the ActionForms, some containers may require that all the JavaBean patterns be followed, including
-declaring "<code>implements Serializable</code>" for each subclass. The safest thing is to review the
-<a href="../userGuide/preface.html#javabeans">JavaBean specification</a> and follow all the prescribed patterns.</p>
-</section>
-
-
-<section href="multiple" name="Can I use multiple HTML form elements with the same name?">
-<p>
-Yes. Define the element as an array and Struts will autopopulate it like any other.
-</p>
-<pre>
-<code>
-private String[] id= {};
-public String[] getId() { return this.id; }
-public void setItem(String id[]) {this.id = id;}
-</code>
-</pre>
-<p>
-And so forth
-</p>
-</section>
-
-
-<section href="multipleSubmits" name="Can I have multiple submit buttons on the same form?">
-<p>
-<strong>Yes</strong>.  The issue is that only one action class can be
-associated with a single form. So the real issue is how do I decode
-multiple submit types to a single <code>Action</code> class.
-There is more than one way to achieve this functionality.</p>
-<p>
-The way that is suggested by struts is right out of the javadoc for
-<a href="../api/org/apache/struts/actions/LookupDispatchAction.html">
-<code>LookupDispatchAction</code></a>.
-Basically, <code>LookupDispatchAction</code> is using the keys from
-<code>ApplicationProperties.resources</code> as keys to a map of actions
-available to your <code>Action</code> class.  It uses
-<a href="http://java.sun.com/j2se/1.3/docs/guide/reflection/">reflection</a> to
-decode the request and invoke the proper action.  It also takes advantage of
-the struts <a href="../userGuide/struts-html.html#submit">
-<code>&lt;html:submit&gt;</code></a> tags and is straight forward to implement.</p>
-<p>
-You can roll your own with JavaScript events and <code>javascript:void
-(document.forms["myform"].submit)</code> on any html element.  This gives you
-control of how you want your page to look.  Again you
-will have to decode the expected action in the <code>execute</code> method of
-your action form if you choose this route.</p>
-</section>
-
-
-<section href="focus" name="Why doesn't the focus feature on the &lt;html:form> tag work in every circumstance?">
-<p>
-Unfortunately, there is some disagreement between the various browsers, and different versions of the same browser, as to how the focus can be set.
-The &lt;html:form> tag provides a quick and easy JavaScript that will set the focus on a form
-for most versions of most browsers.
-If this feature doesn't work for you, then you should set the focus using your own JavaScript.
-The focus feature is a convenient "value-add" -- not a core requirement of the tag.
-If you do come up with a JavaScript that provides the final solution to this project,
-please post your patch to this <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13454">Bugzilla ticket</a>.
-</p>
-</section>
-
-
-<section href="checkbox" name="Why are my checkboxes not being set from ON to OFF?">
-<p>
-A problem with a checkbox is that the browser will only include it in the request
-when it is checked. If it is not checked, the HTML specification suggests that it
-not be sent (i.e. omitted from the request). If the value of the checkbox is being
-persisted, either in a session bean or in the model, a checked box can never
-unchecked by a HTML form -- because the form can never send a signal to uncheck
-the box. The application must somehow ascertain that since the element was not
-sent that the corresponding value is unchecked.
-</p>
-<p>
-The recommended approach for Struts applications is to use the reset method in the
-ActionForm to set all properties represented by checkboxes to null or false. The
-checked boxes submitted by the form will then set those properties to true. The
-omitted properties will remain false. Another solution is to use radio buttons
-instead, which always submit a value.
-</p>
-<p>
-It is important to note that the HTML specification recommends this same
-behavior whenever a control is not "successful". Any blank element in a HTML
-form is not guaranteed to submitted. It is therefor very important to set the
-default values for an ActionForm correctly, and to implement the reset method
-when the ActionForm might kept in session scope.
-</p>
-</section>
-
-<section href="javascript.submit" name="Can I use JavaScript to submit a form?">
-<p>
-    You can submit a form with a link as below.
-    BTW, the examples below assume you are in an &lt;html:form&gt; block and 'myForm'
-    is picked up from the struts-config.xml name field of the action.
-</p>
-<pre><code>
-    &lt;a href='javascript:void(document.forms["myForm"].submit()&gt;My Link&lt;/a&gt;
-</code></pre>
-<p>
-    Now the trick in the action is to decode what action you intend to perform.
-    Since you are using JavaScript, you could set a field value and look for it in
-    the request or in the form.
-</p>
-<p>
-    ... html/javascript part ...
-</p>
-<pre><code>
-        &lt;input type='hidden' value='myAction' /&gt;
-        &lt;input type='button' value='Save Meeeee'
-            onclick='document.forms["myForm"].myAction.value="save";
-                     document.forms["myForm"].submit();' /&gt;
-        &lt;input type='button' value='Delete Meeeee'
-            onclick='document.forms["myForm"].myAction.value="delete";
-                     document.forms["myForm"].submit();' /&gt;
-</code></pre>
-<p>
-    ... the java part ...
-</p>
-<pre><code>
-        class MyAction extends ActionForm implements Serializable {
-
-            public ActionForward execute (ActionMapping map, ActionForm form,
-                HttpServletRequest req, HttpServletResponse) {
-
-                    String myAction = req.getParameter("myAction");
-
-                    if (myAction.equals("save") {
-                           // ...  save action  ...
-                    } else if (myAction.equals("delete") {
-                           // ...  delete action  ...
-                    }
-                }
-            }
-        }
-</code></pre>
-<p>
-    This is just one of many ways to achieve submitting a form and decoding the
-    intended action.  Once you get used to the framework you will find other ways
-    that make more sense for your coding style and requirements.  Just remember
-    this example is completely non-functional without JavaScript.
-</p>
-<p>
-    Here is a link
-    which utilizes the LookupDispatch action to submit forms with multiple actions
-    without javascript: <a href="http://husted.com/struts/tips/003.html">http://husted.com/struts/tips/003.html</a>
-</p>
-
-</section>
-
-<section href="javascript" name="How do I use JavaScript to ...">
-
-    <p>
-    Struts is mainly a server-side technology.
-    We bundled in some JSP tags to expose the framework components to your
-    presentation page, but past that, the usual development process applies.
-    </p>
-
-    <p>
-    Interactive pages require the use of JavaScript.
-    (That's why it was invented.)
-    If you want things popping up or doing this when they click that,
-    you are outside the scope of Struts and back into the web
-    development mainstream.
-    </p>
-
-    <p>
-    You use JavaScript with Struts the same way you use with any presentation
-    page.
-    Since JavaScript is a client-side technology, you can use simple relative
-    references to your scripts.
-    If you need to fire a JavaScript from a HTML control, the Struts HTML tags
-    have properties for the JavaScript events.
-    </p>
-
-    <p>
-    A very good JavaScript resource is Matt Kruse's site at
-    <a href="http://www.mattkruse.com/javascript/">
-    http://www.mattkruse.com/javascript/</a>
-    </p>
-
-</section>
-
-<section href="reset" name="Do I need to implement reset and set all my form properties to their initial values?">
-<p>
-No.
-You need to set checkbox properties to false if the ActionForm is being retained in session scope.
-This is because an unchecked box does not submit an attribute.
-Only checked boxes submit attributes.
-If the form is in session scope, and the checkbox was checked, there is no way to turn it back off without the reset method.
-Resetting the properties for other controls, or for a request scope form, is pointless.
-If the form is in request scope, everything already just started at the initial value.
-</p>
-</section>
-
-
-<section href="scriptlets" name="Can't I just create some of my JavaBeans in the JSP using a scriptlet?">
-<p>
-Struts is designed to encourage a
-<a href="http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html">
-Model 2/MVC architecture</a>. But there is nothing that prevents you from using Model 1
-techniques in your JavaServer Pages, so the answer  to the question is "Yes, you can".
-</p>
-<p>
-Though, using Model 1 techniques in a Struts application does go against the grain.
-The approach recommended by most Struts developers is to create and populate whatever
-objects the view may need in the Action, and then forward these through the request.
-Some objects may also be created and stored in the session or application context,
-depending on how they are used.
-</p>
-<p>
-Likewise, there is nothing to prevent you from using scriptlets along with JSP
-tags in your pages. Though, many Struts developers report writing very complex
-scriplet-free applications and recommend the JSP tag approach to others.
-</p>
-<p>
-For help with Model 1 techniques and scriptlets, you might consider joining the
-<a href="http://archives.java.sun.com/jsp-interest.html">Javasoft JSP-interest
-mailing list</a>, where there are more people still using these approaches.
-</p>
-</section>
-
-
-<section href="otherBeans" name="Can I use other beans or hashmaps with ActionForms?">
-    <p>
-    Yes. There are several ways that you can use other beans or hashmaps with ActionForms.
-    </p>
-    <ul>
-    <li>
-        ActionForms can have other beansor hashmaps as properties
-    </li>
-    <li>
-        "Value Beans" or "Data Transfer Objects" (DTOs) can be used independently of
-        ActionForms to transfer data to the view
-    </li>
-    <li>
-        ActionForms can use Maps to support "dynamic" properties (since Struts 1.1)
-    </li>
-    </ul>
-    <p>
-    ActionForms (a.k.a. "form beans") are really just Java beans (with a few
-    special methods) that Struts creates and puts into session or request scope for you.
-    There is nothing preventing you from using other beans, or including
-    them in your form beans. Here are some examples:
-    </p>
-    <p>
-    <em>Collections as properties</em> Suppose that you need to display a pulldown list of
-    available colors on an input form in your application. You can include a string-valued
-    <code>colorSelected</code> property in your <code>ActionForm</code> to represent the user's
-    selection and a <code>colorOptions</code> property implemented as a <code>Collection</code>
-    (of strings) to store the available color choices. Assuming that you have defined the getters
-    and setters for the <code>colorSelected</code> and <code>colorOptions</code> properties
-    in your <code>orderEntryForm</code> form bean, you can render the
-    pulldown list using:
-    </p>
-    <pre><code>
-    &lt;html:select property="colorSelected"&gt;
-      &lt;html:options property="colorOptions" name="orderEntryForm"/&gt;
-    &lt;/html:select&gt;
-    </code></pre>
-    <p>
-    The list will be populated using the strings in the <code>colorOptions</code>
-    collection  of the <code>orderEntryForm</code> and the value that the user selects
-    will go into the <code>colorSelected</code> property that gets posted to the subsequent
-    <code>Action</code>. Note that we are assuming here that the <code>colorOptions</code>
-    property of the <code>orderEntryForm</code> has already been set.
-    </p>
-    <p>
-    See <a href="#prepopulate">How can I prepopulate a form?</a> for instructions on how to set
-    form bean properties before rendering edit forms that expect properties to be pre-set.
-    </p>
-    <p>
-    <em>Independent DTO</em> An <code>Action</code> that retrieves a list of open orders (as an
-    <code>ArrayList</code> of <code>Order</code> objects) can use a DTO independently of any
-    form bean to transfer search results to the view. First, the Action's
-    <code>execute</code> method performs the search and puts the DTO into the request:
-    </p>
-    <pre><code>
-    ArrayList results = businessObject.executeSearch(searchParameters);
-    request.setAttribute("searchResults",results);
-    </code></pre>
-    <p>
-    Then the view can iterate through the results using the "searchResults" request key to
-    reference the DTO:
-`   </p>
-    <pre><code>
-    &lt;logic:iterate id="order" name="searchResults" type="com.foo.bar.Order"&gt;
-        &lt;tr&gt;&lt;td&gt;&lt;bean:write name="order" property="orderNumber"/&gt;&lt;td&gt;
-            &lt;td&gt;..other properties...&lt;/td&gt;&lt;/tr&gt;
-    &lt;/logic:iterate&gt;
-    </code></pre>
-    <p>
-    See also: <a href="../userGuide/building_controller.html#map_action_form_classes">Map-Backed ActionForms</a> (since Struts 1.1)
-    </p>
-</section>
-
-
-<section href="tags" name="Why do the Struts tags provide for so little formatting?">
-<p>
-<em>The Struts tags seem to provide only the most rudimentary functionality.
-Why is there not better support for date formatting and advanced string handling?</em>
-</p>
-<p>
-Three reasons:
-</p>
-<p>
-First, work started on the JSTL and we didn't want to duplicate the effort.
-</p>
-<p>
-Second, work started on Java Server Faces, and we didn't want to duplicate that effort either.
-</p>
-<p>
-Third, in a Model 2 application, most of the formatting can be handled in the ActionForms (or in the business tier),
-so all the tag has to do is spit out a string.
-This leads to better reuse since the same "how to format" code does not need to be repeated in every instance.
-You can "say it once" in a JavaBean and be done with it.
-</p>
-</section>
-
-<section href="layout" name="Why don't the Struts taglibs offer more layout options?">
-<p>
-Since the Struts tags are open source, you can extend them to provide whatever additional formatting you may need.
-If you are interested in a pre-written taglib that offers more layout options, see the
-<a href="http://struts.application-servers.com">struts-layout taglib</a>.
-</p>
-<p>
-In the same arena, there is a well regarded contributor taglib that can help you create
-<a href="http://sourceforge.net/projects/struts-menu/">Menus for your Struts applications</a>.
-</p>
-</section>
-
-<section href="link" name="Why does the &lt;html:link> tag URL-encode javascript and mailto links?">
-<p>
-The &lt;html:link> tag is not intended for use with client-side references like those used to launch Javascripts or email clients.
-The purpose of link tag is to interject the context (or module) path into the URI so that your server-side links are not dependent on your context (or module) name.
-It also encodes the link, as needed, to maintain the client's session on the server.
-Neither feature applies to client-side links, so there is no reason to use the &lt;html:link> tag.
-Simply markup the client-side links using the standard <a/> tag.
-</p>
-</section>
-
-<section href="authenticate" name="How can I authenticate my users?">
-<p>
-<a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg24504.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg24504.html</a><br/>
-<a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg22949.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg22949.html</a>
-</p>
-</section>
-
-<section href="pager" name="How can I scroll through list of pages like the search results in google?">
-<p>Many Struts developers use the Pager from the JSPTags site.</p>
-<p><a href="http://jsptags.com/tags/navigation/pager/">http://jsptags.com/tags/navigation/pager/</a></p>
-</section>
-
-
-<section href="minimization" name="Why does the option tag render selected=selected instead of just selected?">
-<p>
-Attribute minimization (that is, specifying an attribute with no value) is
-a place where HTML violates standard XML syntax rules. This matters a lot
-for people writing to browsers that support XHTML, where doing so makes
-the page invalid.It's much better for Struts to use the expanded syntax,
-which works the same on existing browsers interpreting HTML, and newer
-browsers that expect XHTML-compliant syntax. Struts is following the
-behavior recommended by the <a href="http://www.w3.org/TR/xhtml1/#h-4.5">
-XHTML specification</a></p>
-</section>
-
-
-<section href="jsp" name="Do I have to use JSPs with my application?">
-
-    <p>
-    The short answer to this question is: No, you are not limited to
-    JavaServer Pages.
-    </p>
-
-    <p>
-    The longer answer is that you can use any type of presentation technology
-    which can be returned by a web server or Java container.
-    The list includes but is not limited to:
-    </p>
-
-    <ul>
-
-        <li>
-        JavaServer Pages,
-        </li>
-
-        <li>
-        HTML pages,
-        </li>
-
-        <li>
-        WML files,
-        </li>
-
-        <li>
-        Java servlets,
-        </li>
-
-        <li>
-        Velocity templates, and
-        </li>
-
-        <li>
-        XML/XLST
-        </li>
-
-    </ul>
-
-    <p>
-    Some people even mix and match apparently unrelated technologies,
-    like PHP, into the same web application.
-    </p>
-
-</section>
-
-<section href="formbeans" name="Do ActionForms have to be true JavaBeans?">
-
-    <p>ActionForms are added to a servlet scope (session or request)
-    as beans.  What this means is that, for certain functionality to
-    be available, your ActionForms will have to follow a few simple
-    rules.</p>
-
-    <p>First, your ActionForm bean must have a zero-arguments
-    constructor.  This is required because Struts must be able to
-    dynamically create new instances of your form bean class, while
-    knowing only the class name.  This is not an onerous restriction,
-    however, because Struts will also populate your form bean's
-    properties (from the request parameters) for you.</p>
-
-    <p>Second, the fields of your form bean are made available to the
-    framework by supplying public getter and setter methods that
-    follow the naming design patterns described in the JavaBeans
-    Specification.  For most users, that means using the following
-    idiom for each of your form bean's properties:</p>
-
-    <pre>
-        private {type} fieldName;
-
-        public {type} getFieldName() {
-            return (this.fieldName);
-        }
-
-        public void setFieldName({type} fieldName) {
-            this.fieldName = fieldName;
-        }
-    </pre>
-
-    <p><strong>NOTE</strong> - you <em>MUST</em> obey the capitalization
-    conventions shown above for your ActionForm properties to be recognized.
-    The property name in this example is "fieldName", and that must also be
-    the name of the input field that corresponds to this property.  A bean
-    property may have a "getter" method and a "setter" method (in a form bean,
-    it is typical to have both) whose name starts with "get" or "set",
-    followed by the property name with the first character capitalized.
-    (For boolean properties, it is also legal to use "is" instead of "get"
-    as the prefix for the getter method.)</p>
-
-    <p> Advanced JavaBeans users will know that you can tell the system
-    you want to use different names for the getter and setter methods, by
-    using a <code>java.beans.BeanInfo</code> class associated with your form
-    bean.  Normally, however, it is much more convenient to follow the
-    standard conventions.</p>
-
-    <p><strong>WARNING</strong> - developers might be tempted to use one of
-    the following techniques, but any of them will cause your property not
-    to be recognized by the JavaBeans introspection facilities, and therefore
-    cause your applications to misbehave:</p>
-    <ul>
-    <li><em>Using getter and setter method names that do not
-        match</em> - if you have a <code>getFoo()</code> method for your
-        getter, but a <code>setBar()</code> method for your setter, Java
-        will not recognize these methods as referring to the same property.
-        Instead, the language will think you have a read-only property named
-        "foo" and a write-only property named "bar".</li>
-    <li><em>Using more than one setter method with the same
-        name</em> - The Java language lets you "overload" methods, as long
-        as the argument types are different.  For example, you could have a
-        <code>setStartDate(java.util.Date date)</code> method and a
-        <code>setStartDate(String date)</code> method in the same class, and
-        the compiled code would know which method to call based on the
-        parameter type being passed.  However, doing this for form bean
-        properties will prevent Java from recognizing that you have a
-        "startDate" property at all.</li>
-    </ul>
-
-    <p>There are other rules to follow if you want other features of your
-    form beans to be exposed.  These include indexed attributes and mapped
-    attributes.  They are covered in detail in other areas of the Struts
-    documentation, in particular:</p>
-    
-    <a href="indexedprops.html">indexedprops.html</a>
-    
-
-    <p>For a complete explanation of what a JavaBean is, and everything it can
-    do, see the JavaBeans Specification (version 1.01) at:</p>
-    
-    <a href="http://java.sun.com/products/javabeans/docs/beans.101.pdf">
-    http://java.sun.com/products/javabeans/docs/beans.101.pdf</a>
-    
-
-</section>
-
-
-<section href="separate"
-      name="Do I have to have a separate ActionForm bean for every HTML form?">
-
-    <p>This is an interesting question.  As a newbie, it is a good
-    practice to create a new <code>ActionForm</code> for each action
-    sequence.  You can use <code>DynaActionForm</code>s to help reduce
-    the effort required, or use the code generation facilities of your
-    IDE.</p>
-
-    <p>Some issues to keep in mind regarding reuse of form beans
-    are as follows:</p>
-    <ul>
-    <li><em>Validation</em> - You might need to use different
-        validation rules depending upon the action that is currently
-        being executed.</li>
-    <li><em>Persistence</em> - Be careful that a form populated in
-        one action is not <strong>unexpectedly</strong> reused in a
-        different action.  Multiple <code>&lt;form-bean&gt;</code>
-        entries in <code>struts-config.xml</code> for the same
-        <code>ActionForm</code> subclass can help (especially if you
-        store your form beans in session scope).  Alternatively,
-        storing form beans in request scope can avoid unexpected
-        interactions (as well as reduce the memory footprint of your
-        application, because no server-side objects will need to be
-        saved in between requests.</li>
-    <li><em>Checkboxes</em> - If you do as recommended and reset
-        your boolean properties (for fields presented as checkboxes),
-        and the page you are currently displaying does not have a
-        checkbox for every boolean property on the form bean, the
-        undisplayed boolean properties will always appear to have a
-        <code>false</code> value.</li>
-    <li><em>Workflow</em> - The most common need for form bean
-        reuse is workflow.  Out of the box, Struts has limited support
-        for workflow, but a common pattern is to use a single form bean
-        with all of the properties for all of the pages of a workflow.
-        You will need a good understanding of the
-        environment (<code>ActionForm</code>s, <code>Action</code>s,
-        etc.) prior to being able to put together a smooth workflow
-        environment using a single form bean.</li>
-    </ul>
-
-    <p>As you get more comfortable, there are a few shortcuts you can
-    take in order to reuse your <code>ActionForm</code> beans.  Most of
-    these shortcuts depend on how you have chosen to implement your
-    <code>Action</code> / <code>ActionForm</code> combinations.</p>
-
-</section>
-
-
-<section href="prepopulate"
-         name="How can I prepopulate a form?">
-
-    <p>The simplest way to prepopulate  a form is to have an <code>Action</code>
-    whose sole purpose is to populate an <code>ActionForm</code> and forward
-    to the servlet or JSP to render that form back to the client.  A separate
-    <code>Action</code> would then be use to process the submitted form fields,
-    by declaring an instance of the same form bean name.</p>
-
-    <p>The <em>struts-example</em> example application that is shipped
-    with Struts illustrates this design pattern nicely.  Note the following
-    definitions from the <code>struts-config.xml</code> file:</p>
-    <pre>
-        ...
-        &lt;form-beans&gt;
-            ...
-            &lt;-- Registration form bean --&gt;
-            &lt;form-bean name="registrationForm"
-                       type="org.apache.struts.webapp.example.RegistrationForm"/&gt;
-            ...
-        &lt;/form-beans&gt;
-        ...
-        &lt;action-mappings&gt;
-            ...
-            &lt;-- Edit user registration --&gt;
-            &lt;action path="/editRegistration"
-                    type="org.apache.struts.webapp.example.EditRegistrationAction"
-                    name="registrationForm"
-                   scope="request"
-                validate="false"/&gt;
-            ...
-            &lt;-- Save user registration --&gt;
-            &lt;action path="/saveRegistration"
-                    type="org.apache.struts.webapp.example.SaveRegistrationAction"
-                    name="registrationForm"
-                   input="registration"
-                   scope="request"/&gt;
-            ...
-        &lt;/action-mappings&gt;
-    </pre>
-
-    <p>Note the following features of this approach:</p>
-    <ul>
-    <li>Both the <code>/editRegistration</code> and
-        <code>/saveRegistration</code> actions use the same form bean.</li>
-    <li>When the <code>/editRegistration</code> action is entered, Struts
-        will have pre-created an empty form bean instance, and passed it to
-        the <code>execute()</code> method.  The setup action is free to
-        preconfigure the values that will be displayed when the form is
-        rendered, simply by setting the corresponding form bean properties.
-        </li>
-    <li>When the setup action completes configuring the properties of the
-        form bean, it should return an <code>ActionForm</code> that points
-        at the page which will display this form.  If you are using the
-        Struts JSP tag library, the <code>action</code> attribute on your
-        &lt;html:form&gt; tag will be set to <code>/saveRegistration</code>
-        in order for the form to be submitted to the processing action.</li>
-    <li>Note that the setup action (<code>/editRegistration</code>) turns off
-        validation on the form that is being set up.  You will normally want
-        to include this attribute in the configuration of your setup actions,
-        because you are not planning to actually process the results -- you
-        simply want to take advantage of the fact that Struts will precreate
-        a form bean instance of the correct class for you.</li>
-    <li>The processing action (<code>/saveRegistration</code>), on the other
-        hand, leaves out the <code>validate</code> attribute, which defaults
-        to <code>true</code>.  This tells Struts to perform the validations
-        associated with this form bean before invoking the processing action
-        at all.  If any validation errors have occurred, Struts will forward
-        back to your input page (technically, it forwards back to an
-        <code>ActionForward</code> named "registration" in this case, because
-        the example webapp uses the <code>inputForward</code> attribute in the
-        <code>&lt;controller&gt;</code> element -- see the documentation
-        describing <code>struts-config.xml</code> for more information)
-        instead of calling your processing action.</li>
-    </ul>
-
-</section>
-
-<section href="noForm" name="Can I have an Action without a form?">
-<p>
-Yes. If your <code>Action</code> does not need any data and it does not need to make any
-data available to the view or controller component that it forwards to, it doesn't need
-a form. A good example of an <code>Action</code> with no <code>ActionForm</code> is the
-<code>LogoffAction</code> in the struts example application:</p>
-<pre>
-    &lt;action path="/logoff"
-        type="org.apache.struts.webapp.example.LogoffAction"&gt;
-      &lt;forward name="success" path="/index.jsp"/&gt;
-    &lt;/action&gt;
-</pre>
-<p>
-This action needs no data other than the user's session, which it can get from the
-<code>Request</code>, and it doesn't need to prepare any view elements for display,
-so it does not need a form.
-</p>
-
-    <p>
-    However, you cannot use the &lt;html:form&gt; <strong>tag</strong> without an ActionForm.
-    Even if you want to use the &lt;html:form&gt; tag with a simple Action that does not require input,
-    the tag will expect you to use some type of ActionForm, even if it is an empty subclass without any properties.
-    </p>
-
-</section>
-
-<section href="requiredif"
-         name="Can you give me a simple example of using the requiredif Validator rule?">
-     <p>First off, there's an even newer Validator rule called <code>validwhen</code>,
-     which is almost certainly what you want to use, since it is much easier and
-     more powerful.  It will be available in the first release after 1.1 ships.
-     The example shown below could be coded with validwhen as:</p>
-<pre>
-&lt;form name="medicalStatusForm"&gt;
-
-&lt;field
-    property="pregnancyTest" depends="validwhen"&gt;
-  &lt;arg0 key="medicalStatusForm.pregnancyTest.label"/&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;test&lt;/var-name&gt;
-    &lt;var-value&gt;((((sex == 'm') OR (sex == 'M')) AND (*this* == null)) OR (*this* != null))&lt;/test&gt;
-  &lt;/var&gt;
-&lt;/field&gt;
-</pre>
-     <p>Let's assume you have a medical information form with three fields, sex, pregnancyTest, and testResult.
-     If sex is 'f' or 'F', pregnancyTest is required.  If pregnancyTest is not blank, testResult is required.
-     The entry in your validation.xml file would look like this:
-     </p>
-     <pre>
-&lt;form name="medicalStatusForm"&gt;
-
-&lt;field
-    property="pregnancyTest" depends="requiredif"&gt;
-  &lt;arg0 key="medicalStatusForm.pregnancyTest.label"/&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;field[0]&lt;/var-name&gt;
-    &lt;var-value&gt;sex&lt;/var-value&gt;
-  &lt;/var&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;fieldTest[0]&lt;/var-name&gt;
-    &lt;var-value&gt;EQUAL&lt;/var-value&gt;
-  &lt;/var&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;fieldValue[0]&lt;/var-name&gt;
-    &lt;var-value&gt;F&lt;/var-value&gt;
-  &lt;/var&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;field[1]&lt;/var-name&gt;
-    &lt;var-value&gt;sex&lt;/var-value&gt;
-  &lt;/var&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;fieldTest[1]&lt;/var-name&gt;
-    &lt;var-value&gt;EQUAL&lt;/var-value&gt;
-  &lt;/var&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;fieldValue[1]&lt;/var-name&gt;
-    &lt;var-value&gt;f&lt;/var-value&gt;
-  &lt;/var&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;fieldJoin&lt;/var-name&gt;
-    &lt;var-value&gt;OR&lt;/var-value&gt;
-  &lt;/var&gt;
-&lt;/field&gt;
-
-&lt;field
-    property="testResult" depends="requiredif"&gt;
-  &lt;arg0 key="medicalStatusForm.testResult.label"/&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;field[0]&lt;/var-name&gt;
-    &lt;var-value&gt;pregnancyTest&lt;/var-value&gt;
-  &lt;/var&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;fieldTest[0]&lt;/var-name&gt;
-    &lt;var-value&gt;NOTNULL&lt;/var-value&gt;
-  &lt;/var&gt;
-&lt;/field&gt;
-&lt;/form&gt;
-</pre>
-</section>
-
-<section href="validate" name="When is the best time to validate input?">
-<p>
-This is an excellent question.  Let's step back a second and think about a
-typical mid to large size application.  If we start from the back end and work
-toward the view we have:
-</p>
-<p>
-1) Database:  Most modern databases are going to validate for required
-fields, duplicate records, security constraints, etc.</p>
-<p>
-2) Business Logic:  Here you are going to check for valid data relationships
-and things that make sense for the particular problem you are triing to
-solve.</p>
-<p>
-... This is where struts comes into the picture, by now the system should be
-pretty well bulletproof.  What we are going to do is make validation friendlier
-and informative.  Rember it is OK to have duplicate validations...</p>
-<p>
-3) <code>ActionErrors validate(ActionMapping map, HttpServletRequest req)</code>
-is where you can do your validation and feed back to the view,
-information required to correct any errors.  <code>validate</code> is run after
-the form has been <code>reset</code> and after the <code>ActionForm</code>
-properties have been set from corresponding view based input. Also remember you
-can turn validation off with <code>validate="false"</code> in the
-<code>action</code> mapping in the <code>struts-config.xml</code>. This is done
-by returning an <code>ActionErrors</code> collection with messages from your
-<code>ApplicationResources.properties</code> file.</p>
-<p>
-Here you have access to the request so you can see what kinds of action is
-being requested to fine tune your validations.  The &lt;html:error&gt; tag
-allows you to dump all errors on your page or a particular error associated
-with a particular property.  The <code>input</code> attribute of the
-<code>struts-config.xml</code> <code>action</code> allows you to send
-validation errors to a particular jsp / html / tile page.</p>
-<p>
-4) You can have the system perform low level validations and client side
-feedback using a <code>ValidatorForm</code> or its derivatives.  This will
-generate javascript and give instant feedback to the user for simple data entry
-errors.  You code your validations in the <code>validator-rules.xml</code>
-file.  A working knowledge of
-<a href="http://etext.lib.virginia.edu/helpsheets/regex.html">regular
-expressions</a> is necessary to use this feature effectively.  For more
-information, see
-<a href="../userGuide/dev_validator.html">
-User Guide</a></p>
-</section>
-
-<section href="avoidValidate"
-         name="How can I avoid validating a form before data is entered?">
-    <p>
-    The simplest way is to have two actions.  The first one has the job of setting
-    the form data, i.e. a blank registration screen.  The second action in our
-    writes the registration data to the database. Struts
-    would take care of invoking the validation and returning the user to the
-    correct screen if validation was not complete.
-    </p>
-
-    <p>
-    The EditRegistration action in the struts example application illustrates this:
-    </p>
-
-        <pre><code>
-    &lt;action path="/editRegistration"
-         type="org.apache.struts.webapp.example.EditRegistrationAction"
-         attribute="registrationForm"
-         scope="request"
-         validate="false"&gt;
-      &lt;forward name="success  path="/registration.jsp"/&gt;
-    &lt;/action&gt;
-        </code></pre>
-
-<p>
-When the /editRegistration action is invoked, a registrationForm is created and added to the request,
-but its validate method is not called. The default value of the <code>validate</code> attribute is
-<code>true</code>, so if you do not want an action to trigger form validation, you need to remember
-to add this attribute and set it to <code>false</code>.
-</p>
-
-</section>
-
-<section href="wizard" name="How can I create a wizard workflow?">
-    <p>
-        The basic idea is a series of actions with next, back, cancel
-        and finish actions with a common bean.  Using a LookupDispatchAction is
-        reccomended as it fits the design pattern well and can be internationalized
-        easily.  Since the bean is shared, each choice made will add data to the
-        wizards base of information.  A sample of struts-config.xml follows:
-    </p>
-
-    <pre><code>
-            &lt;form-beans&gt;
-                &lt;form-bean  name="MyWizard"
-                            type="forms.MyWizard" /&gt;
-            &lt;/form-beans&gt;
-
-        &lt;!-- the first screen of the wizard (next action only available) --&gt;
-        &lt;!-- no validation, since the finish action is not available --&gt;
-            &lt;actions&gt;
-                &lt;action path="/mywizard1"
-                        type="actions.MyWizard"
-                        name="MyWizard"
-                        validate="false"
-                        input="/WEB-INF/jsp/mywizard1.jsp"&gt;
-                    &lt;forward name="next"
-                        path="/WEB-INF/jsp/mywizard2.jsp" /&gt;
-                    &lt;forward name="cancel"
-                        path="/WEB-INF/jsp/mywizardcancel.jsp" /&gt;
-                &lt;/action&gt;
-
-                &lt;!-- the second screen of the wizard (back, next and finish) --&gt;
-                &lt;!-- since finish action is available, bean should validated, note
-        validation should not necessarily validate if back action requested, you
-        might delay validation or do conditional validation --&gt;
-                &lt;action path="/mywizard2"
-                        type="actions.MyWizard"
-                        name="MyWizard"
-                        validate="true"
-                        input="/WEB-INF/jsp/mywizard2.jsp"&gt;
-                    &lt;forward name="back"
-                        path="/WEB-INF/jsp/mywizard1.jsp" /&gt;
-                    &lt;forward name="next"
-                        path="/WEB-INF/jsp/mywizard3.jsp" /&gt;
-                    &lt;forward name="finish"
-                        path="/WEB-INF/jsp/mywizarddone.jsp" /&gt;
-                    &lt;forward name="cancel"
-                        path="/WEB-INF/jsp/mywizardcancel.jsp" /&gt;
-                &lt;/action&gt;
-
-                &lt;!-- the last screen of the wizard (back, finish and cancel only) --&gt;
-                &lt;action path="/mywizard3"
-                        type="actions.MyWizard"
-                        name="MyWizard"
-                        validate="true"
-                        input="/WEB-INF/jsp/mywizard3.jsp"&gt;
-                    &lt;forward name="back"
-                        path="/WEB-INF/jsp/mywizard2.jsp" /&gt;
-                    &lt;forward name="finish"
-                        path="/WEB-INF/jsp/mywizarddone.jsp" /&gt;
-                    &lt;forward name="cancel"
-                        path="/WEB-INF/jsp/mywizardcancel.jsp" /&gt;
-                &lt;/action&gt;
-    </code></pre>
-
-   <p>
-        The pieces of the wizard are as follows:
-    </p>
-
-    <p>
-        <strong>forms.MyWizard.java</strong> - the form bean holding the information required
-    </p>
-    <p>
-        <strong>actions.MyWizard.java</strong> - the actions of the wizard, note the use of
-        LookupDispatchAction allows for one action class with several methods.  All the
-        real work will be done in the 'finish' method.
-    </p>
-    <p>
-        <strong>mywizard[x].jsp</strong> - the data collection jsp's
-    </p>
-    <p>
-        <strong>mywizarddone.jsp</strong> - the 'success' page
-    </p>
-    <p>
-        <strong>mywizardcancel.jsp</strong> - the 'cancel' page
-    </p>
-
-</section>
-
-    <section href="chaining" name="How can I 'chain' Actions?">
-    <p>
-        Chaining actions can be done by simply using the proper mapping in your
-        forward entries in the struts-config.xml file. Assume you had the following
-        two classes:
-    </p>
-    <pre><code><![CDATA[
-    /* com/AAction.java */
-    ...
-
-    public class AAction extends Action
-    {
-        public ActionForward
-                execute(ActionMapping mapping,
-                        ActionForm form,
-                        HttpServletRequest request,
-                        HttpServletResponse response) throws
-                                                      Exception
-        {
-            // Do something
-
-            return mapping.findForward("success");
-        }
-    }
-    ]]></code></pre>
-    <pre><code><![CDATA[
-    /* com/BAction.java */
-    ...
-
-    public class BAction extends Action
-    {
-        public ActionForward
-                execute(ActionMapping mapping,
-                        ActionForm form,
-                        HttpServletRequest request,
-                        HttpServletResponse response) throws
-                                                      Exception
-        {
-            // Do something else
-
-            return mapping.findForward("success");
-        }
-    }
-    ]]></code></pre>
-
-       <p>
-       Then you can chain together these two actions with the Struts
-       configuration as shown in the following excerpt:
-       </p>
-
-    <pre><code><![CDATA[
-    ...
-    <action-mappings type="org.apache.struts.action.ActionMapping">
-       <action path="/A"
-               type="com.AAction"
-               validate="false">
-          <forward name="success" path="/B.do" />
-       </action>
-       <action path="/B"
-               type="com.BAction"
-               scope="session"
-               validate="false">
-          <forward name="success" path="/result.jsp" />
-       </action>
-    </action-mappings>
-    ...
-    ]]></code></pre>
-
-       <p>
-       Here we are assuming you are using a suffix-based (<code>.do</code>) servlet
-       mapping, which is recommended since module support requires it. When you
-       send your browser to the web application and name the action
-       <code>A.do</code> (i.e. <code>http://localhost:8080/app/A.do</code>) it will
-       execute <code>AAction.execute()</code>, which will then forward to the
-       "success" mapping.
-       </p>
-
-       <p>
-       This causes the execution of <code>BAction.execute()</code> since the
-       <code>&lt;forward&gt;</code> entry for "success" in the configuration file
-       uses the <code>.do</code> suffix.
-       </p>
-
-       <p>
-       Of course it is also possible to chain actions programmatically, but the
-       power and ease of being able to "reroute" your web application's structure
-       using the XML configuration file is much easier to maintain.
-       </p>
-
-        <p>
-    As a rule, chaining Actions is <strong>not</strong> recommended.
-    If your business classes are properly factored, you should be able to call
-    whatever methods you need from any Action, without splicing them together
-    into a cybernetic Rube Goldberg device.
-        </p>
-
-        <p>
-    If you must chain Actions, be aware of the following:
-    calling the second Action from the first Action has the same effect as calling the second
-    Action from scratch.
-    If both of your Actions change the properties of a formbean,
-    the changes made by the first Action will be lost because Struts calls the reset() method on
-    the formbean when the second Action is called.
-        </p>
-
-</section>
-
-<section
-    href="undocumented"
-    name="If you would like to contribute, here is a list of
-    popular but undocumented questions">
-
-    <ul>
-
-    <li>How can I capture binary or formatted values, like dates or telephone numbers?</li>
-
-    <li>Why do my option lists disappear when validation fails?</li>
-
-    <li>Why can't I disable URL-encoding in the Struts taglibs?</li>
-
-    <li>Can I create dynamic ActionForwards?</li>
-
-    <li>How can I use my own (ActionForm, ActionForward, ActionMapping, ActionServlet) class?</li>
-
-    </ul>
-
-</section>
-
-</body></document>
diff --git a/build-legacy/core/xdocs/faqs/project.xml b/build-legacy/core/xdocs/faqs/project.xml
deleted file mode 100644
index 414ec94..0000000
--- a/build-legacy/core/xdocs/faqs/project.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<project 
-    name="Apache Struts Web Application Framework"
-    href="http://jakarta.apache.org/struts"
-    image="images/struts.gif"
-    authors="false">
-
-    <title>Apache Struts Web Application Framework</title>
-
-    <menu name="FAQs">
-        <item 
-            href="kickstart.html" 
-            name="Kickstart"/>
-        <item 
-            href="newbie.html" 
-            name="Newbie"/>
-        <item 
-            href="helping.html" 
-            name="How to Help"/>
-    </menu>
-
-    <menu name="Howto Guides">
-        <item 
-            href="actionForm.html" 
-            name="Action Forms"/>
-        <item 
-            href="apps.html" 
-            name="Building Apps"/>
-        <item 
-            href="database.html" 
-            name="Database"/>
-        <item 
-            href="indexedprops.html" 
-            name="Indexed Properties"/>
-        <item 
-            href="ssl.html" 
-            name="SSL"/>
-
-        <item
-            href="struts-el.html"
-            name="Struts-EL (JSTL)"/>
-    </menu>
-
-    <menu name="IDE Guides">
-        <item 
-            href="eclipse.html" 
-            name="Eclipse"/>
-        <item 
-            href="netbeans.html" 
-            name="Netbeans"/>
-    </menu>
-
-    <menu name="Quick Links">
-        <item 
-            name="Welcome"                 
-            href="../index.html"/>
-
-        <item
-        	name="User and Developer Guides"
-            href="../userGuide/index.html"
-            />
-    </menu>
-
-</project>
-
-
-
-
-
-
diff --git a/build-legacy/core/xdocs/faqs/ssl.xml b/build-legacy/core/xdocs/faqs/ssl.xml
deleted file mode 100644
index cd1fa55..0000000
--- a/build-legacy/core/xdocs/faqs/ssl.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-<?xml version="1.0"?>
-
-<document url="./ssl.xml">
-
-<properties>
-
-
-<title>Secure Socket Layer and Web Applications - Apache Struts</title>
-
-</properties>
-
-<body>
-
-<section href="ssl" name="Secure Socket Layer and Web Applications"/>
-
-<section href="overview" name="Overview">
-
-<p>
-Many web applications, especially those deployed for e-commerce, necessitate the
-transmission of sensitive data between the web server and the client browser.  This data
-may include passwords, credit card numbers, bank account numbers or any other
-information that users would not want to divulge to the general public. To protect
-sensitive data during transmission, application developers typically use the Secure
-Sockets Layer (SSL) and its companion protocol, HTTP over Secure Sockets Layer
-(HTTPS). HTTPS employs SSL to protect data by encrypting it at the source, be it the
-server or the client, and decrypting it at the destination. This prevents anyone monitoring
-Internet data transmissions from easily capturing this data. The client and server
-exchange public keys to enable encryption and decryption to occur.
-</p>
-
-<p>
-The encryption/decryption process comes at a performance price, however. The
-throughput of data for a web server transmitting via HTTPS is often as little as one-tenth
-that of data transmission via HTTP. For this reason, it is undesirable to deploy an entire
-web application under SSL. For fastest performance, it is best to deploy a web
-application under HTTP and employ HTTPS only for those pages and processes that
-transmit sensitive data.
-</p>
-
-</section>
-
-<section href="mixing" name="Mixing Protocols in Web Applications">
-
-<p>
-Switching back and forth between the two protocols can require hard-coding the protocol
-and full URL in every link to each resource in the web application. This creates an
-ongoing maintenance headache for developers each time a server name changes or secure
-protocol requirements change for resources in the web app.
-</p>
-
-<p>
-Another significant hazard is that there is nothing to prevent a user from specifying the
-wrong protocol by manually entering a URL into the browser. The penalty for manually
-specifying HTTPS for a page or servlet that does not require HTTPS is reduced
-performance. Far worse is the penalty for manually specifying HTTP for non-secure
-access of a page that does require HTTPS: public exposure of sensitive data.
-</p>
-
-</section>
-
-<section href="help" name="Help from Deployment Descriptor">
-
-<p>
-To help overcome the problem of non-secure access of sensitive data, the Java Servlet
-Specification (versions 2.2 and 2.3) defines the transport-guarantee element of the
-web.xml deployment descriptor file. The transport-guarantee element must specify one
-of three types of protection for communication between client and server: NONE,
-INTEGRAL, or CONFIDENTIAL. For most containers a specification of INTEGRAL
-or CONFIDENTIAL is treated as a requirement for SSL usage. Web application
-containers will prevent users from accessing web resources over HTTP if they have been
-so specified.
-</p>
-
-<p>
-The implementation for blocking HTTP access to web resources specified as INTEGRAL
-or CONFIDENTIAL varies from container to container. If a user attempts to access such
-a resource over HTTP, some containers will present that user with an error message
-instructing them to use the HTTPS protocol for accessing the requested resource. Other
-containers will actually redirect the request using the HTTPS protocol, but then continue
-using the HTTPS protocol for all subsequent requests, even those for resources with a
-transport-guarantee specification of NONE.
-</p>
-
-</section>
-
-<section href="sslext" name="The sslext Struts Extension">
-
-<p>
-An extension to Struts 1.1, named sslext, helps solve many of these issues for Struts
-developers. It extends the ActionConfig class, RequestProcessor, and Plugin classes to
-define a framework where developers may specify the transmission protocol behavior for
-Struts applications. Within the Struts configuration file, developers specify which action
-requests require HTTPS transmission and which should use HTTP. Developers can also
-specify whether to redirect "improperly-protocoled" requests to the correct protocol.
-</p>
-
-<p>
-In addition to these extensions, the &lt;html:link> and the &lt;html:form> tags have been
-extended. In these extensions, the Struts actions specified in either of these tags are
-analyzed to determine the protocol that should be used in requesting that action. The
-HTML generated by these tags will specify the proper protocol. An additional custom
-tag is defined for allowing users to specify the transmission protocol for an individual
-JSP. This is most often used for form-based authentication pages.
-</p>
-
-<p>
-The sslext library may be obtained from <a href="http://sslext.sourceforge.net">
-http://sslext.sourceforge.net</a>
-</p>
-
-</section>
-
-<section href="legacy" name="Legacy Browser Issue">
-
-<p>
-One additional complication faced by developers of web applications is that some
-browsers (e.g. pre-6.0 versions of Netscape Navigator) will treat requests to different
-protocols and ports on the same server as requests to different domains. This causes
-these browsers to initiate a new session each time a different protocol or port is specified
-in a request. This problem can only be solved at the container level. Some containers
-have a "session domain" or "cookie domain" configuration parameter to allow the session
-to be shared across different servers in the same domain. As an example, the Weblogic
-Server has a "CookieDomain" property configured in its weblogic.xml deployment
-descriptor. Thankfully, the effects of this problem are diminishing as people upgrade
-their browsers to the current versions.
-</p>
-
-</section>
-
-<section href="containers" name="Configuring Containers for SSL">
-
-The procedure for configuring SSL for a container will be specific to that container.  The
-procedure for enabling SSL for Tomcat can be found
-<a href="http://jakarta.apache.org/tomcat/tomcat-4.1-doc/ssl-howto.html">here</a>.
-
-</section>
-
-</body></document>
diff --git a/build-legacy/core/xdocs/faqs/struts-el.xml b/build-legacy/core/xdocs/faqs/struts-el.xml
deleted file mode 100644
index 759a801..0000000
--- a/build-legacy/core/xdocs/faqs/struts-el.xml
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0"?>
-<document url="./struts-el.xml">
-<properties>
-<title>Struts EL Extension - Apache Struts</title>
-</properties>
-<body>
-<section href="faq" name="Struts EL Extension"/>
-
-    <section href="Introduction" name="Introduction">
-
-    <p>
-        This subproject is an extension of the Struts tag library.  Each JSP custom tag
-       in this library is a subclass of an associated tag in the Struts tag library.
-       One difference is that this tag library does not use "rtexprvalues", it uses
-       the expression evaluation engine in the Jakarta Taglibs implementation of the
-       JSP Standard Tag Library (version 1.0) to evaluate attribute values.
-    </p>
-
-    <p>
-       In addition, some of the Struts tags were not ported to this library, as it was
-       determined that their functionality was entirely supplied by the JSTL.  These
-       particular Struts tags, and the reason for their non-porting will be described
-       in the documentation for this library.
-    </p>
-
-    <p>
-       In order to fully understand the correct utilization of this library, you must
-       understand the use and operation of the Struts tag library, and the use and
-       operation of the JavaServer Pages Standard Tag Library (hereafter called the
-       "JSTL"), along with the expression language (sometimes called the "EL") used
-       for evaluating attribute values.
-    </p>
-
-    </section>
-
-       <section href="TagMapping" name="Tag Mapping">
-
-    <p>
-       In implementing the Struts-EL library, every Struts tag that provides a feature
-       that is not covered by the JSTL (1.0) library is mapped into the Struts-EL
-       library.  This section reviews which Struts tags are NOT implemented in the
-       Struts-EL library, and which JSTL tags provide that feature.
-    </p>
-
-    <p>
-       Many of the non-porting decisions were based on the fact that the JSTL
-       expression language itself provides the same functionality.  In those cases, in
-       addition to a possible JSTL tag name, the symbol "EL" will be listed.
-    </p>
-
-    <p>
-       <strong> Bean Tag Library Tags NOT Implemented in Struts-EL</strong>
-    </p>
-
-    <table>
-    <tr><th>Struts Tag</th><th>JSTL Tag</th></tr>
-    <tr><td>cookie</td><td>c:set, EL</td></tr>
-    <tr><td>define</td><td>c:set, EL</td></tr>
-    <tr><td>header</td><td>c:set, EL</td></tr>
-    <tr><td>include</td><td>c:import</td></tr>
-    <tr><td>parameter</td><td>c:set, EL</td></tr>
-    <tr><td>write</td><td> c:out</td></tr>
-    </table>
-
-    <p>
-       <strong>Bean Tag Library Tags NOT Implemented in Struts-EL</strong>
-    </p>
-
-    <table>
-    <tr><th>Struts Tag</th><th>JSTL Tag</th></tr>
-    <tr><td>empty</td><td>c:if, c:when, EL</td></tr>
-    <tr><td>equal</td><td>c:if, c:when, EL</td></tr>
-    <tr><td>greaterEqual</td><td>c:if, c:when, EL</td></tr>
-    <tr><td>greaterThan</td><td>c:if, c:when, EL</td></tr>
-    <tr><td>lessEqual</td><td>c:if, c:when, EL</td></tr>
-    <tr><td>lessThan</td><td>c:if, c:when, EL</td></tr>
-    <tr><td>notEmpty</td><td>c:if, c:when, EL</td></tr>
-    <tr><td>notEqual</td><td>c:if, c:when, EL</td></tr>
-    </table>
-
-    <p>
-       (Note that the "iterate" tag was originally ported, even with the presence of
-       the "c:forEach" tag, as the "indexed tag" functionality was not supported when
-       using "c:forEach" instead of "logic:iterate".  This has since been rectified,
-       such that the "indexed tag" functionality checks for being contained in a
-       "c:forEach" tag, in addition to the "logic:iterate" tag.  However, the ported
-       "iterate" tag has not been removed from Struts-EL, for backward compatibility.)
-    </p>
-
-    <p>
-       <strong>Html Tag Library Tags NOT Implemented in Struts-EL</strong>
-    </p>
-
-    <p>
-       None (all of them were ported).
-    </p>
-
-    </section>
-
-    <section href="AttributeMapping" name="Attribute Mapping">
-
-    <p>
-       At this point of the implementation, there is only one change (to two similar
-       tags) to the set of attributes between the Struts tags, and the Struts-EL tags.
-       The "logic:match" and "logic:notMatch" tags have an additional attribute named
-       "expr", which can take any value, and will be used as the value to compare
-       against, in addition to the choices of "cookie", "header", "name"/"property",
-       and "parameter".
-    </p>
-
-    </section>
-
-    <section href="UsageRequirements" name="Usage Requirements">
-
-    <p>
-       The Struts-EL tag library requires the use of the Struts tag library, and the
-       Java Server Pages Standard Tag Library.  It is not necessary for JSP pages
-       using the Struts-EL tag library to also use the Struts tags or the JSTL tags,
-       but the Struts and JSTL tag libraries need to be part of the application
-       utilizing the Struts-EL tag library.
-    </p>
-
-    <p>
-       This is because the Struts-EL tag classes are all subclasses of Struts tag
-       classes, and their implementation uses classes provided by the JSTL.
-    </p>
-
-    </section>
-
-</body></document>
diff --git a/build-legacy/core/xdocs/faqs/works.xml b/build-legacy/core/xdocs/faqs/works.xml
deleted file mode 100644
index 2bc69a9..0000000
--- a/build-legacy/core/xdocs/faqs/works.xml
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0"?>
-<document url="./newbie.xml">
-<properties>
-<title>How Does Struts Work? - Apache Struts</title>
-</properties>
-<body>
-
-<section href="how" name="How does Struts work?">
-
-<p>
-    Java Servlets are designed to handle requests made by Web browsers.
-    Java ServerPages are designed to create dynamic Web pages that can turn billboard sites into live applications.
-    Struts uses a special Servlet as a switchboard to route requests from Web browsers to the appropriate ServerPage.
-    This makes Web applications much easier to design, create, and maintain.
-</p>
-
-<p>
-    Here is some more detail on the mechanisms and dependencies of Struts:
-</p>
-
-<ul>
-   <li>
-      The web application that you develop has a deployment descriptor
-      (<code>WEB-INF/web.xml</code>) which you must write. This file describes
-      the configuration of your web application, including welcome pages (the
-      file that is shown in a directory when none is specified by the request),
-      mappings to servlets (path or extension name), and parameters to those
-      servlets.<br/>
-
-      In this file, you configure the Struts
-      <a href="../api/org/apache/struts/action/ActionServlet.html"><code>ActionServlet</code></a>
-      as the servlet that will handle all requests for a given mapping (usually
-      the extension <code>.do</code>). This is the "switchboard" mentioned
-      above.<br/>
-
-      In this same file, you configure the <code>ActionServlet</code> to use
-      one or more configuration files for Struts itself.<br/>
-      For this text, assume we are installing the web application on the server
-      at <code>/myapp</code>, and are using the simplest possible configuration
-      from there.<br/>
-
-      If you need more details on deployment descriptors, read
-      the Servlet Specification available from Sun Microsystem's
-      <a href="http://java.sun.com">Java site</a>.<br/>
-   </li>
-   <li>
-      In the Struts configuration file(s), you associate paths with
-      the controller components of your application, known as
-      <a href="../api/org/apache/struts/action/Action.html"><code>Action</code></a>
-      classes (i.e. "login" ==&gt; LoginAction class). This tells the Struts
-      <code>ActionServlet</code> that when the incoming request is
-      <code>http://myhost/myapp/login.do</code> it should invoke your
-      controller component <code>LoginAction</code>.<br/>
-
-      Note the extension <code>.do</code> in this URL. The extension causes
-      your container (i.e.  Tomcat) to call the <code>ActionServlet</code>,
-      which sees the word "login" as the thing you want to do. The
-      configuration is referenced, and your <code>LoginAction</code> is
-      executed.<br/>
-   </li>
-   <li>
-      For each <code>Action</code>, you also configure Struts with the names of
-      the resulting page(s) that can be shown as a result of that action. There
-      can be more than one view as the result of an action (often, there are at
-      least two: one for success, and one for failure).<br/>
-
-      Your <code>Action</code> (the controller component you write) is based on
-      these <em>logical</em> result mapping names. It reports back to the
-      <code>ActionServlet</code> using words like "success", "failure",
-      "ready", "ok", "UserIsIncompetent", etc.  The Struts system (through the
-      configuration that you wrote) knows how to forward to the proper
-      <em>specific</em> page. This has the added advantage of reconfiguration of
-      the view layer by simply editing the Struts XML configuration file.<br/>
-
-      At this point Struts knows how to delegate to your controller components,
-      and what to show as a result of your controller processing. The "model"
-      part of the application is completely up to you, and is called from
-      within your controller components.
-   </li>
-   <li>
-      You may also associate a Java Bean with an action (or set of actions) in
-      the Struts configuration file. The Java Bean is used as a repository for
-      form or display data that can be communicated between the view and
-      controller layer.<br/>
-
-      These Beans are automatically made visible to your controller components
-      (like <code>LoginAction</code>) and any view page that is associated with
-      that controller. <br/>
-
-      These Beans can also be validated with the help of the Struts system to
-      help insure that the user is putting good data in the form. They can be
-      carried along with a session, allowing forms to span multiple pages of
-      the view, and Actions in the controller.<br/>
-
-      <strong>Note</strong>: You must be using some sort of server-side
-      technology (JSP, Velocity, XSLT) for the view layer (going <em>to</em> the
-      client) to see this data (plain HTML won't work). Struts works on the
-      server side, so the client's view has to be composed there.<br/>
-
-      The client feeds the data back through normal form submission (POST/GET)
-      methods, and the Struts system updates that data in the Bean before
-      calling your controller components.
-   </li>
-   <li>
-      Within your web application will be pages that represent the view your
-      users will see. These can be JSP pages, Velocity Templates,
-      XSLT pages, and so forth.
-      A set of JSP tags is bunded with the Struts distribution so that you
-      can get started right away, but any standard presentation technology
-      can be used with Struts.<br/>
-
-      Even plain HTML files can be used within your Struts application,
-      although they will not take full advantage of all of the dynamic
-      features.<br/>
-
-      Following the example of the Struts JSP taglibs, several other
-      packages are available to make the framework easy to use with your
-      favorite presentation technology.
-      For Velocity templates, there are the
-      <a href="http://jakarta.apache.org/velocity/">Velocity</a> ViewTools
-      for Struts.
-      If you want to use XSLT in you application, you can choose between
-      <a href="http://www.openroad.ca/opencode/">stxx</a> and
-      <a href="http://it.cappuccinonet.com/strutscx/">
-      StrutsCX</a>.<br/>
-
-      These packages make the standard Struts framework elements look and
-      feel like a seamless part of the original presentation technology.
-      Struts also makes it easy to mix and match.
-      If need be, you can use JSP, Velocity templates, and XSLT all in
-      the same application!<br/>
-
-      Since Struts relies on standard Servlet technologies, you should be
-      able to use any Java presentation technology with Struts.
-   </li>
-   <li>
-      While the focus of the Struts framework is on the controller,
-      the presentation layer is a significant part of any application.
-      The Struts JSP taglibs include a number of generic and Struts-specific
-      tags to help you use dynamic data in your view. <br/>
-
-      The custom JSP tags account for a good deal of the Struts code base. It
-      is educational to note that as of version 1.1b3 the Java code for the
-      core of Struts was about 28,000 lines, and the Java code for the tag
-      libraries (including tiles) was about 41,000 lines.<br/>
-
-      These tags help you glue your view layer to the controller layer without
-      having to embed a lot of Java in the JSP. This gives the page an XML
-      look, and can be easier for web designers to deal with than a plain JSP. It
-      also helps minimize dependencies between the controller and view.<br/>
-
-      The custom tags are used to create forms (and invisibly interact with the
-      Bean mentioned previously), logically forward to other pages, and invoke
-      other actions of the web application.<br/>
-
-      There are also tags that help you with internationalization, error
-      messages, etc.<br/>
-
-      All of these abilities depend in some way on the configuration files you
-      supplied to Struts.
-   </li>
-</ul>
-<p>
-   It is important for you to remember that the mechanism described here is
-   only in effect when the <code>ActionServlet</code> is handling the
-   request.
-</p>
-<p>
-   Since this only happens when a request is submitted that causes your
-   container (i.e. Tomcat, WebSphere, etc.) to call <code>ActionServlet</code>,
-   you must be sure that any page that relies on Struts is done through a
-   request that will map to the <code>ActionServlet</code> (i.e. has a
-   <code>.do</code> extension).
-</p>
- </section>
-
-</body></document>
diff --git a/build-legacy/core/xdocs/images/logos/struts-power.gif b/build-legacy/core/xdocs/images/logos/struts-power.gif
deleted file mode 100644
index 5f4e9d4..0000000
--- a/build-legacy/core/xdocs/images/logos/struts-power.gif
+++ /dev/null
Binary files differ
diff --git a/build-legacy/core/xdocs/images/struts-blue-1.gif b/build-legacy/core/xdocs/images/struts-blue-1.gif
deleted file mode 100644
index ad32937..0000000
--- a/build-legacy/core/xdocs/images/struts-blue-1.gif
+++ /dev/null
Binary files differ
diff --git a/build-legacy/core/xdocs/images/struts-blue-2.gif b/build-legacy/core/xdocs/images/struts-blue-2.gif
deleted file mode 100644
index 17fc396..0000000
--- a/build-legacy/core/xdocs/images/struts-blue-2.gif
+++ /dev/null
Binary files differ
diff --git a/build-legacy/core/xdocs/images/struts-blue-3.gif b/build-legacy/core/xdocs/images/struts-blue-3.gif
deleted file mode 100644
index 7ebba3a..0000000
--- a/build-legacy/core/xdocs/images/struts-blue-3.gif
+++ /dev/null
Binary files differ
diff --git a/build-legacy/core/xdocs/images/struts-blue.gif b/build-legacy/core/xdocs/images/struts-blue.gif
deleted file mode 100644
index dfb92f2..0000000
--- a/build-legacy/core/xdocs/images/struts-blue.gif
+++ /dev/null
Binary files differ
diff --git a/build-legacy/core/xdocs/index.xml b/build-legacy/core/xdocs/index.xml
deleted file mode 100644
index 9c490bb..0000000
--- a/build-legacy/core/xdocs/index.xml
+++ /dev/null
@@ -1,193 +0,0 @@
-<?xml version="1.0"?>
-<document>
-
-<properties>
-    <title>The Apache Struts Web Application Framework</title>
-</properties>
-
-<body>
-    
-    <section name="Welcome to Struts" href="Welcome">
-
-    <p>
-    Welcome to Struts!
-    The goal of this project is to provide an open source framework for 
-    building Java web applications.
-    </p>
-
-    <p>
-    The core of the Struts framework is a flexible control layer based on
-    <a href="userGuide/preface.html">standard technologies</a> like Java 
-    Servlets, JavaBeans, ResourceBundles, and XML, as well as various
-    <a href="http://jakarta.apache.org/commons/index.html">Jakarta Commons</a> packages.
-    Struts encourages application architectures based on the Model 2 approach,
-    a variation of the classic
-    <a href="http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/web-tier/web-tier5.html">
-    <strong>Model-View-Controller</strong></a> (MVC) design paradigm.
-    </p>
-
-    <p>
-        Struts provides its own <strong>Controller</strong> component and integrates with <a href="userGuide/preface.html#layers">
-        other technologies</a> to provide the Model and the View.
-
-        For the <strong>Model</strong>, Struts can interact with standard data access
-        technologies, like <a href="http://java.sun.com/products/jdbc/">JDBC</a> and
-        <a href="http://java.sun.com/products/ejb/">EJB</a>, as well as most any third-party packages, like
-        Hibernate, iBATIS, or Object Relational Bridge.
-
-        For the <strong>View</strong>, Struts works well with 
-        <a href="http://java.sun.com/products/jsp/">JavaServer Pages</a>, including
-        <a href="./faqs/kickstart.html#jsf">JSTL and JSF</a>, as well as Velocity Templates, XSLT, and
-        other presentation systems.
-    </p>
-
-    <p>
-    The Struts framework provides the invisible underpinnings every 
-    professional web application needs to survive.
-    Struts helps you create an extensible development environment for your 
-    application, based on published standards and proven design patterns.
-    </p>
-
-    <p>
-    Struts is part of the
-    <a href="http://jakarta.apache.org">Apache Jakarta Project</a>,
-    sponsored by the
-    <a href="http://www.apache.org">Apache Software Foundation</a>.
-    The official Struts home page is at
-    <a href="http://jakarta.apache.org/struts">
-    http://jakarta.apache.org/struts</a>.
-    </p>
-
-    <p>
-        Struts is a volunteer project and all support for the framework is provided by unpaid volunteers.
-        This documentation bundle and the mailing lists are the primary ways to learn how to use Struts.
-        The next few pages are devoted to helping you understand what resources are available to you.
-        Since Struts is a volunteer project, and our resources are limited, it is important that we first help you
-        help yourself.
-    </p>
-
-    </section>
-
-    <section name="Struts in a Nutshell" href="nutshell">
-
-        <p>
-            A <a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/WebApp.html">web application</a> uses a
-            deployment descriptor to initialize resources like <a href="userGuide/preface.html#servlets">servlets</a>
-            and <a href="userGuide/preface.html#jsp">taglibs</a>.
-            The deployment descriptor is formatted as a <a href="userGuide/preface.html#xml">XML</a> document and named
-            "web.xml".
-            Likewise, Struts uses a configuration file to initialize its own resources.
-            These resources include <a href="userGuide/building_controller.html#action_form_classes">ActionForms</a> to
-            collect input from users,
-            <a href="http://jakarta.apache.org/struts/userGuide/building_controller.html#actionmapping">
-            ActionMappings</a> to direct input to server-side
-            <a href="http://jakarta.apache.org/struts/userGuide/building_controller.html#action_classes">Actions</a>,
-            and ActionForwards to select output pages.
-        </p>
-
-        <p>
-            Here's a simple Struts configuration (struts-config.xml) for a login workflow:
-        </p>
-
-    <source><![CDATA[
-    <?xml version="1.0" encoding="ISO-8859-1" ?>
-    <!DOCTYPE struts-config PUBLIC
-              "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
-              "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
-    <struts-config>
-        <form-beans>
-            <form-bean
-                name="logonForm"
-                type="app.LogonForm"/>
-        </form-beans>
-        <action-mappings>
-            <action
-                path="/Welcome"
-                forward="/pages/Welcome.jsp"/>
-            <action
-                path="/Logon"
-                forward="/pages/Logon.jsp"/>
-            <action
-                path="/LogonSubmit"
-                type="app.LogonAction"
-                name="logonForm"
-                scope="request"
-                validate="true"
-                input="/Logon.do">
-                <forward
-                    name="success"
-                    path="/Welcome.do"/>
-                <forward
-                    name="failure"
-                    path="/Logon.do"/>
-            </action>
-            <action
-                path="/Logoff"
-                type="app.LogoffAction">
-                <forward
-                    name="success"
-                    path="/Welcome.do"/>
-            </action>
-        </action-mappings>
-        <message-resources parameter="resources.application"/>
-    </struts-config>
-    ]]></source>
-
-        <p>
-            There are several other resources you can specify in Struts configuration files.
-            You can specify validations for the ActionForms in an XML descriptor, using the
-            <a href="userGuide/dev_validator.html">Struts Validator</a>.
-            Another extension, <a href="userGuide/dev_tiles.html">Tiles</a>, helps you build pages from smaller
-            fragments.
-        </p>
-
-        <p>
-            Struts is an extensible framework.
-            Every class deployed by Struts can be replaced by your own default class.
-            The properties of your default class can be set using the
-            <a href="http://jakarta.apache.org/commons/digester/"> Digester's</a> <code>set-property</code> feature.
-            This is one reason why there are so many <a href="resources/extensions.html">contributor extensions</a> for
-            Struts.
-            Struts provides a base framework, but you can still write <b>your</b> application <b>your</b> way.
-        </p>
-
-        <p>
-            For more about Struts and its underlying technologies, see the <a href="userGuide/index.html">User
-            Guide</a> and the Developer Guides.
-        </p>
-
-    </section>
-
-    <section name="Is Struts the best choice for every project?">
-
-        <p>
-            No. If you need to write a very simple application, with a handful of pages,
-            then you might consider a "Model 1" solution that uses only server pages.
-        </p>
-
-        <p>
-            But, if you are writing a more complicated application, with dozens of pages,
-            that need to be maintained over time, then Struts can help. For more about
-            whether Model 1 or or MVC/Model 2 is right for you, see
-            <a href="http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html">Understanding JavaServer
-            Pages Model 2 architecture</a> and
-            <a href="http://www.scioworks.net/devnews/articles/struts_adoption_issues/index.html">
-            Issues in Struts Adoption</a>.
-        </p>
-
-    </section>
-
-    <section>
-        <p>
-        Next: <a href="learning.html">Learning About Struts</a>
-        </p>
-    </section>
-
-    <section>
-        <p>
-        <a href="faqs/kickstart.html#jsf">What about JSTL and JavaServer Faces?</a>
-        </p>
-    </section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/learning.xml b/build-legacy/core/xdocs/learning.xml
deleted file mode 100644
index 8129288..0000000
--- a/build-legacy/core/xdocs/learning.xml
+++ /dev/null
@@ -1,292 +0,0 @@
-<?xml version="1.0"?>
-<document url="./learning.xml">
-
-<!--
-// ======================================================================== 78
--->
-
-<properties>
-    <title>Learning - The Apache Struts Web Application Framework</title>
-</properties>
-
-<body>
-<section name="Learning About Struts" href="Docs">
-
-    <p>
-    The <strong>official documentation</strong> for the framework is provided both 
-    online and as a self-installing WAR in the distribution. 
-    The <code>struts-documentation.war</code> includes our 
-    </p>
-
-    <ul>
-    <li>
-    <a href="userGuide/index.html">User and Developer Guides</a>,
-    </li>
-    <li>
-    <a href="api/index.html">Comprehensive Javadocs</a>,
-    </li>
-    <li>
-    <a href="./faqs/index.html">FAQ and Howto Guides</a>,
-    </li>
-    <li>
-    and everything else you find here.
-    </li>
-    </ul>
-
-    <p>
-    You are invited to preview the documentation online and then install 
-    the application locally for closer study.
-    </p>
-
-    
-    <strong>NOTE:</strong> If you are previewing the documentation on the website, 
-    most of the links in this section will refer to the <strong>Nightly Build</strong>.
-    When learning about Struts, <strong>be sure to refer to the documentation for 
-    the version you are actually using</strong>. 
-    The documentation is bundled with each distribution as an application that 
-    you can install and use locally.
-    
-
-    <p>
-    The concise Struts <a href="userGuide/index.html"><strong>User Guide</strong></a> 
-    introduces the Model-View-Controller architecture, and how it relates to 
-    the major components of Struts.
-    If you want to find out "How Struts works", this is the place to start.
-    Along with an architectural overview, the User Guide also includes 
-    detailed installation instructions and release notes for each version of 
-    the framework.
-    </p>
-
-    <p>
-        Our <strong>Developer Guides</strong> are detailed technical references to the extensions and components provided in the
-        Struts distribution.
-        Included are package overviews and API reference for each of the Struts taglibs, along with guides to the
-        Struts Utilities and the Struts Validator.
-        The Developer Guides are designed as a day-to-day reference to help you get the most out of the standard
-        packages.
-        Links to the various Developer Guides are provided as part of
-        <a href="userGuide/index.html"><strong>User Guide</strong></a> menu.
-    </p>
-
-    <p>
-    For more detail about a specific class or package, the Struts 
-    <a href="api/index.html"><strong>Javadocs</strong></a> are <strong>surprisingly 
-    comprehensive and carefully maintained</strong>. 
-    It is <em>strongly</em> recommended that you refer to the 
-    <a href="api/index.html"> Javadoc</a> for each class as you begin to use 
-    it. 
-    This will help ensure that important features and options are not 
-    overlooked. 
-    <em>What you don't know, can't help you.</em>
-    </p>
-
-    <p id="faqs">
-    The Struts <strong>FAQs</strong> are designed to fill in any small gaps left by the 
-    Javadocs or the User and Developer Guides. 
-    </p>
-
-    <ul>
-    <li>The <a href="./faqs/kickstart.html">Kickstart FAQ</a> 
-    answers the most common non-technical questions people first ask about 
-    Struts. 
-    </li>
-    <li>
-    The <a href="./faqs/newbie.html">Struts Newbie FAQ</a> answers the most 
-    common technical questions asked by first-timer Struts developers. 
-    </li>
-    <li>
-    The <a href="./faqs/helping.html">How to Help FAQ</a> answers the most 
-    common questions about contributing to the Jakarta-Struts project. 
-    </li>
-    </ul>
-
-    <p id="howtos">
-    The <strong>Howto Guides</strong> are designed to help you get started with some of 
-    the optional extensions and components available for Struts. 
-    These include topics like using the Secure Socket Layer (SSL) protocol 
-    with Struts and how to unit test your Struts applications. 
-    </p>
-
-    <p>
-        The <a href="http://wiki.apache.org/struts"><strong>Struts Wiki</strong></a> is a
-        relatively new addition to the Struts documentation.
-        All members of the Struts Community are invited to post comments to the Wiki, as well as the User List.
-        The Wiki is best suited for threads that you think are of lasting importance, while the mailing lists are best
-        suited for incidental questions.
-    </p>
-
-    <p>
-        If you have any comments on the pages you see here, they can be posted to the Wiki by following the link on the
-        bottom of any page.
-    </p>
-
-    <p>
-        For more help, you might try the JGuru Struts knowledgebase at the <a href="http://jguru.com/faq/Struts">JGuru
-        FAQ</a> and <a href="http://jguru.com/forums/Struts">Forum</a>.
-
-    </p>
-    <p>
-    Of course, the only true documentation is the code itself. 
-    If you have any questions about how Struts actually works, do not hesitate 
-    to <em>use the source</em>. 
-    For the complete, buildable source code to the entire Struts framework, 
-    see the "src" folder in
-    <a href="http://jakarta.apache.org/site/sourceindex.html"><strong>your source 
-    distribution</strong></a>.
-    </p>
-
-</section>
-
-<section name="Struts by Example" href="Examples">
-
-    <p>
-        To help you see how it all fits together, several example applications are bundled with the Struts
-        distribution:
-    </p>
-
-    <ul>
-        <li>
-            Blank - A simple template for starting new Struts applications.</li>
-        <li>
-            Exercise-Taglib - A set of test pages that also demonstrate use of the custom tags.</li>
-        <li>
-            Documentation - The Struts documentation bundle, as seen on the website.</li>
-        <li>
-            <strong>MailReader</strong> - The original Struts example application. <em>Try me first!</em></li>
-        <li>
-            Tiles-Doc - Extensive demonstration of Tiles extension.</li>
-        <li>
-            Upload - Demonstrates using the file upload facilities. (Based on Commons Upload.)</li>
-        <li>
-            Validator - Demonstrates using the Validator extension.</li>
-    </ul>
-
-    <p>
-        These applications are provided as standalone WARs in the binary distribution.
-        The source code for each application is available under <code>WEB-INF/src</code> in the binaries and under the
-        <code>web</code> package in the source distribution.
-    </p>
-
-    <p>
-        There are also many third-party example applications available for study, including these:
-    </p>
-
-    <ul>
-        <li>
-            <a href="http://raibledesigns.com/wiki/Wiki.jsp?page=AppFuse">AppFuse</a> - Demonstrates using XDoclet with
-            Struts, along with different security packages and Hibernate for database persistence.
-        </li>
-        <li>
-            <a href="http://www.ibatis.com/jpetstore/jpetstore.html">JPetStore</a> - A streamlined version of the Java
-            Petstore application implemented with Struts and iBATIS database layer.
-        </li>
-        <li>
-           <a href="http://www.codeczar.com/products/logweb/index.html">LogWeb</a> - A Struts webapp for configuring
-            Log4J at runtime within a servlet container.
-        </li>
-    </ul>
-
-</section>
-
-<section name="Learning More About Struts" href="More">
-    <p>
-    The Struts <a href="using.html#Lists">Mailing Lists</a> are a treasure trove of 
-    useful, interactive information. The user list tends to carry a high 
-    volume, so always check the published documentation and the
-    <a href="http://mail-archives.apache.org/eyebrowse/SummarizeList?listId=42">
-    <strong>MAILING LIST ARCHIVE</strong></a> before 
-    <a href="http://www.catb.org/~esr/faqs/smart-questions.html">posting a
-    new question</a>.
-    Like as not, it's already been asked and answered.
-    </p>
-
-    <p>
-    If you really can't find the answer to your question in the 
-    <a href="#faqs">FAQs</a> or
-    <a href="http://mail-archives.apache.org/eyebrowse/SummarizeList?listId=42">
-    list archive</a>, you can post your query to the Struts User list -- 
-    <strong>BUT YOU MUST SUBSCRIBE TO THE 
-    <a href="mailto:struts-user-subscribe@jakarta.apache.org">USER LIST</a>
-    OR THE <a href="mailto:struts-user-digest-subscribe@jakarta.apache.org">
-    USER LIST DIGEST</a> BEFORE POSTING</strong>. </p>
-
-    <p>
-        Please note that the Struts User list enjoys a "casual friday" policy. 
-        More off-topic  messages are tolerated on Fridays so long as the 
-        message is prefixed with the token [FRIDAY]. 
-        If you'd rather not be troubled by these postings, please set your 
-        mail filter accordingly. 
-        Posting [FRIDAY] articles on any other weekday is <strong>strongly 
-        discouraged</strong>. 
-        We thank you for your cooperation.
-    </p>
-
-    <p>
-        The Struts <a href="http://wiki.apache.org/struts"><strong>Wiki</strong></a> is a relatively
-        new addition to our documentation.
-        Any member of the community (that means you!) is invited to post new material to the Wiki.
-        However, the Wiki is not the place to ask incidental questions.
-        <strong>All support questions should be directed to the <a href="using.html#Lists">Struts User list</a> or
-        other support forum</strong>.
-    </p>
-
-    <p>
-        There is also a set of Wiki pages devoted to comments on the documentation.
-        To comment on the documentation, follow the "Comments?" link at the bottom of any page.
-    </p>
-
-    <p>
-    The <a href="status.html#roadmap"><strong>Roadmap</strong></a> page outlines our tentative plans for future development.
-    </p>
-
-</section>
-
-    <section name="Struts Community Resources" href="resources">
-
-    <p>
-        Struts has attracted a large and robust community of developers.
-        Some of these developers have a created an independant SourceForge site to promote new extensions to the Struts framework.
-        As a service to our community, the Struts SourceForge site maintains an
-        <a href="http://struts.sf.net/community/index.html">extensive directory of Struts resources</a>. including.
-    </p>
-
-    <ul>
-        <li>
-            <a href="http://struts.sf.net/community/articles.html">articles</a>,
-        </li>
-
-    <li>
-        <a href="http://struts.sf.net/community/books.html">books</a>,
-    </li>
-
-        <li>
-            <a href="http://struts.sf.net/community/examples.html">sample applications</a>,
-        </li>
-
-        <li>
-            <a href="http://struts.sf.net/community/tutorials.html">tutorials</a>, and more!
-        </li>
-
-    </ul>
-
-</section>
-
-    <section name="Books about Struts" href="books">
-
-       <p>
-       The Apache Software Foundation does not provide printed manuals,
-       but several third-party books about Struts are available.
-       A current list of books about Struts is maintained by the
-       <a href="http://struts.sf.net/community/index.html">Struts Community Resources area</a>.
-       </p>
-
-    </section>
-
-    <section>
-        <p class="right">
-        Next: <a href="acquiring.html">Acquiring Struts</a>
-        </p>
-    </section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/navigation.xml b/build-legacy/core/xdocs/navigation.xml
deleted file mode 100644
index 475bf4a..0000000
--- a/build-legacy/core/xdocs/navigation.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<project name="Struts">
-
-  <title>Struts</title>
-  <organizationLogo href="http://jakarta.apache.org/images/jakarta-logo-blue.gif">Jakarta</organizationLogo>
-
-  <body>
-  
-    <menu name="Struts">
-      <item name="Welcome"                    href="index.html"/>
-      <item name="Learning"                   href="learning.html"/>
-      <item name="Acquiring"                  href="acquiring.html"/>
-      <item name="Using"                      href="using.html"/>
-      <item name="Who We Are"                 href="volunteers.html"/>
-      <item name="Announcements"              href="announce.html"/>  
-    </menu>
-  
-    <menu name="Documentation">
-      <item name="User and Developer Guides"  href="userGuide/index.html"/>
-      <item name="Javadoc"                    href="apidocs/index.html"/>
-      <item name="FAQs and Howtos"            href="faqs/index.html"/>
-    </menu>
-    
-    <menu name="User Guide">
-      <item name="Table of Contents"          href="userGuide/index.html"/>
-      <item name="Preface"                    href="userGuide/preface.html"/>
-      <item name="Introduction"               href="userGuide/introduction.html"/>
-      <item name="Model Components"           href="userGuide/building_model.html"/>
-      <item name="View Components"            href="userGuide/building_view.html"/>
-      <item name="Controller Components"      href="userGuide/building_controller.html"/>
-      <item name="Configuration"              href="userGuide/configuration.html"/>
-      <item name="Release Notes"              href="userGuide/release-notes.html"/>
-      <item name="Installation"               href="userGuide/installation.html"/>
-    </menu>
-
-    <menu name="Developer Guides">
-      <item name="Bean Tags"                  href="userGuide/dev_bean.html"/>
-      <item name="HTML Tags"                  href="userGuide/dev_html.html"/>
-      <item name="Logic Tags"                 href="userGuide/dev_logic.html"/>
-      <item name="Nested Tags"                href="userGuide/dev_nested.html"/>
-      <item name="Tiles Tags"                 href="userGuide/dev_tiles.html"/>
-      <item name="Utilities"                  href="userGuide/dev_util.html"/>
-      <item name="Validator"                  href="userGuide/dev_validator.html"/>
-    </menu>    
-  
-    <menu name="Community">
-      <item name="Known Issues (Bugzilla)"    href="http://jakarta.apache.org/site/bugs.html"/>
-      <item name="Wiki Pages"                 href="http://wiki.apache.org/struts"/>
-      <item name="List Archive"               href="http://mail-archives.apache.org/eyebrowse/SummarizeList?listId=42"/>
-      <item name="Resource Directory"         href="http://struts.sf.net/community/index.html"/>
-    </menu>
-
-    <menu name="Download">
-      <item name="Binaries"                   href="http://jakarta.apache.org/site/binindex.cgi"/>
-      <item name="Source Code"                href="http://jakarta.apache.org/site/sourceindex.cgi"/>
-    </menu>
-
-    <menu name="Development">
-    <!-- cvs-usage.html doesn't exist so I'm commenting this out
-      <item name="CVS Access"          href="cvs-usage.html"/>
-    -->  
-      <item name="Subversion Repository"             href="http://svn.apache.org/repos/asf/struts/core/trunk/"/>
-    <!-- Is there a Subversion equivalent? 
-      <item name="Subversion Changelog"              href="changelog-report.html"/>
-    -->  
-      <item name="File Activity"              href="file-activity-report.html"/>
-      <item name="Build Dependencies"         href="dependencies.html"/>
-      <item name="Release Guidelines"         href="releases.html"/>
-      <item name="Roadmap"                    href="status.html"/>
-    </menu>  
-  
-<!--  
-    <menu name="Struts">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Community"               href="/community.html"/>
-      <item name="To Do List"              href="/tasks.html"/>
-      <item name="Resources"               href="/resources.html"/>
-      <item name="Legacy" href="/index.html" collapse="true">   
-	      <item name="Api 1.0" href="/api-1.0/org/apache/struts/package-summary.html" collapse="true"/>
-	      <item name="Api 1.1" href="/api-1.1/org/apache/struts/package-summary.html" collapse="true"/>
-	  </item>
-    </menu>
--->
-    
-  </body>
-</project>
diff --git a/build-legacy/core/xdocs/project.xml b/build-legacy/core/xdocs/project.xml
deleted file mode 100644
index 3a0c6bd..0000000
--- a/build-legacy/core/xdocs/project.xml
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<project 
-    name="Struts Framework"
-        href="http://jakarta.apache.org/struts"
-       image="images/struts.gif">
-
-    <title>
-        Apache Struts Web Application Framework
-    </title>
-
-    <menu name="Struts">
-        <item 
-            name="Welcome"
-            href="index.html"
-            />
-        <item 
-            name="Learning"                
-            href="learning.html"
-            />
-        <item 
-            name="Acquiring"               
-            href="acquiring.html"
-            />
-        <item 
-            name="Using"                   
-            href="using.html"
-            />
-        <item
-            name="Who We Are"
-            href="volunteers.html"
-            />
-        <item
-            name="Announcements"
-            href="announce.html"
-            />
-</menu>
-
-    <menu name="Documentation">
-        <item
-            name="User and Developer Guides"
-            href="userGuide/index.html"
-            />
-        <item
-            name="Javadoc"
-            href="api/index.html"
-            />
-        <item
-            name="FAQs and Howtos"
-            href="faqs/index.html"
-            />
-    </menu>
-
-    <menu name="Community">
-        <item
-            name="Known Issues (Bugzilla)"
-            href="http://jakarta.apache.org/site/bugs.html"
-            />
-        <item
-            name="Wiki Pages"
-            href="http://wiki.apache.org/struts"
-            />
-        <item
-            name="List Archive"            
-            href="http://mail-archives.apache.org/eyebrowse/SummarizeList?listId=42"
-            />
-        <item
-            name="Resource Directory"
-            href="http://struts.sf.net/community/index.html"
-            />
-    </menu>
-
-    <menu name="Download">
-        <item 
-            name="Binaries"                
-            href="http://jakarta.apache.org/site/binindex.cgi"
-            />
-        <item 
-            name="Source Code"             
-            href="http://jakarta.apache.org/site/sourceindex.cgi"
-            />
-    </menu>
-
-    <menu name="Development">
-        <!-- Not sure what would go here for Subversion
-        <item name="CVS Access"  href="reports/cvs-usage.html"/>
-        -->
-        <item
-            name="Subversion Repository"
-            href="http://svn.apache.org/viewcvs.cgi/struts/core/trunk/?root=Apache-SVN/"
-            />
-        <!-- Again, is there a Subversion equivalent?     
-        <item name="CVS Changelog"  href="reports/changelog-report.html"/>
-        -->
-        <item name="File Activity"  href="reports/file-activity-report.html"/>
-        <item name="Build Dependencies"  href="reports/dependencies.html"/>
-        <item
-            name="Release Guidelines"
-            href="releases.html"
-            />
-        <item
-            name="Roadmap"
-            href="status.html"
-            />
-    </menu>
-
-</project>
diff --git a/build-legacy/core/xdocs/proposals/project.xml b/build-legacy/core/xdocs/proposals/project.xml
deleted file mode 100644
index cacbf28..0000000
--- a/build-legacy/core/xdocs/proposals/project.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<project name="Struts Framework"
-         href="http://jakarta.apache.org/struts/proposals"
-        image="images/struts.gif">
-
-    <title>Proposals - Apache Struts Framework</title>
-
-    <menu name="Struts">
-        <item name="Welcome"                 href="../index.html"/>
-	</menu>
-
-</project>
-
-
-
-
-
-
diff --git a/build-legacy/core/xdocs/proposals/release-plan-1.0.1.xml b/build-legacy/core/xdocs/proposals/release-plan-1.0.1.xml
deleted file mode 100644
index b9ca663..0000000
--- a/build-legacy/core/xdocs/proposals/release-plan-1.0.1.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0"?>
-<document url="./release-plan-1.0.1.xml">
-
-  <properties>
-    <title>Struts Release Plan (Version 1.0.1)</title>
-  </properties>
-
-  <body>
-
-
-  <section name="Objective" href="Objective">
-
-  <p>$Id$</p>
-
-  <p>The objective of the <strong>Struts 1.0.1</strong> release is to provide
-  an official release of all the bug fixes and documentation updates that have
-  been made to the STRUTS_1_0_BRANCH branch since the release of Struts 1.0.</p>
-
-  </section>
-
-
-  <section name="The Plan" href="Plan">
-
-  <p>Since the release of Struts 1.0, a number of important bugs have been
-  fixed, and some notable improvements have been made to the documentation.
-  Currently, these updates are available only to those people who are willing
-  to obtain the source code from CVS and build their own version of Struts.
-  This release will make these updates available in an official distribution,
-  thus making them available to a wider audience.</p>
-
-  <p>Therefore, the following release plan is proposed for Struts 1.0.1:
-  </p>
-  <ul>
-  <li><em>Code Freeze / Tag Date</em> - Wednesday, November 21, 2001</li>
-  <li><em>Release Manager</em> - Martin Cooper</li>
-  <li><em>Release Announcement</em> - To the following mailing lists and
-      web sites:
-      <ul>
-      <li>announcements@jakarta.apache.org</li>
-      <li>struts-dev@jakarta.apache.org</li>
-      <li>struts-user@jakarta.apache.org</li>
-      <li>jsp-interest@java.sun.com</li>
-      <li>servlet-interest@java.sun.com</li>
-      <li><a href="http://www.freshmeat.net">http://www.freshmeat.net</a></li>
-      </ul></li>
-  </ul>
-
-  </section>
-
-
-  <section name="Release Criteria" href="Criteria">
-
-  <p>Prior to the release of Struts 1.0.1, the following action items
-  must be completed:</p>
-  <ul>
-  <li>The Struts 1.0.1 Release Notes document shall be updated to describe
-      substantial changes and improvements since the Struts 1.0 release,
-      along with associated updates to the main Struts Documentation
-      Application pages describing the new release.</li>
-  <li>All of the Struts example applications that are included with the release
-      shall operate successfully in the following servlet containers:
-      <ul>
-      <li><a href="http://jakarta.apache.org/tomcat">Tomcat 3.2.3</a></li>
-      <li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.0.1</a></li>
-      </ul></li>
-  <li>A release vote shall take place on the <em>struts-dev</em> mailing list
-      to approve this plan.  The release vote MUST pass by "Majority Approval"
-      of Struts committers.</li>
-  </ul>
-
-  </section>
-
-
-  </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/proposals/release-plan-1.0b1.xml b/build-legacy/core/xdocs/proposals/release-plan-1.0b1.xml
deleted file mode 100644
index b3f0287..0000000
--- a/build-legacy/core/xdocs/proposals/release-plan-1.0b1.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0"?>
-<document url="./release-plan-1.0b1.xml">
-
-  <properties>
-    <title>Struts Release Plan (Version 1.0-beta-1)</title>
-  </properties>
-
-  <body>
-
-
-  <section name="Objective" href="Objective">
-
-  <p>$Id$</p>
-
-  <p>The objective of the <strong>Struts 1.0-beta-1</strong> release is to
-  create a milestone release against which a final series of bug fixes and
-  documentation updates can occur before a <strong>Struts 1.0 Final</strong>
-  release is created.</p>
-
-  </section>
-
-
-  <section name="The Plan" href="Plan">
-
-  <p>The code base for Struts has been in an informal "feature freeze" for
-  several weeks, while development focus has been on bug fixes and the
-  completion of required documentation.  Both of these goals have been
-  substantially achieved, so it is time for a formal beta release - with
-  the goal of moving quickly to a final <strong>Struts 1.0</strong> release
-  shortly thereafter, if no disabling defects are found.</p>
-
-  <p>Therefore, the following release plan is proposed for Struts 1.0-beta-1:
-  </p>
-  <ul>
-  <li><em>Code Freeze / Tag Date</em> - Wednesday, February 21, 2001</li>
-  <li><em>Release Manager</em> - Craig McClanahan</li>
-  <li><em>Release Announcement</em> - To the following mailing lists and
-      web sites:
-      <ul>
-      <li>ANNOUNCEMENTS@JAKARTA.APACHE.ORG</li>
-      <li>GENERAL@JAKARTA.APACHE.ORG</li>
-      <li>STRUTS-DEV@JAKARTA.APACHE.ORG</li>
-      <li>STRUTS-USER@JAKARTA.APACHE.ORG</li>
-      <li>JSP-INTEREST@JAVA.SUN.COM</li>
-      <li>SERVLET-INTEREST@JAVA.SUN.COM</li>
-      <li><a href="http://www.freshmeat.net">http://www.freshmeat.net</a></li>
-      </ul></li>
-  </ul>
-
-  </section>
-
-
-  <section name="Release Criteria" href="Criteria">
-
-  <p>Prior to the release of Struts 1.0-beta-1, the following action items
-  must be completed:</p>
-  <ul>
-  <li>All <a href="http://issues.apache.org/bugzilla/">Bugzilla</a> bug reports
-      against Struts 1.0 nightly builds MUST be marked as "Resolved", with any
-      of the legal Bugzilla resolutions (FIXED, INVALID, WONTFIX, LATER,
-      REMIND, WORKSFORME).</li>
-  <li>Bug reports that are resolved as LATER or REMIND will include comments
-      as to whether those specific issues will be dealt with in a subsequent
-      1.0 beta or final release, or whether they will be scheduled for
-      consideration in a subsequent release time frame.</li>
-  <li>Any remaining items on the Struts 1.0 TODO list shall be completed.</li>
-  <li>The Struts 1.0 Release Notes document shall be updated to describe
-      substantial changes and improvements since the Struts 0.5 release,
-      along with associated updates to the main Struts Documentation
-      Application pages describing the new release.</li>
-  <li>All of the Struts example applications that are included with the release
-      shall operate successfully in the following servlet containers:
-      <ul>
-      <li><a href="http://jakarta.apache.org/tomcat">Tomcat 3.2.1</a></li>
-      <li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.0</a> (Current
-          nightly build)</li>
-      </ul></li>
-  <li>A release vote shall take place on the STRUTS-DEV mailing list to
-      approve this plan.  The release vote MUST pass by "Majority Approval"
-      of Struts committers.</li>
-  </ul>
-
-  </section>
-
-
-  </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/proposals/release-plan-1.1.xml b/build-legacy/core/xdocs/proposals/release-plan-1.1.xml
deleted file mode 100644
index 0c21717..0000000
--- a/build-legacy/core/xdocs/proposals/release-plan-1.1.xml
+++ /dev/null
@@ -1,129 +0,0 @@
-<?xml version="1.0"?>
-<document url="./release-plan-1.1rc2.xml">
-
-    <properties>
-       <title>Struts Release Plan (Version 1.1)</title>
-     </properties>
-
-  <body>
-
-      <section name="Objective" href="Objective">
-
-          <p>
-              $Id$
-          </p>
-
-          <p>
-              The objective of the <strong>Struts 1.1 Final</strong> release is to provide
-              an official release of all the bug fixes and documentation updates that have
-              been made to the main trunk of the jakarta-struts CVS since the release of
-              Struts 1.0.2.
-          </p>
-
-      </section>
-
-      <section name="The Plan" href="Plan">
-
-          <p>
-              Only minor changes have been made to the codebase since the Struts 1.1
-              RC2 release.
-              Issues reported on the few oustanding tickets are either unconfirmed or
-              may be categorized as enhancements and can be resolved in short order.
-              Therefore it is time to make the latest code base available as the
-              Struts 1.1 Final Release.
-          </p>
-
-          <p>
-              The final release of Commons FileUpload has been approved and will be
-              available for distribution with Struts 1.1 Final, as required by the
-              Struts 1.1 RC2 release plan.
-          </p>
-
-          <p>
-              Therefore, the following release plan is proposed for Struts 1.1 Final:
-          </p>
-
-          <ul>
-              <li>
-                  <em>Code Freeze / Tag Date</em> - Saturday, June 28, 2003, 23:59:59
-              </li>
-              <li>
-                  <em>Release Manager</em> - Martin Cooper
-              </li>
-              <li>
-                  <em>Release Announcement</em> - To the following mailing lists:
-                  <ul>
-                      <li>announcements@jakarta.apache.org</li>
-                      <li>struts-dev@jakarta.apache.org</li>
-                      <li>struts-user@jakarta.apache.org</li>
-                  </ul>
-              </li>
-          </ul>
-
-          <p>
-              The release process shall follow the same
-              <a href="http://jakarta.apache.org/commons/releases/">general procedures</a>
-              established the Jakarta Commons products.
-          </p>
-
-      </section>
-
-      <section name="Release Criteria" href="Criteria">
-
-          <p>
-              Prior to the release of Struts 1.1 Final Release, the following
-              action items must be completed:
-          </p>
-
-          <ul>
-              <li>
-                  A release vote shall take place on the <em>struts-dev</em> mailing list
-                  to approve this plan. The release vote MUST pass by "Majority Approval"
-                  of Struts committers.
-             </li>
-             <li>
-                The Struts 1.1 Release Notes document shall be updated to describe
-                any substantial changes and improvements since the Struts 1.1 RC2 release,
-                along with associated updates to the main Struts Documentation
-                Application pages describing the new release.
-             </li>
-             <li>
-                All of the Struts example applications that are included with the release
-                shall operate successfully in the following servlet containers:
-                <ul>
-                    <li><a href="http://jakarta.apache.org/tomcat">Tomcat 3.3.1</a></li>
-                    <li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.0.6</a></li>
-                    <li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.1.18</a></li>
-                 </ul>
-             </li>
-          </ul>
-
-          <p>
-            Prior to the release of a subsequent Struts 1.1 Final release, the
-            following action items must be completed:
-          </p>
-
-          <ul>
-            <li>
-                All
-                <a href="http://issues.apache.org/bugzilla/buglist.cgi?email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Struts&amp;version=1.1RC2&amp;short_desc=&amp;short_desc_type=allwordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Bug+Number">
-                Bugzilla bug reports</a>
-                against Struts 1.1 RC2 MUST be marked as "Enhancement" or "Resolved", with any
-                of the legal Bugzilla resolutions (FIXED, INVALID, WONTFIX, LATER,
-                REMIND, WORKSFORME).
-          </li>
-          <li>
-                Bug reports that are resolved as LATER or REMIND will include comments
-                as to whether those specific issues will be dealt with in a subsequent
-                beta, release candidate, or final release, or whether they will be
-                scheduled for consideration in a subsequent release time frame.
-         </li>
-         <li>
-                The final release of Commons-FileUpload 1.0 must be available
-                and made part of the Struts 1.1 Final distribution.
-          </li>
-      </ul>
-
-    </section>
-    </body>
-</document>
diff --git a/build-legacy/core/xdocs/proposals/release-plan-1.1b1.xml b/build-legacy/core/xdocs/proposals/release-plan-1.1b1.xml
deleted file mode 100644
index 840483b..0000000
--- a/build-legacy/core/xdocs/proposals/release-plan-1.1b1.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0"?>
-<document url="./release-plan-1.1b1.xml">
-
-  <properties>
-    <title>Struts Release Plan (Version 1.1b1)</title>
-  </properties>
-
-  <body>
-
-
-  <section name="Objective" href="Objective">
-
-  <p>$Id$</p>
-
-  <p>The objective of the <strong>Struts 1.1 Beta 1</strong> release is to
-  create a milestone release against which a final series of bug fixes and
-  documentation updates can occur before a <strong>Struts 1.1 Final</strong>
-  release is created.</p>
-
-  </section>
-
-
-  <section name="The Plan" href="Plan">
-
-  <p>Many new features have been added to the nightly builds since the release
-  of Struts 1.0, and many bugs have been fixed. Several of the new features are
-  in high demand by current Struts users, and so it is time to start the process
-  of making this new code base available as a formal release. The first step in
-  this process is an initial beta release, with the goal of moving towards a
-  release candidate and then a final <strong>Struts 1.1</strong> release as
-  soon as is practicable.</p>
-
-  <p>Therefore, the following release plan is proposed for Struts 1.1 Beta 1:
-  </p>
-  <ul>
-  <li><em>Code Freeze / Tag Date</em> - Monday, March 18, 2002</li>
-  <li><em>Release Manager</em> - Martin Cooper</li>
-  <li><em>Release Announcement</em> - To the following mailing lists:
-      <ul>
-      <li>announcements@jakarta.apache.org</li>
-      <li>struts-dev@jakarta.apache.org</li>
-      <li>struts-user@jakarta.apache.org</li>
-      </ul></li>
-  </ul>
-
-  </section>
-
-
-  <section name="Release Criteria" href="Criteria">
-
-  <p>Prior to the release of Struts 1.1 Beta 1, the following action items
-  must be completed:</p>
-  <ul>
-  <li>The Struts 1.1 Release Notes document shall be updated to describe
-      substantial changes and improvements since the Struts 1.0.2 release,
-      along with associated updates to the main Struts Documentation
-      Application pages describing the new release.</li>
-  <li>All of the Struts example applications that are included with the release
-      shall operate successfully in the following servlet containers:
-      <ul>
-      <li><a href="http://jakarta.apache.org/tomcat">Tomcat 3.3</a></li>
-      <li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.0.3</a></li>
-      </ul></li>
-  <li>A release vote shall take place on the STRUTS-DEV mailing list to
-      approve this plan.  The release vote MUST pass by "Majority Approval"
-      of Struts committers.</li>
-  </ul>
-
-  <p>Prior to the release of a subsequent Struts 1.1 release candidate, the
-  following action items must be completed:</p>
-  <ul>
-  <li>All <a href="http://issues.apache.org/bugzilla/">Bugzilla</a> bug reports
-      against Struts 1.1 nightly builds MUST be marked as "Resolved", with any
-      of the legal Bugzilla resolutions (FIXED, INVALID, WONTFIX, LATER,
-      REMIND, WORKSFORME).</li>
-  <li>Bug reports that are resolved as LATER or REMIND will include comments
-      as to whether those specific issues will be dealt with in a subsequent
-      release candidate, or final release, or whether they will be scheduled
-      for consideration in a subsequent release time frame.</li>
-  </ul>
-
-  </section>
-
-
-  </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/proposals/release-plan-1.1b2.xml b/build-legacy/core/xdocs/proposals/release-plan-1.1b2.xml
deleted file mode 100644
index a1d9b38..0000000
--- a/build-legacy/core/xdocs/proposals/release-plan-1.1b2.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0"?>
-<document url="./release-plan-1.1-b2.xml">
-
-  <properties>
-    <title>Struts Release Plan (Version 1.1-b2)</title>
-  </properties>
-
-  <body>
-
-
-  <section name="Objective" href="Objective">
-
-  <p>$Id$</p>
-
-  <p>The objective of the <strong>Struts 1.1 Beta 2</strong> release is to
-  create a milestone release against which a final series of bug fixes and
-  documentation updates can occur before a <strong>Struts 1.1 Final</strong>
-  release is created.</p>
-
-  </section>
-
-
-  <section name="The Plan" href="Plan">
-
-  <p>A number of new features have been added to the nightly builds since the
-  first Beta release of Struts 1.1, and many bugs have been fixed. It is time,
-  therefore, to take the next step in the release process, and make the latest
-  code base available as a second Beta release. The goal is to move towards a
-  release candidate and then a final <strong>Struts 1.1</strong> release as
-  soon as is practicable.</p>
-
-  <p>Therefore, the following release plan is proposed for Struts 1.1 Beta 2:
-  </p>
-  <ul>
-  <li><em>Code Freeze / Tag Date</em> - Saturday, August 10, 2002</li>
-  <li><em>Release Manager</em> - Martin Cooper</li>
-  <li><em>Release Announcement</em> - To the following mailing lists:
-      <ul>
-      <li>announcements@jakarta.apache.org</li>
-      <li>struts-dev@jakarta.apache.org</li>
-      <li>struts-user@jakarta.apache.org</li>
-      </ul></li>
-  </ul>
-
-  </section>
-
-
-  <section name="Release Criteria" href="Criteria">
-
-  <p>Prior to the release of Struts 1.1 Beta 2, the following action items
-  must be completed:</p>
-  <ul>
-  <li>The Struts 1.1 Release Notes document shall be updated to describe
-      substantial changes and improvements since the Struts 1.0.2 release,
-      along with associated updates to the main Struts Documentation
-      Application pages describing the new release.</li>
-  <li>All of the Struts example applications that are included with the release
-      shall operate successfully in the following servlet containers:
-      <ul>
-      <li><a href="http://jakarta.apache.org/tomcat">Tomcat 3.3.1</a></li>
-      <li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.0.4</a></li>
-      </ul></li>
-  <li>A release vote shall take place on the STRUTS-DEV mailing list to
-      approve this plan.  The release vote MUST pass by "Majority Approval"
-      of Struts committers.</li>
-  </ul>
-
-  <p>Prior to the release of a subsequent Struts 1.1 release candidate, the
-  following action items must be completed:</p>
-  <ul>
-  <li>All <a href="http://issues.apache.org/bugzilla/">Bugzilla</a> bug reports
-      against Struts 1.1 nightly builds MUST be marked as "Resolved", with any
-      of the legal Bugzilla resolutions (FIXED, INVALID, WONTFIX, LATER,
-      REMIND, WORKSFORME).</li>
-  <li>Bug reports that are resolved as LATER or REMIND will include comments
-      as to whether those specific issues will be dealt with in a subsequent
-      beta, release candidate, or final release, or whether they will be
-      scheduled for consideration in a subsequent release time frame.</li>
-  </ul>
-
-  </section>
-
-
-  <section name="Bugs To Be Addressed" href="Bugs">
-
-  <p>The following bugs must be addressed before Final Release of Struts 1.1.</p>
-
-  <table class="noborder">
-    <tr>
-      <td colspan="2"><strong>Custom Tags</strong></td>
-    </tr>
-    <tr>
-      <td>1586</td>
-      <td>The &lt;html:form&gt; tag generates incorrect focus javascript for radio buttons.</td>
-    </tr>
-    <tr>
-      <td colspan="2"><strong>Documentation</strong></td>
-    </tr>
-    <tr>
-      <td>10537</td>
-      <td>[:TODO:] sections (18)</td>
-    </tr>
-    <tr>
-      <td colspan="2"><strong>Example Webapps</strong></td>
-    </tr>
-    <tr>
-      <td>10955</td>
-      <td>Error running struts-blank applicaiton under JRun 3.1</td>
-    </tr>
-    <tr>
-      <td colspan="2"><strong>Validator Framework</strong></td>
-    </tr>
-    <tr>
-      <td>7353</td>
-      <td>Validator JavaScript Select Error</td>
-    </tr>
-    <tr>
-      <td>10191</td>
-      <td>Validator range checking bug</td>
-    </tr>
-    <tr>
-      <td>10348</td>
-      <td>Validator is not available under module</td>
-    </tr>
-    <tr>
-      <td>10349</td>
-      <td>Validator: date validation does not allow blank input?</td>
-    </tr>
-    <tr>
-      <td>10432</td>
-      <td>DynaValidatorActionForm does not validate data</td>
-    </tr>
-    <tr>
-      <td>10584</td>
-      <td>Not all validation files are read in Validation PlugIn</td>
-    </tr>
-  </table>
-
-  </section>
-
-
-  </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/proposals/release-plan-1.1b3.xml b/build-legacy/core/xdocs/proposals/release-plan-1.1b3.xml
deleted file mode 100644
index f245974..0000000
--- a/build-legacy/core/xdocs/proposals/release-plan-1.1b3.xml
+++ /dev/null
@@ -1,257 +0,0 @@
-<?xml version="1.0"?>
-<document url="./release-plan-1.1-b3.xml">
-
-  <properties>
-    <title>Struts Release Plan (Version 1.1-b3)</title>
-  </properties>
-
-  <body>
-
-
-  <section name="Objective" href="Objective">
-
-  <p>$Id$</p>
-
-  <p>The objective of the <strong>Struts 1.1 Beta 3</strong> release is to
-  create a milestone release against which a final series of bug fixes and
-  documentation updates can occur before a <strong>Struts 1.1 Final</strong>
-  release is created.</p>
-
-  </section>
-
-
-  <section name="The Plan" href="Plan">
-
-  <p>A number of new features have been added to the nightly builds since the
-  second Beta release of Struts 1.1, and many bugs have been fixed. It is time,
-  therefore, to take the next step in the release process, and make the latest
-  code base available as a third Beta release. The goal is to move towards a
-  release candidate and then a final <strong>Struts 1.1</strong> release as
-  soon as is practicable.</p>
-
-  <p>Therefore, the following release plan is proposed for Struts 1.1 Beta 3:
-  </p>
-  <ul>
-  <li><em>Code Freeze / Tag Date</em> - Sunday, December 29, 2002, 23:59:59</li>
-  <li><em>Release Manager</em> - Martin Cooper</li>
-  <li><em>Release Announcement</em> - To the following mailing lists:
-      <ul>
-      <li>announcements@jakarta.apache.org</li>
-      <li>struts-dev@jakarta.apache.org</li>
-      <li>struts-user@jakarta.apache.org</li>
-      </ul></li>
-  </ul>
-
-  </section>
-
-
-  <section name="Release Criteria" href="Criteria">
-
-  <p>Prior to the release of Struts 1.1 Beta 3, the following action items
-  must be completed:</p>
-  <ul>
-  <li>The Struts 1.1 Release Notes document shall be updated to describe
-      substantial changes and improvements since the Struts 1.0.2 release,
-      along with associated updates to the main Struts Documentation
-      Application pages describing the new release.</li>
-  <li>All of the Struts example applications that are included with the release
-      shall operate successfully in the following servlet containers:
-      <ul>
-      <li><a href="http://jakarta.apache.org/tomcat">Tomcat 3.3.1</a></li>
-      <li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.0.6</a></li>
-      <li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.1.18</a></li>
-      </ul></li>
-  <li>A release vote shall take place on the STRUTS-DEV mailing list to
-      approve this plan.  The release vote MUST pass by "Majority Approval"
-      of Struts committers.</li>
-  </ul>
-
-  <p>Prior to the release of a subsequent Struts 1.1 release candidate, the
-  following action items must be completed:</p>
-  <ul>
-  <li>All <a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=VERIFIED&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Struts&amp;version=Nightly+Build&amp;short_desc=&amp;short_desc_type=allwordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Bug+Number">Bugzilla bug reports</a>
-      against Struts 1.1 nightly builds MUST be marked as "Resolved", with any
-      of the legal Bugzilla resolutions (FIXED, INVALID, WONTFIX, LATER,
-      REMIND, WORKSFORME).</li>
-  <li>Bug reports that are resolved as LATER or REMIND will include comments
-      as to whether those specific issues will be dealt with in a subsequent
-      beta, release candidate, or final release, or whether they will be
-      scheduled for consideration in a subsequent release time frame.</li>
-  </ul>
-
-  </section>
-
-
-  <section name="Bugs To Be Addressed" href="Bugs">
-
-  <p>
-      The following bugs must be addressed before Final Release of Struts 1.1.
-      Checked items have been resolved.
-  </p>
-
-  <table class="noborder">
-
-    <!-- Custom tags -->
-    <tr>
-      <td colspan="3"><strong>Custom Tags</strong></td>
-    </tr>
-    <tr>
-      <td>[x]</td>
-      <td>
-          <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=11021">11021</a>
-      </td>
-      <td>ActionForward or &lt;html:link&gt; tag does not support absolute URIs</td>
-    </tr>
-    <tr>
-        <td>[x]</td>
-        <td>
-          <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=12302">12302</a></td>
-      <td>Sporadic error in html:form action attribute</td>
-    </tr>
-    <tr>
-        <td>[x]</td>
-        <td>
-          <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13645">13645</a></td>
-      <td>Add action attribute to &lt;html:link&gt;</td>
-    </tr>
-    <tr>
-        <td>[x]</td>
-        <td>
-          <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15044">15044</a></td>
-      <td>Taglib - Index Attribute in html:Checkbox doesn't set correctly</td>
-    </tr>
-    <tr>
-        <td>[x]</td>
-        <td>
-          <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15196">15196</a></td>
-      <td>Bug on the RequestUtils.computeParameters using a DynaValidatorForm as map of the parameter</td>
-    </tr>
-    <tr>
-        <td>[x]</td>
-        <td>
-          <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15451">15451</a></td>
-      <td>Multiple mapped properties not possible / Direct maps and indexes not possible</td>
-    </tr>
-    <tr>
-        <td>[x]</td>
-        <td>
-          <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15601">15601</a></td>
-      <td>tile examples to move to standard webapp location</td>
-    </tr>
-
-    <!-- Controller -->
-    <tr>
-      <td colspan="3"><strong>Controller</strong></td>
-    </tr>
-    <tr>
-        <td>[x]</td>
-        <td>
-          <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=12871">12871</a></td>
-      <td>ExceptionHandler does not obey controller inputForward rule</td>
-    </tr>
-    <tr>
-        <td>[x]</td>
-        <td>
-          <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14054">14054</a></td>
-      <td>Rename "Application" components to "Module"</td>
-    </tr>
-    <tr>
-        <td>[x]</td>
-        <td>
-          <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14749">14749</a></td>
-      <td>Action "input" not starting with '/' and not a valid forward will cause an internal server error</td>
-    </tr>
-
-    <!-- Documentation -->
-    <tr>
-      <td colspan="3"><strong>Documentation</strong></td>
-    </tr>
-    <tr>
-        <td>[x]</td>
-        <td>
-          <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10537">10537</a></td>
-      <td>[:TODO:] sections</td>
-    </tr>
-    <tr>
-        <td>[x]</td>
-        <td>
-          <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15167">15167</a></td>
-      <td>Updated Action documentation</td>
-    </tr>
-
-    <!-- Utilities -->
-    <tr>
-      <td colspan="3"><strong>Utilities</strong></td>
-    </tr>
-    <tr>
-        <td>[x]</td>
-        <td>
-          <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=11932">11932</a></td>
-      <td>(Message Resource is not multi-app aware) Multi-Resource not work in Multi-Appliction config environment</td>
-    </tr>
-
-    <!-- Unknown -->
-    <tr>
-      <td colspan="3"><strong>Unknown</strong></td>
-    </tr>
-    <tr>
-        <td>[x]</td>
-        <td>
-          <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14042">14042</a></td>
-      <td>Unknown Memory leaks with JBoss 3.x +(Tomcat/Jetty)</td>
-    </tr>
-
-    <!-- Post Mortem -->
-    <tr>
-      <td colspan="3"><strong>Post Mortem -- These tickets were added after the release of Struts 1.1 B3 and need to be resolved before the next iteration</strong></td>
-    </tr>
-    <tr>
-        <td>[x]</td>
-        <td>
-          <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15736">15736</a></td>
-      <td>Struts doesn't initialize under strict security manager</td>
-    </tr>
-    <tr>
-        <td>[x]</td>
-        <td>
-          <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15799">15799</a></td>
-      <td>Nested tags picks up wrong bean for values</td>
-    </tr>
-    <tr>
-        <td>[x]</td>
-        <td>
-          <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15883">15883</a></td>
-      <td>wrong resource file used in multi-application context</td>
-    </tr>
-    <tr>
-        <td>[x]</td>
-        <td>
-          <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=16019">16019</a></td>
-      <td>LookupDispatchAction multiple MessageResources</td>
-    </tr>
-      <tr>
-          <td>[x]</td>
-          <td>
-            <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=16514">16514</a></td>
-        <td>NestedtTiles fail in this release</td>
-      </tr>
-      <tr>
-          <td>[x]</td>
-          <td>
-            <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=16603">16603</a></td>
-        <td>internalModuleRelativeForward() doesn't treat module-relative paths as defined by forwardPattern</td>
-      </tr>
-      <tr>
-          <td>[x]</td>
-          <td>
-            <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=16609">16609</a></td>
-        <td>MessageResource not in request scope for Module</td>
-      </tr>
-  </table>
-
-  </section>
-
-
-  </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/proposals/release-plan-1.1rc1.xml b/build-legacy/core/xdocs/proposals/release-plan-1.1rc1.xml
deleted file mode 100644
index c316525..0000000
--- a/build-legacy/core/xdocs/proposals/release-plan-1.1rc1.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0"?>
-<document url="./release-plan-1.1rc1.xml">
-
-  <properties>
-    <title>Struts Release Plan (Version 1.1-rc1)</title>
-  </properties>
-
-  <body>
-
-
-  <section name="Objective" href="Objective">
-
-  <p>$Id$</p>
-
-  <p>The objective of the <strong>Struts 1.1 Release Candidate 1</strong>
-  release is to create a milestone release in preparation for an imminent
-  <strong>Struts 1.1 Final</strong> release. As a release candidate, this
-  milestone release currently contains no known showstoppers.</p>
-
-  </section>
-
-
-  <section name="The Plan" href="Plan">
-
-  <p>A number of bugs have been fixed since the third Beta release of Struts 1.1,
-  and all remaining bugs have been categorized either as enhancements, or as
-  problems which can be fixed in a release subsequent to Struts 1.1 Final.
-  Therefore it is time to make the latest code base available as a first Release
-  Candidate. The goal is to move towards a final <strong>Struts 1.1</strong>
-  release as soon as is practicable.</p>
-
-  <p>Therefore, the following release plan is proposed for Struts 1.1 Release Candidate 1:
-  </p>
-  <ul>
-  <li><em>Code Freeze / Tag Date</em> - Tuesday, February 18, 2003, 23:59:59</li>
-  <li><em>Release Manager</em> - Martin Cooper</li>
-  <li><em>Release Announcement</em> - To the following mailing lists:
-      <ul>
-      <li>announcements@jakarta.apache.org</li>
-      <li>struts-dev@jakarta.apache.org</li>
-      <li>struts-user@jakarta.apache.org</li>
-      </ul></li>
-  </ul>
-
-  </section>
-
-
-  <section name="Release Criteria" href="Criteria">
-
-  <p>Prior to the release of Struts 1.1 Release Candidate 1, the following
-  action items must be completed:</p>
-  <ul>
-  <li>The Struts 1.1 Release Notes document shall be updated to describe
-      substantial changes and improvements since the Struts 1.0.2 release,
-      along with associated updates to the main Struts Documentation
-      Application pages describing the new release.</li>
-  <li>All of the Struts example applications that are included with the release
-      shall operate successfully in the following servlet containers:
-      <ul>
-      <li><a href="http://jakarta.apache.org/tomcat">Tomcat 3.3.1</a></li>
-      <li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.0.6</a></li>
-      <li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.1.18</a></li>
-      </ul></li>
-  <li>A release vote shall take place on the STRUTS-DEV mailing list to
-      approve this plan.  The release vote MUST pass by "Majority Approval"
-      of Struts committers.</li>
-  </ul>
-
-  <p>Prior to the release of a subsequent Struts 1.1 Final release, the
-  following action items must be completed:</p>
-  <ul>
-  <li>All <a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=VERIFIED&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Struts&amp;version=Nightly+Build&amp;short_desc=&amp;short_desc_type=allwordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Bug+Number">Bugzilla bug reports</a>
-      against Struts 1.1 nightly builds MUST be marked as "Resolved", with any
-      of the legal Bugzilla resolutions (FIXED, INVALID, WONTFIX, LATER,
-      REMIND, WORKSFORME).</li>
-  <li>Bug reports that are resolved as LATER or REMIND will include comments
-      as to whether those specific issues will be dealt with in a subsequent
-      beta, release candidate, or final release, or whether they will be
-      scheduled for consideration in a subsequent release time frame.</li>
-  </ul>
-
-  </section>
-
-  </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/proposals/release-plan-1.1rc2.xml b/build-legacy/core/xdocs/proposals/release-plan-1.1rc2.xml
deleted file mode 100644
index e6907d4..0000000
--- a/build-legacy/core/xdocs/proposals/release-plan-1.1rc2.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0"?>
-<document url="./release-plan-1.1rc2.xml">
-
-  <properties>
-    <title>Struts Release Plan (Version 1.1-rc2)</title>
-  </properties>
-
-  <body>
-
-  <section name="Objective" href="Objective">
-
-  <p>$Id$</p>
-
-  <p>The objective of the <strong>Struts 1.1 Release Candidate 2</strong>
-  release is to create a milestone release in preparation for an imminent
-  <strong>Struts 1.1 Final</strong> release. As a release candidate, this
-  milestone release currently contains no known showstoppers.</p>
-
-  </section>
-
-
-  <section name="The Plan" href="Plan">
-
-  <p>A number of bugs have been fixed since and other internal changes made
-  since the first release candidate of Struts 1.1.
-  All remaining tickets have been categorized either as enhancements, or as
-  problems which can be fixed in a release subsequent to Struts 1.1 Final.
-  Therefore it is time to make the latest code base available as a first Release
-  Candidate. The goal is to move towards a final <strong>Struts 1.1</strong>
-  release as soon as is practicable. </p>
-
-      <p>
-          This release candidate includes the Commons FileUpload RC1 JAR,
-          which is required to compile and use Struts 1.1.
-          A final release of Struts must depend only on final releases of other
-          required products. Consequently, the Struts 1.1 Final release cannot
-          be made unitl the Commons FileUpload 1.0 Final Release is available.
-      </p>
-
-      <p>
-          However, Pending the final release of Commons FileUpload 1.0,
-          and should there be no showstoppers found in this release candidate,
-          <strong>Sunday June 29, 2003</strong>, is set as the anticipated release date of
-          Struts 1.1 Final.
-          Anyone wishing to test the product before the final release
-          is encourged to do so before that date.
-      </p>
-
-  <p>Therefore, the following release plan is proposed for Struts 1.1 Release Candidate 2:
-  </p>
-  <ul>
-  <li><em>Code Freeze / Tag Date</em> - Friday, June 6, 2003, 23:59:59</li>
-  <li><em>Release Manager</em> - Ted Husted</li>
-  <li><em>Release Announcement</em> - To the following mailing lists:
-      <ul>
-      <li>announcements@jakarta.apache.org</li>
-      <li>struts-dev@jakarta.apache.org</li>
-      <li>struts-user@jakarta.apache.org</li>
-      </ul></li>
-  </ul>
-
-      <p>
-          This plan is being prepared and executed in accordance with a positive vote
-          held on the STRUT-DEV list, beginning on May 29,
-          the results of which were posted on June 3, 2003.
-      </p>
-
-      <p>
-          The release process shall follow the same
-          <a href="http://jakarta.apache.org/commons/releases/">general procedures</a>
-          established the Jakarta Commons products.
-      </p>
-
-  </section>
-
-      <section name="Release Criteria" href="Criteria">
-
-      <p>Prior to the release of Struts 1.1 Release Candidate 2, the following
-      action items must be completed:</p>
-      <ul>
-      <li>The Struts 1.1 Release Notes document shall be updated to describe
-          substantial changes and improvements since the Struts 1.1 RC1 release,
-          along with associated updates to the main Struts Documentation
-          Application pages describing the new release.</li>
-      <li>All of the Struts example applications that are included with the release
-          shall operate successfully in the following servlet containers:
-          <ul>
-          <li><a href="http://jakarta.apache.org/tomcat">Tomcat 3.3.1</a></li>
-          <li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.0.6</a></li>
-          <li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.1.18</a></li>
-          </ul></li>
-      <!--
-      <li>A release vote shall take place on the STRUTS-DEV mailing list to
-          approve this plan.  The release vote MUST pass by "Majority Approval"
-          of Struts committers.  </li>
-      -->
-      </ul>
-
-      <p>Prior to the release of a subsequent Struts 1.1 Final release, the
-      following action items must be completed:</p>
-      <ul>
-      <li>All
-          <a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=VERIFIED&amp;bug_severity=Blocker&amp;bug_severity=Critical&amp;bug_severity=Major&amp;bug_severity=Normal&amp;bug_severity=Minor&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Struts&amp;version=Nightly+Build&amp;short_desc=&amp;short_desc_type=allwordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Bug+Number">
-          Bugzilla bug reports</a>
-          against Struts 1.1 nightly builds MUST be marked as "Enhancement" or "Resolved", with any
-          of the legal Bugzilla resolutions (FIXED, INVALID, WONTFIX, LATER,
-          REMIND, WORKSFORME).</li>
-      <li>Bug reports that are resolved as LATER or REMIND will include comments
-          as to whether those specific issues will be dealt with in a subsequent
-          beta, release candidate, or final release, or whether they will be
-          scheduled for consideration in a subsequent release time frame.</li>
-          <li>
-              The final release of Commons-FileUpload 1.0 must be available
-              and made part of the Struts 1.1 Final distribution.
-          </li>
-      </ul>
-
-    </section>
-    </body>
-</document>
diff --git a/build-legacy/core/xdocs/proposals/release-plan_1_2_0.xml b/build-legacy/core/xdocs/proposals/release-plan_1_2_0.xml
deleted file mode 100644
index 2d8e254..0000000
--- a/build-legacy/core/xdocs/proposals/release-plan_1_2_0.xml
+++ /dev/null
@@ -1,182 +0,0 @@
-<?xml version="1.0"?>
-<document url="./release-plan-1.1rc2.xml">
-
-    <properties>
-        <title>Struts Release Plan (Version 1.2.0)</title>
-     </properties>
-
-  <body>
-
-      <section name="Objective" href="objective">
-          <p>
-              $Id$
-          </p>
-
-          <p>
-              THIS IS AN UNRATIFIED DRAFT DOCUMENT PROVIDED FOR DISCUSSION PURPOSES ONLY!
-          </p>
-
-          <p>
-              The objective of the <strong>Struts 1.2.0</strong> release is to provide an official version of all the
-              changes that have been made to the main trunk of the jakarta-struts CVS since the release of Struts 1.1
-              Final.
-          </p>
-      </section>
-
-      <section name="The Plan" href="plan">
-          <p>
-              Since the release of version Struts 1.1 Final, we have removed many of the elements deprecated between
-              Struts 1.0 and Struts 1.1 and made several bug fixes and minor enhancements.
-          </p>
-
-          <p>
-              The following release plan is proposed for Struts 1.2.0:
-          </p>
-
-          <ul>
-              <li>
-                  <em>Tag Date</em> - Saturday, September 7, 2003, 23:59:59
-              </li>
-              <li>
-                  <em>Release Manager</em> - Ted Husted
-              </li>
-              <li>
-                  <em>Alpha Release Announcement</em> - To the following mailing list:
-                  <ul>
-                      <li>struts-dev@jakarta.apache.org</li>
-                  </ul>
-              </li>
-              <li>
-                  <em>Beta/General Release Announcement</em> - To the following mailing lists:
-                  <ul>
-                      <li>struts-dev@jakarta.apache.org</li>
-                      <li>struts-user@jakarta.apache.org</li>
-                      <li>announcements@jakarta.apache.org</li>
-                  </ul>
-              </li>
-          </ul>
-
-          <p>
-              The release process shall follow the same general procedures established for the
-              <a href="http://httpd.apache.org/dev/release.html">Apache HTTPD project</a> and
-              <a href="http://jakarta.apache.org/commons/releases/">Jakarta Commons products</a>, and utilize the
-              HTTPD numbering scheme.
-          </p>
-
-          <p>
-              The release will initially be given an Alpha status and made available through the Release Manager's home
-              directory.
-              Pursuant to a Majority Vote on the <em>struts-dev</em> Mailing List, the release may be moved to the
-              public release directory.
-              The vote may also serve to reclassify the release to be of <strong>Beta</strong> or <strong>General Availability</strong> (GA)
-              quality, as defined by the Apache HTTPD project.
-              Subsequent votes may reclassify the release, either to promote it or to demote it, as need be.
-          </p>
-      </section>
-
-      <section name="Specific Release Criteria" href="specific">
-          <p>
-              Prior to the <strong>Struts 1.2.0 release</strong>, these specific action items must be completed:
-          </p>
-
-          <ul>
-              <li>
-                  The Roadmap page must be updated with an explanation of the new release numbering scheme.
-              </li>
-          </ul>
-      </section>
-
-      <section name="Standard Release Criteria" href="standard">
-          <p>
-              Prior to <strong>any release</strong> by the Struts Committers, including this one, the following action items must
-              be completed:
-          </p>
-
-          <ul>
-              <li>
-                  <strong>Resolve showstoppers.</strong>
-                  Relevant
-                  <a href="http://issues.apache.org/bugzilla/buglist.cgi?email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Struts&amp;version=1.1RC2&amp;short_desc=&amp;short_desc_type=allwordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Bug+Number">
-                  Bugzilla tickets</a> verified by a Struts Committer to have the Severity BLOCKER, CRITICAL, or
-                  MAJOR must be "Resolved" with one of these Bugzilla resolutions: FIXED, INVALID, WONTFIX, WORKSFORME.
-              </li>
-              <li>
-                  <strong>Apply patches.</strong>
-                  Relevant
-                  <a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=VERIFIED&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Struts&amp;short_desc=&amp;short_desc_type=allwordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=PatchAvailable&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;order=Bug+Number">
-                  Bugzilla reports</a> which include a working patch must be "Resolved" with any of the legal Bugzilla
-                  resolutions (FIXED, INVALID, WONTFIX, LATER, REMIND, WORKSFORME).
-                  <ul>
-                      <li>
-                          Bug reports with patches that are resolved as LATER or REMIND shall include an explanation as
-                          to why the patch should be applied in a later release.
-                      </li>
-                  </ul>
-              </li>
-              <li>
-                  <strong>Test example applications.</strong>
-                  All example applications included with the release shall operate successfully under the
-                  Reference Implementation containers for the Servlet/JSP specifications supported by the release.
-                  In the case of a Struts 1.x.x release, these containers are:
-                  <ul>
-                      <li>
-                          Tomcat 3.3 (Servlet/JSP 2.2/1.1 Reference Implementation)
-                      </li>
-                      <li>
-                          Tomcat 4.1 (Servlet/JSP 2.3/1.2 Reference Implementation)
-                      </li>
-                  </ul>
-                      The best available version of each container shall be used, as documented by the
-                      <a href="http://jakarta.apache.org/tomcat">Tomcat website</a> at the time the test is conducted.
-              </li>
-              <li>
-                  <strong>Update Release Notes.</strong> The Release Notes for the distribution shall be updated to summarize any
-                  substantial changes and improvements since the prior release, including updates to bundled
-                  documentation and example applications.
-              </li>
-            </ul>
-      </section>
-
-      <section name="Minor Release Criteria" href="minor">
-          <p>
-            Prior to an initial <strong>Struts minor release</strong> (#.#.0), the following action items must be completed:
-          </p>
-
-          <ul>
-              <li>
-                  <strong>Review pending issues.</strong>
-                  All relevant
-                  <a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=RESOLVED&amp;resolution=LATER&amp;resolution=REMIND&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Struts&amp;short_desc=&amp;short_desc_type=allwordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;order=Bug+Number">
-                  Bugzilla reports marked "Resolved" with the Resolutions LATER or REMIND</a> shall be reviewed to
-                  ensure that pending issues have been addressed prior to the release.
-              </li>
-              <li>
-                  <strong>Review pending enhancements.</strong>
-                  All relevant
-                  <a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=VERIFIED&amp;bug_severity=Enhancement&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Struts&amp;short_desc=&amp;short_desc_type=allwordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;order=Bug+Number">
-                  Bugzilla reports marked "Enhancement"</a> shall be reviewed by the Release Manager to ensure that
-                  all suitable enhancements have been made prior to the release.
-              </li>
-              <li>
-                  <strong>Resolve new issues.</strong>
-  	              All relevant
-	              <a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=VERIFIED&amp;bug_severity=Blocker&amp;bug_severity=Critical&amp;bug_severity=Major&amp;bug_severity=Normal&amp;bug_severity=Minor&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Struts&amp;short_desc=&amp;short_desc_type=allwordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;order=Bug+Number">
-	              Bugzilla tickets</a> MUST be marked as "Enhancement" or "Resolved" with any
-	              of the legal Bugzilla resolutions (FIXED, INVALID, WONTFIX, LATER, REMIND, WORKSFORME).
-                  <ul>
-                      <li>
-                          Bug reports that are resolved as LATER or REMIND will include comments as to whether those
-                          specific issues will be dealt with in a forthcoming minor release or whether they will be
-                          considered in a future major release.
-                     </li>
-                  </ul>
-              </li>
-              <li>
-                  A Majority Vote shall take place on the <em>struts-dev</em> mailing list to approve a release plan
-                  for the initial minor release.
-              </li>
-          </ul>
-    </section>
-
-    </body>
-</document>
diff --git a/build-legacy/core/xdocs/proposals/struts-faces.xml b/build-legacy/core/xdocs/proposals/struts-faces.xml
deleted file mode 100644
index 4e3b133..0000000
--- a/build-legacy/core/xdocs/proposals/struts-faces.xml
+++ /dev/null
@@ -1,300 +0,0 @@
-<?xml version="1.0"?>
-<document url="./struts-faces-1.xml">
-
-  <properties>
-    <title>About Struts and JavaServer Faces [forward-looking]</title>
-  </properties>
-
-  <body>
-
-<section name="background" href="Background">
-<p>
-[18-Sep-2002] JavaServer Faces (JSF) is being developed as JSR 127 under the Java
-Community Process, with the goal of creating a standard framework for user
-interface components to be used in web applications.  Included will be the
-following basic features:
-</p>
-
-<ul>
-<li>
-  User interface component model
-</li>
-
-<li>
-  Event handling model
-</li>
-
-<li>
-  Validation framework
-</li>
-
-<li>
-  Flexible rendering model (plugin support for rendering different
-  kinds of HTML, or different markup languages and technologies)
-</li>
-
-<li>
-  A standard RenderKit (and associated Renderers) for generating basic
-  HTML/4.01 markup.  This library is primarily for making JSF useful
-  out of the box, and allow apps to be portable across JSF
-  implementations.  However, we expect a lot of innovation in this
-  area among competing JSF implementations.
-</li>
-</ul>
-
-<p>
-All of the above functionality is available via standard Java APIs, and is
-thus not tied to JavaServer Pages (JSP).  However, because a large
-majority of JSF users will also be using JSP, an additional set of
-requirements is included in the JSF specification, including:
-</p>
-
-<ul>
-<li>
-  A standard tag library for generic things that are independent of
-  the specific RenderKit in use (such as adding a validator to a
-  component).
-</li>
-
-<li>
-  A standard tag library for the basic HTML RenderKit, with a tag for
-  each combination of a component type and a method of rendering that
-  component type.  An example will make this clearer -- consider the
-  UISelectOne component, which represents a list of options, and allows
-  only a single option from the list to be selected.  Such a component
-  can be rendered in three different ways (in the basic HTML RenderKit),
-  each with a different Renderer and a corresponding custom tag:<br/>
-
-  &lt;h:selectone_listbox> - Display a list of all the possible
-  options (expanding the box to include all of them so that no scrollbar
-  is required).<br/>
-
-  &lt;h:selectone_menu> -  Display as a combo box (the traditional HTML
-  &lt;select> element with size="1").<br/>
-
-  &lt;h:selectone_radio> - Display as a set of radio buttons and
-  corresponding labels.
-</li>
-</ul>
-
-<p>
-Note that the application developer doesn't know or care which mechanism
-was used to display this component -- that's up to the page author, who
-will pick the desired representation by virtue of which tag he or she
-selects (at the Java API level, you make this choice by setting the
-"rendererType" property on the component instance).  This is one of the
-many advances that JSF provides over Struts tags, where there is one and
-only one way to render each individual element.
-</p>
-
-<p>
-There are also provisions for creating more complex components like grids,
-tree controls, and the like -- a common theme you will see is "compose
-complex things out of little things" -- that is accomplished in JSP by
-nesting component tags inside each other, just like you nest HTML &lt;input>
-elements inside a &lt;form> element.
-</p>
-
-<p>
-For more information about JavaServer Faces, and an early access draft of
-the specification (and an early access version of the RI that corresponds
-to an even earlier draft of the spec), you'll want to bookmark:
-</p>
-
-<p>
-  <a href="http://java.sun.com/j2ee/javaserverfaces/">http://java.sun.com/j2ee/javaserverfaces/</a>
-</p>
-
-<p>
-In addition, there is a forum on the Java Developer Connection (free
-registration required) focused on JavaServer Faces, so please ask your
-general Faces-related questions there instead of here.  Here's a direct
-link to the forum page:
-</p>
-
-<p>
-  <a href="http://java.sun.com/j2ee/javaserverfaces/">http://forums.java.sun.com/forum.jsp?forum=427</a>
-</p>
-
-<p>
-Note that JavaServer Faces depends on Servlet 2.3 and JSP 1.2 (i.e. J2EE
-1.3 containers).
-</p>
-</section>
-
-<section href="struts" name="How does this affect Struts?">
-<p>
-At first glance, the low level components sound a lot like the struts-html
-tag library that Struts users know and love.  Indeed, there is a very
-substantial amount of overlap.  So, what's going to happen?
-</p>
-
-<p>
-In my JavaOne BOF on Struts (March, 2002), I made the statement that
-Struts would have a very clean integration with JSF, so that you can use
-JSF components in your user interface, but continue to use the controller,
-Actions, and associated business logic.  Indeed, I stated that it will be
-possible to transition your application from using Struts HTML tags to
-using Faces component tags, one page at a time -- in most cases, with zero
-changes to the business logic or Action classes and minimal changes to the
-&lt;forward> elements in your struts-config.xml configuration file.
-</p>
-
-<p>
-Along with developing JavaServer Faces itself (I am the specification lead
-for JSR-127), I have been working on just such an integration library for
-Struts (1.1 only; sorry in advance to 1.0 users).  While not completed
-yet, it is clear that the goals stated in the previous paragraph are
-achievable with the current evolving design of JSF.  While things can
-always change in the future, many JSR-127 expert group members consider
-high quality integration with Struts to be an important success factor for
-JavaServer Faces to be accepted.  Therefore, I do not expect that JSF will
-evolve in ways that make this kind of integration difficult or impossible.
-</p>
-
-<p>
-From the developer's perspective, you will need to do only the following
-to start using JSF components in your pages:
-</p>
-
-<ul>
-<li>
-  Add a new struts-faces.jar file, and the JAR files for an
-  appropriate JSF implementation, to your /WEB-INF/lib directory.
-</li>
-
-<li>
-  Note that JSF and the JSP Standard Tag Library (JSTL) interoperate
-  very nicely, so you will also be able to use JSTL tags in your
-  new pages if you wish to.
-</li>
-
-<li>
-  Add a couple of elements to your web.xml deployment descriptor,
-  corresponding to the requirements outlined in Chapter 9 of the
-  JSF specification.
-</li>
-
-<li>
-  Transition one page at a time to use the new tag libraries,
-  making an appropriate modification to the &lt;forward> elements
-  for your pages (the URL needs to change to meet Faces requirements).
-</li>
-</ul>
-
-<p>
-The integration library will be available as a separately packaged
-download that runs with Struts 1.1, and will include a converted copy of
-the canonical struts-example web application so that you can see exactly
-what had to change in order to use Struts with JSF.
-</p>
-
-<p>
-Besides the integration classes themselves (primarily an implementation of
-the JSF ApplicationHandler API), the library will include some
-Struts-flavored components and renderers that provide functionality
-similar to that provided by the existing struts-html tags, when this is
-not provided by the standard JSF components.  For example, there will be a
-Struts version of the UIForm component that accepts an "action" attribute
-that looks up the corresponding action mapping, and creates the form bean
-as needed, just like the &lt;html:form> tag does today.
-</p>
-
-<p>
-The good news -- development of this integration library is well under
-way.
-</p>
-
-<p>
-The bad news -- you can't see it quite yet.  This is primarily because it
-relies on changes to JSF that have occurred since the early access release
-of the RI was published, so you wouldn't be able to use it anyway.
-However, as soon as it is feasible, this library will be added to the
-"contrib" folder of Struts, with the sources (and downloadable
-distributions) available under the usual Apache license terms.  (The
-source code will also give you a head start at creating your own JSF
-components, too).
-</p>
-</section>
-
-<section href="choices" name="So what user interface technology should i choose?">
-<p>
-Everyone's functionality and schedule requirements are different.
-However, the following points summarize my basic recommendations and
-thoughts about the future:
-</p>
-
-<ul>
-<li>If you have existing Struts-based applications that use the existing
-  HTML tag library, feel free to continue to use them if you wish.
-  Struts 1.1 offers full support for this existing functionality.
-</li>
-
-<li>
-  Once the integration library becomes available, you should do some
-  experimenting and prototyping to determine the effort required to
-  migrate your apps to the new JSF component architecture (I'm betting
-  that the extra functionality you gain by doing this will be well
-  worth the effort in many cases).  As described above, the actual
-  migration can be done piecemeal -- it doesn't need to happen all
-  at once.
-</li>
-
-<li>
-  For applications now (or about to be) under development that have
-  relatively short term schedules (i.e. the next few months), you
-  should probably stick with the existing HTML library.
-</li>
-
-<li>
-  For applications with a longer lead time, seriously consider waiting
-  for the ability to use JSF components instead of the Struts HTML
-  tag library.  Doing this will let you leverage not only the standard
-  HTML components that come with JSF out of the box, but also the rich
-  libraries of JSF components likely to be created by third parties in
-  the future (including Struts developers).
-</li>
-</ul>
-
-<p>
-For Struts after 1.1 is released, the developers haven't yet had formal
-conversations (which will happen on STRUTS-DEV) about what a future Struts
-will look like.  However, I'm going to continue to advocate a long term
-migration to using standards like JSF and JSTL when they are available,
-and de-emphasize the further development of the Struts proprietary tag
-libraries.
-</p>
-
-<p>
-The Struts tag libraries have had a tremendous positive impact on the
-development of the standard Java APIs for user interfaces.  I joked with
-the JSTL spec lead that Struts users would *never* accept JSTL without an
-expression language at least as powerful as the Struts one; and there is
-more than a little truth to that statement :-).  The same thing is
-happening now for the HTML tags -- and it's time for us to start migrating
-to the standards, which gives us the time to focus on extending Struts in
-other directions in the future.
-</p>
-
-<p>
-Comments?  Questions?  If it's about Struts, or Struts/JSF integration,
-feel free to ask about these issues on STRUTS-DEV or STRUTS-USER (although
-I'm going to be relatively incommunicado over the next week; I'll be in
-Yokohama at JavaOne Japan and only intermittently connected to email).
-Questions about JSF itself should be addressed to the JSF forum at the URL
-listed above.
-</p>
-
-<p>
-And thanks to all of you for your continued support and use of Struts --
-the community that has developed around this framework continues to amaze
-and humble me.
-</p>
-
-<p>
-Craig McClanahan
-</p>
-</section>
-</body>
-</document>
-
diff --git a/build-legacy/core/xdocs/proposals/todo-1.0.xml b/build-legacy/core/xdocs/proposals/todo-1.0.xml
deleted file mode 100644
index c18aad4..0000000
--- a/build-legacy/core/xdocs/proposals/todo-1.0.xml
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0"?>
-<document url="./todo-1.1.xml">
-
-  <properties>
-    <title>The Struts Project TODO List for Version 1.0</title>
-  </properties>
-
-  <body>
-
-
-  <section name="Introduction" href="Intro">
-
-  <p>Application frameworks, like the applications we build with them,
-  never seem to be completed.  The following are the remaining work items
-  before Version 1.0 of Struts can be released.</p>
-
-  <p>The TODO list tasks are divided into functional areas that correspond
-  to the major components of the Struts Framework.  References in square
-  brackets are the Java package containing the corresponding source code.</p>
-
-  </section>
-
-
-  <task-list name="Struts Documentation" href="Docs">
-
-    <info>
-      <p>Omnibus task list for items related to the Struts Documentation,
-      which do not have direct relationships with code bases.</p>
-    </info>
-
-  </task-list>
-
-
-  <task-list name="Struts Example Application" href="Example">
-
-    <info>
-      <p>An example web application utilizing the Struts framework and
-      custom tag library.</p>
-    </info>
-
-  </task-list>
-
-
-  <task-list name="MVC Framework [org.apache.struts.action]" href="MVC">
-
-    <info>
-      <p>This is the core controller servlet, with support for the developer's
-      action and form bean classes, plus the supporting data structures.</p>
-    </info>
-
-    <task name="Deprecation Warnings">
-      <info>
-        <p>Review framework-wide use of features that have now been
-        deprecated.</p>
-      </info>
-    </task>
-
-  </task-list>
-
-
-  <task-list name="XML Digester [org.apache.struts.digester]" href="Digester">
-
-    <info>
-      <p>The Digester package supports scripted firing of "rules" based on
-      matching a particular pattern of nested XML tags.  Among the predefined
-      rules that can be utilized are rules to create new objects, set bean
-      properties from the contents of attributes, or call arbitrary methods
-      with arguments based on the XML content being parsed.  A common
-      use for this technology (illustrated in the Struts ActionServlet), is
-      parsing configuration files and building corresponding object trees.</p>
-    </info>
-
-  </task-list>
-
-
-  <task-list name="Bean Tag Library [org.apache.struts.taglib.bean]"
-             href="BEAN">
-
-    <info>
-      <p>This tag library contains basic tags useful in manipulating JavaBeans
-      and their properties.  It includes support for getting and setting bean
-      properties using simple, nested, and subscripted accessor expressions.
-      </p>
-    </info>
-
-  </task-list>
-
-
-  <task-list name="HTML Forms Tag Library [org.apache.struts.taglib.html]"
-             href="HTML">
-
-    <info>
-    <p>This tag library contains tags useful in preparing web applications that
-    use HTML forms as their primary mechanism for user data entry, as well as
-    support for internationalized and localized applications.</p>
-    </info>
-
-  </task-list>
-
-
-  <task-list name="Utility Classes" href="Util">
-
-    <info>
-      <p>This package contains a variety of utility classes useful within
-      Struts as well as in stand-alone applications.</p>
-    </info>
-
-    <task name="Update HTML Filtering">
-      <info>
-        <p>Update the filtering supported by <code>BeanUtils.filter()</code>.
-        </p>
-        [STRUTS-DEV, Matthias Kerkhoff, 11/13/2000]
-      </info>
-    </task>
-
-  </task-list>
-
-
-  </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/proposals/todo-1.1.xml b/build-legacy/core/xdocs/proposals/todo-1.1.xml
deleted file mode 100644
index 0d9a602..0000000
--- a/build-legacy/core/xdocs/proposals/todo-1.1.xml
+++ /dev/null
@@ -1,608 +0,0 @@
-<?xml version="1.0"?>
-<document url="./todo-1.1.xml">
-
-  <properties>
-    <title>Features We'd Like To See - The Struts Project Wish List</title>
-  </properties>
-
-  <body>
-
-
-  <section name="Introduction" href="Intro">
-
-  <p>Application frameworks, like the applications we build with them,
-  never seem to be completed.  The following major areas of improvement
-  are being considered for implementation in a future version 
-  of Struts. </p>
-
-  <p>Which features are implemented first depends greatly on 
-  individual developers becoming involved in the process. Many key 
-  features in Struts grew out of code first distributed on the mailing 
-  list. If there is a feature here that you need, or already have, please 
-  start a thread and show us the code!</p>
-
-  <p class="center"><a href="../faqs/helping.html#release"><strong>So, when is the next release coming out?</strong></a></p>
-
-  <p>An external development that is likely to affect the development of
-  Struts 1.1 will be the emerging Standard Tag Library, being produced under
-  the <a href="http://www.jcp.org/jsr/detail/52.jsp">Java Community Process</a>. 
-  A very early release is now available at 
-  <a href="http://jakarta.apache.org/taglibs/doc/jsptl-doc/intro.html">Jakarta 
-  Taglibs</a>.</p>
-
-  <p>The existing Struts tags were used as input to the standardization process,
-  but in the case where standard tags with similar functionality are adopted,
-  we should migrate Struts tags to maintain maximum compatibility with the
-  new standard library.</p>
-
-  </section>
-
-  <section name="Pending Tasks"  href="pending">
-  
-  <ul>
-  <li><a href="workflow.html">Workflow</a></li>
-  <li><a href="http://husted.com/struts/resources/logic-niallp.htm">If/Else/Switch tags</a></li>
-  <li><a href="http://husted.com/struts/resources/codemaker.htm">Code generator</a></li>
-  </ul>
- 
-  <p>See also the Service Manager packages in the contrib folder.</p>
-
-  <p>The wish list tasks are divided into functional areas that correspond
-  to the major components of the Struts Framework. References in square
-  brackets are the Java package containing the corresponding source code. 
-  Listing a task here is not a guarantee that it will be present in the 
-  next release. Again, whether a wish becomes a feature depends on whether 
-  there are volunteers who choose to work on the task. </p>
-
-  </section>
-
-  <task-list name="Struts Documentation" href="Docs">
-
-    <info>
-      <p>Omnibus task list for items related to the Struts Documentation,
-      which do not have direct relationships with code bases.</p>
-    </info>
-
-    <task name="Taglib Chapters for User Guide">
-    <info>
-     Incorporate the Taglib documentation and Developer Guides into the User Guide, 
-     by including the source of these from their present locations.
-    </info>   
-    </task>
-
-    <task name="TODO stylesheet">
-    <info>
-     Revise TODO stylesheet to add Status and Source elements, and to support mailto 
-     links for volunteers in Assigned element. All elements should support hypertext 
-     links. 
-     </info>   
-    </task>
-
-    <task name="Taglib stylesheet">
-    <info>
-     Add support for "since" element for tracking changes to tags between versions.
-    </info>   
-    </task>
-
-    <task name="Contribution Reviews">
-    <info>
-     Area to post articles about contributions from Struts developers.
-    </info>   
-    </task>
-
-    <task name="Expanded FAQ">
-    <info>
-     Area to post a "choice" FAQ of truly common questions.
-    </info>   
-    </task>
-
-  </task-list>
-
-
-  <task-list name="Struts Example Application" href="Example">
-
-    <info>
-      <p>An example web application utilizing the Struts framework and
-      custom tag library.</p>
-    </info>
-
-    <task name="Better Database Support">
-      <info>
-        <p>Use a "real" database of some sort (while still making Struts
-        easy to install.</p>
-      </info>
-      <assigned>
-        <a href="mailto:husted@apache.org">Ted Husted</a>
-      </assigned>
-
-    </task>
-
-    <task name="Locale Switching">
-      <info>
-        <p>Add support for switching Locales on the fly to the Struts
-        example application.</p>
-      </info>
-      <assigned>
-        <a href="mailto:husted@apache.org">Ted Husted</a>
-      </assigned>
-    </task>
-
-  </task-list>
-
-
-  <task-list name="MVC Framework [org.apache.struts.action]" href="MVC">
-
-    <info>
-      <p>This is the core controller servlet, with support for the developer's
-      action and form bean classes, plus the supporting data structures.</p>
-    </info>
-
-    <task name="Workflow Processing">
-      <info>
-        <p>Create a mechanism by which business logic (now encoded in
-        <code>Action</code> classes) can be subdivided into individual work
-        <code>Tasks</code> that are combined according to configuration
-        information (including flow control and iteration support) in the
-        <code>struts-config.xml</code> file.  Support for workflow processing
-        would be provided by a set of standard <code>Actions</code>, and
-        will offer an alternative mechanism (not a replacement of Actions)
-        to organizing your business logic.</p>
-        <p><a href="proposal-workflow.html"><strong>A Workflow Proposal is pending.</strong></a></p>    
-      </info>
-      <assigned>
-        <a href="mailto:craiger@tataryn.net">Craig Tataryn</a>,
-        <a href="mailto:nic.hobbs@uk.pwcglobal.com">Nic Hobbs</a>
-      </assigned>
-    </task>
-
-    <task name="PropertyEditor Support">
-      <info>
-        <p>Add support for JavaBeans that include a <code>PropertyEditor</code>
-        class for conversion to and from the string representation used in an
-        HTML input field.  This support should operate in a manner consistent
-        with the way that standard JSP tags do in JSP 1.2.</p>
-      </info>
-    </task>
-
-    <task name="Event and Listener Model">
-      <info>
-        <p>Retrofit the Struts controller framework with supports for event
-        generation (and the corresponding registration of listeners) for all
-        interesting events created by the framework.  The list of interesting
-        events will undoubtedly be influenced by changes related to other
-        work items on this list (such as workflow processing and standard
-        validations), so work on this should be coordinated with those
-        changes.</p>
-        <p>
-        [STRUTS-DEV, Robert Leland, 10/10/2000]
-        [STRUTS-DEV, David Geary, 12/20/2000]
-        [STRUTS-USER, Ted Husted, 12/23/2000]
-        </p>
-      </info>
-    </task>
-
-    <task name="EJB Design Patterns">
-      <info>
-        <p>Begin adding design patterns and support for easy integration with
-        Enterprise JavaBeans (EJBs) for encapsulation of business logic and
-        application data.</p>
-      </info>
-      <assigned>
-        <a href="mailto:mschachter@hp.com">Mike Schachter</a>
-      </assigned>
-    </task>
-
-    <task name="HTML No-Cache Support">
-      <info>
-        <p>Improve the current Struts support for generating no-cache headers
-        to provide finer-grained, configurable control on a per-page basis.
-        </p>
-        <p>
-        [STRUTS-DEV, Hou Yunfeng, 10/07/2000]
-        [STRUTS-DEV, Matthias Kerkhoff, 11/18/2000]
-        </p>
-      </info>
-    </task>
-
-  </task-list>
-
-  <task-list name="Bean Tag Library [org.apache.struts.taglib.bean]"
-             href="BEAN">
-
-    <info>
-      <p>This tag library contains basic tags useful in manipulating JavaBeans
-      and their properties.  It includes support for getting and setting bean
-      properties using simple, nested, and subscripted accessor expressions.
-      </p>
-    </info>
-
-    <task name="XPath Support">
-      <info>
-        <p>Update all of the relevant tags to include property accessor support
-        using the syntax specified by the XPath standard (www.w3c.org).</p>
-      </info>
-      <assigned>
-        <a href="mailto:javabettin@yahoo.com">Dave Bettin</a>
-      </assigned>
-    </task>
-
-    <task name="XML DOM Support">
-      <info>
-        <p>Update all of the relevant tags to get and set attributes from a
-        Java object that implements the XML Document Object Model, as well as
-        from the current tree of JavaBean objects.  How the underlying data
-        object is stored should be transparent to page writers using these
-        tags.</p>
-      </info>
-      <assigned>
-        <a href="mailto:javabettin@yahoo.com">Dave Bettin</a>
-      </assigned>
-    </task>
-
-    <task name="XML DOM / JDBC RowSet Support">
-      <info>
-        <p>Update all of the relevant tags to get and set attributes from a
-        JDBC RowSet (or ResultSet) object, as well as from XML DOM objects and
-        the current tree of JavaBean objects.  How the underlying data object
-        is stored should be transparent to page writers using these tags.
-        </p>
-      </info>
-      <assigned>
-        <a href="mailto:javabettin@yahoo.com">Dave Bettin</a>
-      </assigned>
-    </task>
-
-    <task name="Formatting Support">
-      <info>
-        <p>Add the ability to use formatting patterns (suitably localized) for
-        presenting numbers, dates, times, timestamps, and so on via formatted
-        patterns.</p>
-        <p>
-        [STRUTS-DEV, Oleg Alexeev, 10/27/2000]
-        [STRUTS-USER, Ned Seagoon, 12/11/2000]
-        [STRUTS-DEV, Ned Seagoon, 12/13/2000]
-        [STRUTS-USER, Ned Seagoon, 01/04/2001]
-        </p>
-      </info>
-      <assigned>
-        <a href="mailto:javabettin@yahoo.com">Dave Bettin</a>
-      </assigned>
-    </task>
-
-  </task-list>
-
-
-  <task-list name="HTML Tag Library [org.apache.struts.taglib.html]"
-             href="HTML">
-
-    <info>
-    <p>This tag library contains tags useful in preparing web applications that
-    use HTML forms as their primary mechanism for user data entry, as well as
-    support for internationalized and localized applications.</p>
-    </info>
-
-    <task name="Radio Button Groups">
-      <info>
-        <p>Add a new tag that supports generation of groups of radio buttons.
-        </p>
-        <p>
-        [STRUTS-DEV, Wellington Silva, 08/28/2000]
-        </p>
-      </info>
-    </task>
-
-    <task name="Improve Options Tag">
-      <info>
-        <p>Improve the mechanism by which you define values and corresponding
-        labels for <code>&lt;html:options&gt;</code>.</p>
-        <p>
-        [STRUTS-DEV, David Winterfeldt, 07/27/2000]
-        [STRUTS-DEV, David Winterfeldt, 08/02/2000]
-        [STRUTS-DEV, Andy Boyko, 11/15/2000]
-        [STRUTS-DEV, Andy Boyko, 12/07/2000]
-        </p>
-      </info>
-    </task>
-
-    <task name="Additional Attributes">
-      <info>
-        <p>Support additional HTML 4.0.1 attributes (such as "disabled",
-        "readonly", "wrap" on textarea)
-        where appropriate.</p>
-        <p>
-        [STRUTS-USER, , 08/23/2000]
-        </p>
-      </info>
-    </task>
-
-    <task name="Improved Iteration Support">
-      <info>
-        <p>Improve the ability to use the <code>&lt;logic:iterate&gt;</code>
-        tag over a collection, and generate a set of input fields for each
-        member of the collection (perhaps auto-generating a subscript?).
-        A significant use case is master-detail relationships (say, a
-        customer and their current orders) where you allow editing of any
-        and all fields.</p>
-        <p>
-        [STRUTS-USER, Lars, 12/06/2000]
-        [STRUTS-USER, Chandan Kulkarni, 12/26/2000]
-        </p>
-      </info>
-    </task>
-
-    <task name="Multi-Page Form Support">
-      <info>
-        <p>Create design patterns and improved internal support for forms that
-        span multiple pages.</p>
-      </info>
-      <assigned>
-        <a href="mailto:nic.hobbs@uk.pwcglobal.com">Nic Hobbs</a>
-      </assigned>
-    </task>
-
-  </task-list>
-
-  <task-list name="Logic Tag Library [org.apache.struts.taglib.logic]"
-             href="Logic">
-
-    <info>
-      <p>This tag library provides mechanisms to conditionally process
-      nested body content based on a variety of logical conditions.</p>
-    </info>
-
-    <task name="'Else' and 'Else If' Capability and Other Conditional Structures">
-      <info>
-        <p>Add "else" and "else if" constructs to the existing conditional
-        tags, in some reasonable format.</p>
-        <p>Add conditional tags that emulate the "case" or "switch"
-        capability of many programming languages.</p>
-        <p>NOTE: Pending the outcome of the JSPTL, this functionality will 
-        <strong>not</strong> be added to the Struts-Logic tags. However, a 
-        <a href="http://husted.com/struts/resources/logic-niallp.htm"><strong>contributor 
-         taglib</strong></a> is available.</p>
-      </info>
-      <assigned>
-        <a href="mailto:niall.pemberton@btInternet.com">Niall Pemberton</a>
-      </assigned>
-    </task>
-
-    <task name="Iterating Parallel Collections">
-      <info>
-        <p>Enhance <code>&lt;logic:iterate&gt;</code>, or provide a new
-        tag, to iterate over multiple collections in parallel.</p>
-        <p>
-        [STRUTS-DEV, Jeff R., 08/03/2000]
-        </p>
-      </info>
-    </task>
-
-  </task-list>
-
-
-  <task-list name="WML Tag Library [org.apache.struts.taglib.wml]"
-             href="WML">
-
-    <info>
-    <p>This tag library will contain tags useful in preparing web applications
-    similar to those supported by the HTML tag library, but render output that
-    is well-formed XML in accordance with WML specifications.</p>
-    </info>
-
-  </task-list>
-
-
-  <task-list name="XFORMS Tag Library [org.apache.struts.taglib.xforms]"
-             href="xforms">
-
-    <info>
-      <p>This potential new tag library provides access to facilities in the
-      emerging XForms standards.</p>
-    </info>
-
-    <task name="Generalized Form Handling">
-      <info>
-        <p>Consider how to support more generalized definitions of forms and
-        their fields, perhaps based on emerging XForms standards.</p>
-      </info>
-    </task>
-
-  </task-list>
-
-
-  <task-list name="XHTML Tag Library [org.apache.struts.taglib.xhtml]"
-             href="XHTML">
-
-    <info>
-    <p>This tag library will contain tags useful in preparing web applications
-    similar to those supported by the HTML tag library, but render output that
-    is well-formed XML in accordance with the XHTML 1.0 specification.</p>
-    </info>
-
-  </task-list>
-
-
-  <task-list name="Tools Support [org.apache.struts.tools]"
-             href="Tools">
-
-    <info>
-      <p>This package contains code generators and other tools that
-      facilitate the creation of Struts-based applications.  Further
-      subdivision into specialized packages should be performed as
-      appropriate.</p>
-    </info>
-
-    <task name="XML --&gt; ActionForm Code Generator">
-      <info>
-        <p>Create a tool that takes an XML-based description of the
-        properties of the form bean, and automatically generates
-        the corresponding Java class.</p>
-        <p><a href="http://husted.com/struts/resources/codemaker.htm"><strong>A 
-        contributor extension is now available.</strong></a></p>
-        <p>
-        [STRUTS-DEV, Mark Wutka, 06/01/2000 and 06/16/2000]
-        </p>
-      </info>
-      <assigned>
-        <a href="ravi@sengen.com">Ravindran Ramaiah</a>
-      </assigned>
-    </task>
-
-  </task-list>
-
-
-  <task-list name="Utility Classes [org.apache.struts.util]" href="Util">
-
-    <info>
-      <p>This package contains a variety of utility classes useful within
-      Struts as well as in stand-alone applications.</p>
-    </info>
-
-    <task name="XmlMessageResources">
-      <info>
-        <p>Implementation of <code>MessageResources</code> and
-        <code>MessageResourcesFactory</code> that loads message keys
-        and strings from one or more XML resources or files.</p>
-        <p>
-        [STRUTS-DEV, Scott Sayles, 01/07/2000]
-        </p>
-      </info>
-    </task>
-
-    <task name="Enhanced Collections Support">
-      <info>
-        <p>Improve support in <code>BeanUtils</code>,
-        <code>ConvertUtils</code>, and <code>PropertyUtils</code> for property
-        values that implement <code>Collection</code>, <code>List</code>, or
-        <code>Set</code>, treating them in a manner similar to the way that
-        indexed or array-valued properties are handled.</p>
-        <p>
-        [Bugzilla #640]
-        </p>
-      </info>
-    </task>
-  </task-list>
-
-  <task-list name="Unit Test Suites" href="UnitTests">
-
-    <info>
-      <p>Unit test components compatible with the JUnit and Cactus testing
-      frameworks, to test and validate internal APIs of the Struts framework.
-      Volunteers will typically agree to develop tests for an entire package
-      within the Java source code of Struts.
-      </p>
-    </info>
-
-    <task name="Action">
-      <info>
-        <p>Unit tests for the <code>org.apache.struts.action</code> package.</p>
-      </info>
-      <assigned>
-        <a href="mailto:struts-test@freetocreate.org">Rob Leland</a>
-      </assigned>
-    </task>
-
-    <task name="Actions">
-      <info>
-        <p>Unit tests for the <code>org.apache.struts.actions</code> package.</p>
-      </info>
-    </task>
-
-    <task name="Taglib.Bean">
-      <info>
-        <p>Unit tests for the <code>org.apache.struts.taglib.bean</code> package.</p>
-      </info>
-    </task>
-
-    <task name="Taglib.Html">
-      <info>
-        <p>Unit tests for the <code>org.apache.struts.taglib.html</code> package.</p>
-      </info>
-    </task>
-
-    <task name="Taglib.Logic">
-      <info>
-        <p>Unit tests for the <code>org.apache.struts.taglib.logic</code> package.</p>
-      </info>
-    </task>
-
-    <task name="Taglib.Template">
-      <info>
-        <p>Unit tests for the <code>org.apache.struts.taglib.template</code> package.</p>
-      </info>
-    </task>
-
-    <task name="Upload">
-      <info>
-        <p>Unit tests for the <code>org.apache.struts.taglib.upload</code> package.</p>
-      </info>
-    </task>
-
-    <task name="Util">
-      <info>
-        <p>Unit tests for the <code>org.apache.struts.util</code> package.</p>
-      </info>
-    </task>
-
-  </task-list>
-
-
-  <task-list name="Additional Possibilities" href="Additional">
-
-    <info>
-      <p>This section is a catch-all for additional areas of functionality
-      to be investigated for inclusion into Struts.</p>
-    </info>
-
-    <task name="Coarse Grain Components">
-      <info>
-        [STRUTS-DEV, Cedric Dumoulin, 10/03/2000]
-      </info>
-    </task>
-
-    <task name="Multidimensional Properties">
-      <info>
-        [STRUTS-DEV, Eric, 11/07/2000]
-      </info>
-    </task>
-
-    <task name="Portal Components">
-      <info>
-        [STRUTS-DEV, Phil Grimm, 11/22/2000]
-      </info>
-      <assigned>
-        <a href="mailto:husted@apache.org">Ted Husted</a>
-      </assigned>
-    </task>
-
-    <task name="Storefront Example App">
-      <info>
-        [STRUTS-DEV, David D'Orto, 12/11/2000]
-      </info>
-    </task>
-
-  </task-list>
-
-
-  <task-list name="Contributors Area" href="Contrib">
-
-    <info>
-      <p>A portion of the Struts web site, and file system, where individually
-      contributed add-ons for Struts can be hosted and downloaded.</p>      
-    </info>
-    
-    <task name="Proposal">
-     <info>
-       <p>Detailed proposal with implementation plan.</p>
-       <p> [STRUTS-USER, Ned Seagoon, 12/22/2000]</p>
-     </info>
-     <assigned>
-      <a href="mailto:husted@apache.org">Ted Husted</a>
-     </assigned>
-    </task>
-
-  </task-list>
-
-
-  </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/proposals/workflow.xml b/build-legacy/core/xdocs/proposals/workflow.xml
deleted file mode 100644
index c9f2913..0000000
--- a/build-legacy/core/xdocs/proposals/workflow.xml
+++ /dev/null
@@ -1,397 +0,0 @@
-<?xml version="1.0"?>
-<document url="./proposal-workflow.xml">
-
-  <properties>
-    <title>Proposal - Workflow Management System</title>
-  </properties>
-
-  <body>
-
-    <section name="Recent Developments">
-
-        <p>
-            Work on this initiative has stalled.
-            It is recommended that interested parties look to the
-            <a href="http://jakarta.apache.org/commons/jelly/index.html">Commons Jelly</a> product.
-            A way to persist the workflow state between sessions is needed, but Jelly otherwise fills the needs identified by this proposal.
-        </p>
-
-    </section>
-
-  <section name="Background and Goals">
-
-  <p>Struts 1.0 has become an increasingly popular platform for constructing
-  web applications based on a Model-View-Controller type design pattern (also
-  known as the <em>Front Controller</em> pattern.  It has achieved this
-  popularity for many reasons, but key among them have been:</p>
-  <ul>
-  <li>The simplicity of the basic organizational principles (once you
-      understand them)</li>
-  <li>The principle of <em>logical naming</em> to assist in isolating
-      the view layer and the model layer, so that changes in one do not
-      have to impact the other</li>
-  <li>A rich set of tools to assist in creating pages with dynamic content
-      exposed by the model layer through JavaBeans</li>
-  </ul>
-
-  <p>One consequence of the original Struts design, however, is that the
-  framework does not provide much assistance in organizing business
-  transactions that require more than one interaction with the user (i.e.
-  they span more than one JSP page and/or Action).  Applications are left
-  to manage navigation issues, as well as deal with ActionForms whose
-  logical contents crosses page boundaries.</p>
-
-  <p>The original Struts design materially assists page designers in creating
-  dynamic pages, while protecting them from having to be very concerned with
-  the business logic -- other than the names of the JavaBeans used to
-  communicate model layer data to the presentation layer.  However, Struts 1.0
-  still requires a Java developer to be involved on the business logic side
-  (even if all of the functional logic is already available in Java classes)
-  in order to create the Action classes.</p>
-
-  <p>The purpose of this <em>Workflow Management System</em> proposal is to
-     address some of these consequences.  In particular, it intends to address
-     the following set of goals:</p>
-  <ul>
-  <li>Create a means where multiple-user-interaction business processes can be
-      configured (scripted), including support for conditional processing
-      and branching.</li>
-  <li>Support scripting elements that lets business application experts,
-      who are not necessarily Java developers, can integrate pre-existing
-      business functionality that is available as public methods on
-      arbitrary Java classes.</li>
-  <li>Assist page designers in creating the user interface elements that
-      correspond to navigation links within, or between, work flows.</li>
-  </ul>
-
-  </section>
-
-
-  <section name="Use Cases and Examples">
-
-    <p>To give a flavor of what scripted workflow activities might look like,
-    it is useful to consider some possible use case scenarios.  The
-    syntax that is shown for the examples should be considered as
-    illustrative of what should be possible, rather than normative.
-    No rigorous attempt has been made to guarantee consistency
-    between (or even within) these examples.</p>
-
-    <subsection name="Application Logon">
-
-      <p>The example application included with Struts (like many other
-      web applications) uses application-managed security, including
-      a logon form.  Consider that a business logic bean might be available
-      (in some scope under key <code>authenticator</code>)
-      that knows how to authenticate users given a username and password.
-      It could be utilized to script application logon like this:</p>
-
-<pre>
-&lt;activity id="Application Logon"&gt;
-
-  &lt;-- Display the logon form (web framework independent) --&gt;
-  &lt;web:forward id="display" page="/logon.jsp"/&gt;
-
-  &lt;-- Authenticate the username and password, returning a Principal
-      if accepted, or null if not --&gt;
-  &lt;web:set  name="username" value="$parameter:username"/&gt;
-  &lt;web:set  name="password" value="$parameter:password"/&gt;
-  &lt;core:invoke bean="authenticator" method="authenticate"&gt;
-    &lt;core:param type="java.lang.String" value="$username"/&gt;
-    &lt;core:param type="java.lang.String" value="$password"/&gt;
-    &lt;core:return name="principal"/&gt;
-  &lt;/core:invoke&gt;
-
-  &lt;-- If no Principal was returned, branch back to the logon form --&gt;
-  &lt;core:if expr="$principal == null"&gt;
-    &lt;web:set name="error" value="$messages.lookup('invalid.logon')"/&gt;
-    &lt;core:branch idref="display"/&gt;
-  &lt;/core:if&gt;
-
-  &lt;-- Exit to the "Main Menu" workflow --&gt;
-  &lt;core:goto name="Main Menu"/&gt;
-
-&lt;/activity&gt;
-</pre>
-
-    </subsection>
-
-
-    <subsection name="Simple Multi-Page Wizard">
-
-      <p>Many complex data entry operations can be simplified (from the
-      user's point of view) by dividing them up into a series of simple
-      dialog pages that ask a few (often one) question that leads ultimately
-      to a completed set of information required to process a request.
-      In many cases, each page of the interaction will have navigation
-      controls so that the user can short cut to immediate execution,
-      or cancel the entire interaction.  Such an interaction might be
-      modelled like this:</p>
-
-<pre>
-&lt;activity id="Simple Wizard Application"&gt;
-
-  &lt;!-- Display the first page of the iteration --&gt;
-  &lt;!-- (Using Struts-specific logical-to-physical mapping) --&gt;
-  &lt;struts:forward id="page1" name="Simple Wizard Page 1"&gt;
-
-  &lt;!-- Process navigation input from the first page --&gt;
-  &lt;!-- (Can do something much like this framework-independently too) --&gt;
-  &lt;struts:navigate&gt;
-    &lt;struts:branch control="CANCEL" idref="cancel"/&gt;
-    &lt;struts:branch control="FINISH" idref="finish"/&gt;
-    &lt;struts:branch control="NEXT"   idref="page2"/&gt;
-  &lt;/struts:navigate&gt;
-
-  &lt;!-- Display the second page of the iteration --&gt;
-  &lt;struts:forward id="page2" name="Simple Wizard Page 2"&gt;
-
-  &lt;!-- Process navigation input from the second page --&gt;
-  &lt;struts:navigate&gt;
-    &lt;struts:branch control="CANCEL" idref="cancel"/&gt;
-    &lt;struts:branch control="FINISH" idref="finish"/&gt;
-    &lt;struts:branch control="NEXT"   idref="page3"/&gt;
-    &lt;struts:branch control="PREV"   idref="page1"/&gt;
-  &lt;/struts:navigate&gt;
-
-  &lt;!-- Display the third page of the iteration --&gt;
-  &lt;struts:forward id="page3" name="Simple Wizard Page 3"&gt;
-
-  &lt;!-- Process navigation input from the third page --&gt;
-  &lt;struts:navigate&gt;
-    &lt;struts:branch control="CANCEL" idref="cancel"/&gt;
-    &lt;struts:branch control="FINISH" idref="finish"/&gt;
-    &lt;struts:branch control="PREV"   idref="page2"/&gt;
-  &lt;/struts:navigate&gt;
-
-  &lt;!-- Process the FINISH navigation control as appropriate --&gt;
-  &lt;xxx:yyy id="finish" .../&gt;
-  &lt;core:goto name="Main Menu"/&gt;
-
-  &lt;!-- Process the CANCEL navigation control as appropriate --&gt;
-  &lt;xxx:yyy id="cancel" .../&gt;
-  &lt;core:goto name="Main Menu"/&gt;
-
-&lt;/activity&gt;
-</pre>
-
-
-      <p>Not illustrated above, but also interesting to explore, would be
-      the situation where choices on one page affect whether some pages
-      in the overall flow might be skipped.</p>
-
-    </subsection>
-
-
-  </section>
-
-
-  <section name="User Visible Features">
-
-
-    <p>Workflow system capabilities will be exposed to applications through
-    Java APIs that represent both the static description of particular
-    activities and the dynamic current state of a computation.  Object
-    factory and pluggable implementation patterns shall be used where
-    appropriate to maximize the generality and flexibility of the system.</p>
-
-
-    <subsection name="Workflow Management System Implementation Objects">
-
-      <p>The following classes represent the primary components of the
-      workflow management system:</p>
-
-      <p><strong>Registry</strong> - Collection into which multiple
-      <em>Process</em> and <em>Activity</em> static descriptions can be
-      stored and retrieved by String-valued keys.</p>
-
-      <p><strong>Process</strong> - The static description of a tree of
-      business activities that are executed in a nested fashion, often by
-      separate individuals (or application systems).</p>
-
-      <p><strong>Activity</strong> - The static description of a sequence
-      of Steps that are generally executed by a single individual (or
-      application system), within a reasonably short period of time.</p>
-
-      <p><strong>Step</strong> - The static description of an individual
-      task to be performed as a discrete, indivisible, unit.  Steps can
-      also be nested inside other steps, to provide for looping and
-      conditional processing.  A rich set of built-in Step implementations
-      shall be provided (including powerful capabilities such as the
-      execution of an arbitrary method on an arbitrary Java object), and
-      mechanisms to extend the set of supported Step implementations
-      allows arbitrary extensibility.</p>
-
-      <p><strong>Context</strong> - The dynamic state of a computation
-      through an <em>Activity</em> (or a set of nested <em>Activities</em>),
-      including provision of storage space for JavaBeans produced and
-      consumed by other Steps.  Contexts keep track of the current Step
-      being executed, so that activity processing can be suspended and
-      resumed later.</p>
-
-      <p><strong>Scope</strong> - A <code>Map</code> into which
-      arbitrary Java objects can stored and retrieved by String-valued keys.
-      Context support a number of individual Scopes, each of which can be
-      plugged in from application logic, to provide integration into
-      existing application functionality.  For example, in a web application
-      implementation, Scopes will generally be mapped directly to request
-      attributes, session attributes, and servlet context attributes as
-      provided by the Servlet API.</p>
-
-    </subsection>
-
-
-    <subsection name="Built-In Steps">
-
-      <p>A rich variety of built-in <em>Step</em> implementations (and
-      corresponding XML elements in specified namespaces) will be provided
-      as part of the basic workflow engine, and as part of the associated
-      Struts integration of this engine.</p>
-
-      <p><strong>Bean Interaction</strong> - The ability to get and set
-      JavaBeans in arbitrary Scopes (mapped via the Context to real collections
-      of objects).</p>
-
-      <p><strong>Control Flow</strong> - Conditionals and looping, where
-      control flow Steps can contain nested sets of Steps to an arbitrary
-      degree.</p>
-
-      <p><strong>Method Execution</strong> - Execute arbitrary public methods
-      of beans stored in some Scope, passing specified arguments (expressions
-      or bean references) and returning the method's result (if any) to a
-      named bean in some Scope.  To maximize usefulness of the workflow
-      system in composing applications, <strong>no</strong> restrictions
-      should be placed on the object types these Steps can interact with.</p>
-
-      <p><strong>Activity Management</strong> - GOTO a named Activity
-      (exiting the current one), CALL a named Activity (resuming the current
-      one when the called Activity returns, RETURN from a called Activity,
-      EXIT the Activity system.</p>
-
-      <p><strong>User Interaction</strong> - Suspend workflow execution to
-      interact with the user in some application specific way.  For example,
-      a web application would display a page and wait for input to be
-      submitted before resuming the workflow.</p>
-
-      <p><strong>Specialized Processing</strong> - Prebuilt Steps for common
-      processing functions such as XSLT transformations, performing
-      arbitrary SQL queries, sending mail, and so on.</p>
-
-    </subsection>
-
-
-  </section>
-
-
-  <section name="Implementation Notes">
-
-  <p>The implementation of this proposal will be divided into three major
-  development layers:</p>
-  <ul>
-  <li>Core workflow management system capabilities and built in Step
-      implementations that are independent of application environment.
-      [Code in jakarta-commons]</li>
-  <li>Specialized implementation of workflow management system components
-      that integrate with the Servlet API in a manner that is independent
-      of any specific application framework.  [Code in jakarta-commons]</li>
-  <li>Specialized implementation of workflow management system components
-      that is tightly integrated with Struts's internal architecture and
-      custom tag libraries.  [Code in jakarta-struts]</li>
-  </ul>
-
-  <p>The workflow management system will support the general concept of
-  <em>Scopes</em> in which beans can be stashed, with pluggable
-  implementations for integration into different working environments.
-  None of the APIs in the workflow engine itself will have any reference
-  to the web layer (i.e. no imports of <code>javax.servlet.*</code>).</p>
-
-  <p>Suitable object factory and pluggability APIs will be included
-  to guarantee extensibility of the basic framework.
-  </p>
-
-  <p>Scripting of business transactions will be codified in XML documents
-  that conform to an appropriate DTD and/or schema.  The XML technology
-  that is used will facilitate extensible definitions of <em>Steps</em>
-  and other components, in both the XML description of these components and
-  in the set of Java objects that implements them.
-  </p>
-
-    
-  <p>When designing the detailed syntax of the XML representation
-  of Steps, consider whether it is feasible for advanced development
-  tools to "compile" activities into individual classes to optimize
-  overall performance.
-  </p>
-  
-  <p>When designing the detailed syntax of the XML representation
-  of Steps, consideration should be given to emulating the syntax
-  of other XML applications that are similar in spirit or detail
-  to the concepts of scripting a business transaction.  Useful
-  models to consider include:
-  </p>
-    <ul>
-    <li><a href="http://www.w3.org/TR/xslt">XSL Transformations (XSLT)</a>
-        - Includes control flow mechanisms that are becoming widely
-        known and understood, which could be mimicked.</li>
-    <li><a href="http://jakarta.apache.org/taglibs/jsptl-doc/intro.html">
-        JSP Standard Tag Library (Early Access)</a> - The design goals for
-        many of the JSP custom tags in this library (produced by the
-        JSR-052 expert group under the Java Community Process) are similar
-        enough to provide a useful model for conditionals, looping, and
-        interaction with objects in arbitrary scopes.</li>
-    </ul>
-
-    <p>To maximize the usefulness of built-in actions, an expression
-    language that knows how to manipulate objects in the Scopes associated
-    with the current Context will need to be supported.  Useful models to
-    consider include:</p>
-    <ul>
-    <li><a href="http://www.w3.org/TR/xpath">XML Path Language (XPath)</a>
-        - Will be familiar to XML-oriented application developers because
-        it is used throughout the suite of XML specifications.</li>
-    <li>JavaScript like expression languages - Will be familiar to page
-        developers (as well as Struts developers familiar with the
-        nested and indexed property accessor syntax of many Struts tags).</li>
-    </ul>
-
-    <p>From the workflow script developer's point of view, XML namespaces
-    will be used to introduce extended sets of Step implementations.  There
-    will need to be mechanisms to map a particular namespace to a set of
-    legal XML elements (within that namespace) and corresponding Java
-    classes that provide the functionality for those Steps.</p>
-
-  <p>The web layer integration will include a mechanism to map scopes (from
-  the workflow perspective) into the standard <em>request</em>,
-  <em>session</em>, and <em>application</em> scopes of the web layer.
-  Thus, workflow scripts will be able to place beans in appropriate
-  scopes such that JSP pages can directly pull that data into the presentation,
-  much as Struts Actions (and the business logic classes that are called by
-  those Actions) can place beans there in a Struts 1.0 based application.
-  Utilizing these capabilities, application developers will be able to
-  "script" the business logic requirements of many applications, by
-  combining functional logic already available as methods on business
-  logic beans, without having to involve Java programmers to create new
-  Actions (or otherwise synthesize business logic out of the constituent
-  pieces).</p>
-
-  <p>Components in the web layer integration may import APIs from the
-  Servlet and JSP specifications, but not from any application specific
-  framework.  Framework-specific integration will occur on top of the
-  generic web layer integration.</p>
-
-  <p>In addition, the Struts integration will include a small custom tag
-  library will be included, so that page
-  developers can easily create navigational links and controls.  Examples
-  of such controls include links to the "next", "previous", and "finish"
-  pages of a wizard dialog, a "cancel" button to exit a workflow early, or
-  an "invoke" button to invoke a new workflow as a subroutine, and then
-  return to the current step of the original workflow.  Utilizing these
-  capabilities, page developers can create the individual visible pieces
-  of a work flow dialog, without having to be involved in navigational
-  complexities.</p>
-
-  </section>
-
-
-  </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/releases.xml b/build-legacy/core/xdocs/releases.xml
deleted file mode 100644
index 945fb8e..0000000
--- a/build-legacy/core/xdocs/releases.xml
+++ /dev/null
@@ -1,277 +0,0 @@
-<?xml version="1.0"?>
-<document url="./releases.xml">
-
-<!--
-// ======================================================================== 78
--->
-
-<properties>
-    <title>Release Guidelines - The Apache Struts Web Application Framework</title>
-</properties>
-
-<body>
-    <section href="status" name="Release Guidelines">
-
-    <p>
-    This document describes the Struts <a href="#Releases">release process</a> and our <a href="#Coding">coding
-    conventions</a>. Both stable and development releases are <a href="acquiring.html">available for download</a>.
-    </p>
-
-    </section>
-
-    <section href="Releases" name="Release Guidelines">
-
-        <p>
-            A <a href="http://jakarta.apache.org/commons/versioning.html">point release</a>
-            should be made before and after any product change that is not a "fully-compatible change"
-            (see link). This includes moving a dependency from an internal package to an external product,
-            including products distributed through the Jakarta Commons.
-            We should place any fully-compatible changes in the hands of the community
-            before starting on a change that is only "interface" or "external-interface" compatible.
-        </p>
-        <p>
-            A fully-compatible point release does not always need a "preview" beta or milestone release.
-            If appropriate, a Release Candidate can be cut, uploaded to the Release Manager's home directory
-            on svn.apache.org (~/public_html), and voted to be released to the general public from there.
-        </p>
-
-        <p>
-            Any release should follow the same general process used by the Jakarta Commons
-            and the Apache HTTP Server project.
-        </p>
-
-        <ul>
-            <li>
-                 <a href="http://jakarta.apache.org/commons/releases/">Releasing Common Components</a>
-            </li>
-            <li>
-                <a href="http://wiki.apache.org/incubator/SigningReleases">Signing a release version</a>
-                <ul>
-                <li>
-                    <small>The MD5 tool is installed on daedalus, and you can create the digests for Struts releases
-                        there.</small>
-                </li>
-                </ul>
-            </li>
-            <li>
-                <a href="http://httpd.apache.org/dev/release.html">Apache HTTPD Server Release Guidelines</a>
-            </li>
-        </ul>
-
-        <p>
-            Additional remarks:
-        </p>
-
-        <ul>
-            <li>
-                The release process can seem daunting when you review it for the first time.
-                But, essentially, it breaks down into three phases of just a few steps each:
-                <ul>
-                    <li>Building - Bugzilla, dependencies, release notes, JAR manifest, licenses, copyrights, and build
-                        (using the release target).</li>
-                    <li>Testing - JUnit, Cactus, web apps (for all "supported" containers). </li>
-                    <li>Distributing - Checksum, sign, mirror, release, update Struts site, update Jakarta site,
-                        announce.</li>
-                </ul>
-            </li>
-            <li>
-                Our dependencies on external JARs (including Commons JARs) should
-                be in line with our own release status.
-                Our nightly build can be dependant on another nightly build.
-                Our beta can be dependant on another beta,
-                but should avoid a dependance on a nightly build.
-                Our release candidate can have a dependance on another RC,
-                but should not have a dependance on a beta (and certainly <strong>not</strong> a nightly build).
-                Our final release can only have dependencies on other final releases.
-            </li>
-            <li>
-                Use your own discretion as to detail needed by the Release Notes.
-                A high-level description of the changes is more important than providing uninterpreted detail.
-                At a minimum, new features and deprecations should be summarized,
-                since these are commonly asked questions.
-                Ideally, the release notes should be maintained continuously for the nightly build
-                so that we do not need to quickly assembled them on the eve of a Release.
-            </li>
-            <li>
-                Test building the distribution under prior version of J2SE, if possible,
-                to ensure that we are still backwardly-compatible.
-                But, our Release distribution should be built using the <strong>latest release of J2SE</strong>,
-                to take advantage of all available compiler enhancements.
-            </li>
-            <li>
-                Before building the release, run the JUnit and Cactus tests using the same
-                configuration used that will be used to build the Release distribution.
-            </li>
-            <li>
-                There is a "release" target in the buildfile that will zip and tar the releases.
-                Before uploading the release, extract the sample web applications and deploy the WARs under
-                each of the "supported" containers.
-                Play test each application under each container to be sure they operate nominally.
-            </li>
-            <li>
-                Be sure to copy the pmc@jakarta.apache.org list on any release announcement.
-            </li>
-            <li>
-                Remember to update the <a href="status.html">Status section of the Roadmap page</a> 
-                once a release is available. 
-            </li>
-            <li>
-                By the way, the nightly builds are being created on a machine of Craig McClanahan's.
-                If there are problems with a nightly build that seem infrastructure related,
-                Craig is the one to contact.
-            </li>
-        </ul>
-
-    </section>
-
-
-<section href="Coding" name="Coding Conventions and Guidelines">
-
-    <p>
-    Source code and documentation contributed to the Struts repositories
-    should observe the:
-    </p>
-
-    <ul>
-
-        <li>
-          <a href="http://jakarta.apache.org/site/source.html">Jakarta project
-          guidelines</a>,
-        </li>
-
-        <li>
-          <a href="http://www.ambysoft.com/elementsJavaStyle.html">Elements of
-          Java Style</a>, and
-        </li>
-
-        <li>
-          <a href="http://java.sun.com/j2se/javadoc/writingdoccomments/">How to
-          write Doc Comments</a>
-        </li>
-
-    </ul>
-
-    <p>
-    as core references regarding the formatting of code and documentation.
-    </p>
-
-    <p>
-    <strong>Clarifications</strong>
-    </p>
-
-    <ul>
-
-        <li>
-        First, "Observe the style of the original".
-        Resist the temptation to make stylistic changes for their own sake.
-        But, if you must reformat code, commit style changes separately from
-        code changes.
-        Either change the style, commit, and then change the code, or vice-
-        versa.
-        </li>
-
-        <li>
-        Set editors to replace tabs with spaces, and do not trim trailing
-        spaces.
-        </li>
-
-        <li>
-        Specify imported classes (do not use <code>.*</code>).
-        </li>
-
-        <li>
-        Write all if/else statements as full blocks with each clause within braces,
-        unless the entire statement fits on the same line.
-        </li>
-
-        <li>
-        Use <code>:FIXME:</code> and <code>:TODO:</code> tokens to mark follow up
-        notes in code.
-        You may also include your Apache username and the date.
-        <code>:FIXME: we need to do this sometime (husted 2002-11-14)</code>
-        </li>
-
-        <li>
-        Use <code>@since</code> to document changes between Struts versions,
-        as in <code>@since Struts 1.1</code>.
-        </li>
-
-        <li>
-        Wrap lines of code and JavaDoc at column 78.
-        You can include a "comment rule" in the source to help with this.<br />
-        <small>
-        // ------------------------------------------------------------------------ 78
-        </small>
-        </li>
-
-        <li>
-        Please do your best to provide high-quality JavaDocs for all source code
-        elements.
-        Package overviews (aka "Developer Guides") are also encouraged.
-        </li>
-
-        <li>
-        When working on a bugfix, please first write a
-        <a href="http://www.junit.org">JUnit</a> test that proves the bug exists,
-        and then use the test to prove  the bug is fixed. =:0)
-        </li>
-
-        <li>
-        When working on an enhancement, please feel free to use test-driven design
-        and write the test first &lt;head-slap/>.
-        For more about TDD, see the
-        <a href="http://sourceforge.net/projects/mockobjects">MockObjects project
-        </a>.
-        </li>
-
-        <li>
-        As files are updated from year to year, the copyright on each file should
-        be extended to include the current year.
-        You do not need to change the copyright year unless you change the file.
-        Every source file should include the current Apache License and copyright.
-        </li>
-
-        <li>
-        Provide high-level API compatibility for any changes made within the same
-        major release series (#.x).
-        Changes which adversely affect compatibility should be slotted for the
-        next major release series (++#.x).
-        </li>
-
-        <li>
-        Our favorite books about programming are
-        <a href="http://www.amazon.com/exec/obidos/ISBN=0201633612/hitchhikeguidetoA/">
-        Design Patterns</a> and
-        <a href="http://www.amazon.com/exec/obidos/ISBN=0201485672/hitchhikeguidetoA/">
-        Refactoring</a>.
-        </li>
-
-        <li>
-        Our favorite book about open source development is the
-        <a href="http://www.amazon.com/exec/obidos/ISBN=1565927249/hitchhikeguidetoA/">
-        The Cathedral and the Bazaar</a>.
-        </li>
-
-        <li>
-        Our favorite science fiction author is
-        <a href="http://www.nitrosyncretic.com/rah/">Robert Heinlein</a>.
-        <a href="http://www.tuxedo.org/~esr/jargon/html/entry/TANSTAAFL.html">
-        TANSTAAFL</a>.<br />
-        (Except on Friday, when we favor
-        <a href="http://carbon.cudenver.edu/~mstilman/zaphod/">Douglas
-        Adams</a>.
-        <a href="http://news.bbc.co.uk/1/hi/uk/1326657.stm">
-        SLATFATF</a>.)
-        </li>
-
-    </ul>
-
-</section>
-
-<section>
-    <p class="right">
-    Next: <a href="news/index.html">News and Status</a>
-    </p>
-</section>
-
-</body></document>
diff --git a/build-legacy/core/xdocs/status.xml b/build-legacy/core/xdocs/status.xml
deleted file mode 100644
index 8e16f69..0000000
--- a/build-legacy/core/xdocs/status.xml
+++ /dev/null
@@ -1,483 +0,0 @@
-<?xml version="1.0"?>
-<document url="./status.xml">
-
-<!--
-// ======================================================================== 78
--->
-
-<properties>
-    <title>Status - The Apache Struts Web Application Framework</title>
-</properties>
-
-<body>
-    <section name="Status" href="status">
-
-    <p>
-        The <strong>stable production release</strong> is
-        <a href="http://www.apache.org/dist/jakarta/struts/binaries/">Struts 1.1.0</a> (29 June 2003).
-    </p>
-
-    <hr/>
-
-    <ul>
-    <li>
-      See the <a href="../status.html">Development Roadmap</a> for an overview of future plans.
-    </li>
-    <li>
-        See the <a href="http://jakarta.apache.org/site/bugs.html">Apache Bug Database</a> for outstanding issues and
-        enhancement requests.
-      </li>
-    <li>
-        See the <a href="http://jakarta.apache.org/builds/jakarta-struts/nightly/">Struts Nightly Build</a> for the
-        latest development distribution.
-    </li>
-    <li>
-        See the <a href="http://jakarta.apache.org/site/mail.html">Struts-Dev list</a> for current development
-        communications.
-    </li>
-    <li>
-        See the <a href="http://cvs.apache.org/viewcvs/jakarta-struts/">Struts CVS</a> for the current development
-        codebase.
-      </li>
-    <li>
-       See the <a href="../releases.html">Release Guides</a> for our release process and coding conventions.
-    </li>
-    </ul>
-
-</section>
-
-<section href="roadmap" name="Development Roadmap">
-
-    <p class="version">
-    $Id$
-    </p>
-
-    <p>
-    This document outlines some of changes we expect to
-    see in future releases of Struts.
-    </p>
-
-    <p>
-    This document is provided for discussion purposes only.
-    All releases and changes to the codebase are subject to
-    <a href="http://jakarta.apache.org/site/decisions.html">a vote</a> of the
-    <a href="volunteers.html#committers">Struts Committers</a>.
-    </p>
-
-    </section>
-
-    <section href="Bugzilla" name="Bugzilla Queries">
-
-        <p>
-            The Struts development teams uses the <a href="http://jakarta.apache.org/site/bugs.html">Apache Bug Database</a> (Bugzilla)
-            to manage problem reports and enhancement requests.
-            For your convenience, here are some common Bugzilla queries:
-        </p>
-
-        <ul>
-            <li><a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;product=Struts&amp;order=%27Importance%27">Open reports</a></li>
-            <li><a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_severity=Blocker&amp;bug_severity=Critical&amp;bug_severity=Major&amp;bug_severity=Normal&amp;bug_severity=Minor&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Struts&amp;short_desc=&amp;short_desc_type=allwordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;order=%27Importance%27">Open problem reports</a>
-                <ul>
-                <li><a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;product=Struts&amp;bug_severity=Blocker&amp;bug_severity=Critical&amp;bug_severity=Major&amp;order=%27Importance%27">major problem reports</a></li>
-                <li><a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;product=Struts&amp;bug_severity=Blocker&amp;bug_severity=Normal&amp;bug_severity=Minor&amp;order=%27Importance%27">minor problem reports</a></li>
-                </ul>
-                </li>
-            <li><a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;product=Struts&amp;bug_severity=Enhancement&amp;order=%27Importance%27">Open enhancement reports</a></li>
-            <li><a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=RESOLVED&amp;resolution=LATER&amp;resolution=REMIND&amp;product=Struts&amp;order=%27Importance%27">Reports to be handled "LATER"</a></li>
-        </ul>
-
-
-    </section>
-
-<section href="Struts_1_x" name="Struts 1.x">
-
-    <p>
-        The platform requirements throughout the Struts 1.x series will remain the same (Servlet 2.2 / JSP 1.1).
-        Though, later platforms may be supported as an option.
-    </p>
-    <p>
-        Releases in the 1.x series will focus on refactoring of existing functionality, with a
-        continued emphasis on backward compatibility, as were seen in Struts 1.1.
-        However, we expect there to releases to be incremental throughout the rest of the
-        1.x series, so that improvements and fixes become available to production teams every few weeks.
-    </p>
-
-    <p>
-        Any feature that can be implemented under Servlet 2.2/JSP 1.1 may be considered for the Struts 1.x series.
-        This may include, but is not limited to, better support for alternate view technologies (like XLST),
-        integrated unit testing, integrated support for HTTP/HTTPS mode switching, better workflow handling,
-        support for alternative action types (e.g. BSF actions), a chainable request processor, support for an Action
-        context, and so forth.
-    </p>
-
-    <p>
-        Features most likely to be considered are those that have already been implemented as
-        third-party extensions and are in active use by the Struts Community, such as
-        those distributed through the
-        <a href="http://sourceforge.net/projects/struts">Struts SourceForge</a> site.
-    </p>
-
-    <p>
-        Throughout the 1.x series, there will be a continued emphasis on expanding unit test coverage for the
-        framework.
-        Bug reports should include a failing test case when possible.
-        Proposals for new features should include a working test suite.
-        (Creating features through Test Driven Development is strongly encouraged.)
-    </p>
-
-    <p>
-        Enhancement requests are logged in Bugzilla they are suggested.
-        <strong>The listing of an enhancement in Bugzilla does not imply that is being "planned"</strong>, merely that some
-        member of the community has suggested it, and the idea hasn't been ruled out (yet).
-    </p>
-
-    <p>
-        Future release milestones are provided for enhancements which are being actively planned or developed
-        but may not be ready for the very next release.
-        If a report has not been tagged for a specific milestone by a working developer, then <strong>it may never be
-        resolved</strong>.
-        When developers (including non-Committers) are actually working on an enhancement, they should re-tag it for a
-        specific release milestone, such as "1.2.1" or "1.2.2".
-    </p>
-
-    <p>
-        If an enhancement has not been tagged for a specific target, feel free to start working on it yourself.
-        Many of our best features have been contributed by developers, just like you.
-        If you would like to announce your active interest in an enhancement, please post a note on the ticket, and tag
-        it to an appropriate release milestone.
-    </p>
-
-    </section>
-
-    <section href="Struts_1_x_whiteboard" name="Struts 1.x Whiteboard">
-
-        <p>
-            These are some general ideas we have about what may happen in the Struts 1.x series.
-            This is a <strong>whiteboard</strong> and everything here is <strong>subject to change</strong>.
-        </p>
-
-        <ul>
-
-            <li>Struts 1.0.0 (complete) -
-            Major refactoring of Struts internals to provide support for modules and a new "config" object series.
-            Bundles Struts Tiles and Struts Validator into main distribution.
-            The initial release of Struts EL is provided as an optional package.
-            </li>
-
-            <li>Struts 1.2.x -
-            Continued refactorings of the Struts 1.x product series.
-                <ul>
-                    <li>Remove deprecations created in the 1.0 to 1.1 timeframe, and prior</li>
-                    <li>Other minor enhancements and refactorings</li>
-                </ul>
-            </li>
-
-            <li>Struts 1.3.x -
-            More substantial enhancements to product base
-                <ul>
-                    <li>Move to Commons Resources</li>
-                    <li>Move taglibs into separate JARs</li>
-                    <li>Enhance all configs to extend one configuration element from another,
-                        as is done with Tiles Definitions</li>
-                </ul>
-            </li>
-
-            <li>Struts 1.4.x -
-            More substantial enhancements to product base
-                <ul>
-                    <li>Consider new Request Processor, if available (which might be based on the Commons Chain
-                        of Responsiblity package)</li>
-                    <li>Consider migration to an Action context (which also might be based no the Commons Chain
-                        of Responsiblity package)</li>
-                    <li>Consider enhanced support for other platforms (2.3/1.2) if this can be accomplished by
-                    specifying an alternate Request Processor</li>
-                </ul>
-            </li>
-
-            <li>Other potential enhancements for the 1.x.x series
-                <ul>
-                    <li>Move to <a href="http://xml.apache.org/forrest/">Forrest</a> or
-                        <a href="http://maven.apache.org/">Maven</a> for project management</li>
-                    <li>Consider adopting several popular extensions, including:
-                        <ul>
-                            <li><a href="http://sslext.sourceforge.net/">SSL Ext</a></li>
-                            <li><a href="http://strutstestcase.sourceforge.net/">TestCase</a></li>
-                            <li><a href="http://stxx.sourceforge.net">Stxx</a> (XLST)</li>
-                            <li><a href="http://www.livinglogic.de/Struts/">Workflow</a></li>
-                            <li><a href="http://struts.sf.net/struts-cocoon/">Cocoon Plugin</a></li>
-                            <li><a href="http://struts.sf.net/struts-bsf/">Scriptable Actions using BSF</a> (Bean Scripting
-                                Framework)</li>
-                        </ul>
-                    </li>
-                </ul>
-            </li>
-
-        </ul>
-
-  <!--
-    <p>
-    Features under discussion include:
-    </p>
-
-    <ul>
-
-        <li>
-        Proposing ActionError/ActionErrors as generic Commons "message" components
-        </li>
-
-        <li>
-        "Nested" or "hierarchical" and locale-sensitive modules
-        </li>
-
-        <li>
-        Extending one configuration element from another, as is done with Tiles
-        Definitions
-        </li>
-
-        <li>
-        Enhanced interoperability with JSTL and JSF
-        </li>
-
-        <li>
-        Making Tiles JSTL-aware and available to other presentation systems (XLST,
-        Velocity)
-        </li>
-
-        <li>
-        Encouraging the use of <a href="http://sourceforge.net/projects/xdoclet/">XDoclet</a> and other code generation technologies to streamline development.
-        </li>
-
-        <li>Moving to <a href="http://jakarta.apache.org/turbine/maven/index.html">
-        Maven</a> for project management
-        </li>
-
-        <li>Regardless of whether a move to Maven happens or not, we need to
-        refactor the source repositories and build scripts for less complexity
-        and easier maintenance.</li>
-
-    </ul>
-    <p>
-    More detail on work-in-progress may be found in
-    <a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=RESOLVED&amp;resolution=LATER&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Struts&amp;version=Unknown&amp;version=1.0+Beta+2&amp;version=1.0+Beta+1&amp;version=0.5+Final&amp;version=1.0.2+Final&amp;version=1.0.1+Final&amp;version=1.0+Final&amp;version=1.0+Beta+3&amp;version=1.1+Beta+2&amp;version=1.1+Beta+1&amp;version=Nightly+Build&amp;short_desc=&amp;short_desc_type=allwordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;order=Bug+Number">Bugzilla</a>.
-    If any of these features are important to you, please don't hesitate to
-    <a href="./faqs/helping.html">help with the development effort</a>.
-    </p>
--->
-
-</section>
-
-<section href="Struts_2_0" name="Struts 2.0.x">
-
-    <p>
-    Struts 2.x (aka Struts "Next Generation") will include broader enhancements.
-    We anticipate that the implementation will utilize the Servlet 2.4 / JSP 2.0
-    platform, but may optionally support earlier platforms.
-    </p>
-
-    <p>
-    We anticipate that Struts 2.x will rely on JSTL and the JavaServer Faces
-    API as supporting technologies.
-    However, the focus of the Struts framework will remain on the Controller aspect of a Model 2/MVC architecture.
-    The core framework will continue to be both Model and View independent.
-    </p>
-
-    <p>
-    Development of Struts 2.x will include taking a completely fresh look at
-    the architecture.
-    The goal for 2.x will be to incorporate everything we've learned in the past
-    years of Struts usage, and create something even better.
-    Development will follow current best practices, like Test Driven Development,
-    and rely on technologies like Maven for project management.
-    </p>
-
-    <p>
-    Of course, it is anticipated that the Struts team will continue to support
-    the 1.x codebase for a long time with bugfixes and incremental enhancements.
-    (Mainly because many of us will still be using it on our production sites!)
-    Accordingly, it is anticipated that the development of the 2.x and 1.x
-    series will occur in tandem.
-    At some point, 2.x milestones may appear alongside new 1.x releases.
-    </p>
-
-    <p>
-    Target features include:
-    </p>
-
-    <ul>
-
-        <li>
-        Comprehensive unit test coverage for all core features
-        </li>
-
-        <li>
-        Enhanced support for using Struts in large team environments.
-        </li>
-
-        <li>
-        Transparent support for a portlet environment (JSR 168), with minimal-to-no changes in your business logic
-        and pages.
-        </li>
-
-        <li>
-        Direct support for JSTL/JSF taglibs and the JSF API
-        </li>
-
-        <li>
-        Enhanced support for other presentation layers, such as XLST
-        </li>
-
-        <li>
-        Enhanced support for scriptable Actions, using technologies like BSF or Jelly
-        </li>
-
-        <li>
-        Refactoring for new technologies available on the Servlet 2.4/ JSP 2.0 platform
-        </li>
-
-    </ul>
-
-</section>
-
-<section href="Portlets" name="Portlet (JSR-168) Whiteboard">
-    <p>
-        There are three major issues with supporting JSR-168 (and I'm sure a bunch of smaller ones as well):
-    </p>
-
-    <ul>
-
-        <li>
-            Struts APIs assume servlet API objects (ServletContext, ServletRequest, ServletResponse), whereas JSR-168
-            talks aboutPortletContext, PortletRequest, and PortletResponse.
-            We'd either need to change the calling sequence for Action.execute() -- problematic for backwards
-            compatibility -- or fake it somehow in a portlet environment.
-        </li>
-
-        <li>
-            The lifecycle of a portlet request is actually divided into two chunks -- processing and then rendering.
-            From a Struts perspective, that means making sure that the first part of the request processor pipeline
-            need to happen in the "process" part, and the forwarding to the resulting page needs to happen in the
-            "render" part.
-        </li>
-
-        <li>
-            Today, Struts owns the process of calculating URLs for pages and actions.
-            Because it's in a webapp, it knows exactly what to do for the developer.
-            However, in a portlet container it's actually the portal server that manages URLs, so a Struts-based
-            portlet would need to interact with the portlet APIs for this purpose.
-        </li>
-
-    </ul>
-
-    <p>
-        A strong goal should be that a Struts application should be usable either as a webapp or as a portlet, with
-        little (ideally no) changes.
-        Therefore, we should build whatever it takes to support this into the standard Struts distribution, which would
-        then be used in both environments.
-    </p>
-
-</section>
-
-    <section href="jsf" name="JavaServer Faces">
-
-        <p>
-            The <a href="http://java.sun.com/j2ee/javaserverfaces/">JavaServer Faces</a> specification has not been
-            finalized. However, Struts is already providing support for JSF through the Struts Faces taglib. Once JSF
-            is finalized and comes into broad use, it is expected that Struts developers will continue to offer
-            enhancements to make it even easier to use Struts with JSF.
-        </p>
-
-        <p>
-            Right now, there is only one open source project working on a JavaServer Faces implementation,
-            <a href="http://sf.net/projects/myfaces">MyFaces</a>. This work is being done under the
-            <a href="http://www.gnu.org/copyleft/lesser.html">LGPL</a>, which some
-            developers find unacceptable. (If you are interested in this project, we suggest you lobby the developers
-            to adopt a more liberal license, like the <a href="http://apache.org/LICENSE">ASL</a>.)
-        </p>
-
-        <p>
-           Thanks in large part to Apache's advocacy and influence, the <a href="http://jcp.org">Java Community
-           Process</a>, which is responsible for the JavaServer Faces specification, process has been modified so that
-           Apache Software Foundation projects, like Jakarta, can qualify for the certification scholarship (for
-           nonprofits) and access to the TCKs and certify that our application is compliant.
-        </p>
-
-        <p>
-            An certificated-complaint Apache implementation of JavaServer Faces would most definately be a Good Thing.
-            It would not be the reference implementation, but we could treat it like one, and strictly follow the
-            book, in the Apache Way. A strict, high-quality, open-source implementation would most likely become
-            a popular option among containers.
-        </p>
-
-        <p>
-            Work on such an implementation could be undertaken by Struts, either here at Jakarta or after our applying
-            for status as a top-level Apache project. <b>Or</b>, "Apache Faces" could also be undertaken as a separate
-            project, with Struts simply using the technology as we now use technologies from the Commons today.
-        </p>
-
-        <p>
-            However, at this point, there is no "code on the table". Apache products leave decisions such as these to
-            the people who create and maintain the codebase. So, lacking a codebase, no binding decision
-            can be made. But, anyone wishing to pursue an "Apache Faces" implementation should be aware that the option
-            certainly exists.
-        </p>
-
-        <p>
-            Aside from offering a strict implementation of JavaServer Faces, there are many, many other JSF related
-            tools and technologies Apache Faces could provide. These include composite view and validation
-            frameworks (like Tiles and the Validator), frameworks for multi-request transactions, non-HTML markup
-            languages (building on top of Faces for things like XUL or XForms or SVG is easy), non-JSP rendering
-            technologies (pretty much anything that has a way to mark where dynamically created output goes can be
-            adapted), libraries of prebuilt components above and beyond the built-in standard ones (such components
-            work equally well in JSP and non-JSP environments), and all the non-human-UI things based on XML
-            technologies.
-        </p>
-
-        <p>
-            As always, the standard implementation is only the beginning.
-        </p>
-
-        <p>
-            For more about Struts and JavaServer faces, see our <a href="faqs/kickstart.html#jsf">FAQ</a>.
-            For more about JavaServer Faces generally, see also <a href="http://www.jamesholmes.com/JavaServerFaces/">
-            Java Server Faces Resources at JamesHomes.com</a>.
-        </p>
-    </section>
-
-<section href="Proposals" name="Relevant Proposals">
-
-    <ul>
-
-        <li>
-        <a href="http://cvs.apache.org/viewcvs/jakarta-commons-sandbox/chain/">Commons Chain of Responsiblity
-        package</a>
-        </li>
-
-        <li>
-        <a href="http://cvs.apache.org/viewcvs/jakarta-struts/contrib/struts-chain/">CoRe Request Processor</a>
-        </li>
-
-
-        <li>
-        <a href="proposals/release-plan_1_2_0.html">Release Plan 1.2.0</a> -- unratified DRAFT document
-        </li>
-
-        <li>
-        <a href="proposals/struts-faces.html">struts-faces taglib</a>
-        </li>
-
-    </ul>
-
-</section>
-
-<section>
-    <p class="right">
-    Next: <a href="releases.html">Release Guidelines</a>
-    </p>
-</section>
-
-<section>
-    <p class="version">Website updated from CVS: 2003 NOV 26 by husted.</p>
-    <p class="version">Javadocs updated from CVS: 2003 NOV 26 by husted.</p>
-</section>
-
-</body></document>
diff --git a/build-legacy/core/xdocs/stylesheets/struts.css b/build-legacy/core/xdocs/stylesheets/struts.css
deleted file mode 100644
index 67ea402..0000000
--- a/build-legacy/core/xdocs/stylesheets/struts.css
+++ /dev/null
@@ -1,786 +0,0 @@
-/* $Id$ */
-	
-body {
-	background: #fff;
-	color: #000;
-}
-
-.app h3, .app h4, .tabs td, .tabs th, .functnbar {
-	background-image: url(../images/nw_maj.gif); 
-	background-repeat: no-repeat;
-}
-
-.functnbar, .functnbar2 {
-	background-color: #aaa;
-}
-
-.functnbar2, .functnbar3 {
-	background-color: #aaa;
-/*	background-image: url(../images/sw_maj_rond.gif); */
-	background-repeat: no-repeat;
-	background-position: bottom left;
-}
-
-.functnbar3 {
-	background-color: #ddd;
-/*	background-image: url(../images/sw_med_rond.gif); */
-}
-
-.functnbar, .functnbar2, .functnbar3 {
-	color: #000;
-}
-
-.functnbar a, .functnbar2 a, .functnbar3 a {
-	color: #000;
-	text-decoration: underline;
-}
-
-#navcolumn .body div, body.docs #toc li li {
-	background-image: url(../images/strich.gif);
-	background-repeat: no-repeat;
-	background-position: .5em .5em;
-}
-
-#searchbox .body div, #navcolumn .body .heading {
-	background-image: none;
-}
-
-a:link, #navcolumn a:visited, .app a:visited, .tasknav a:visited {
-	color: blue;
-}
-
-a:link.selfref, a:visited.selfref {
-	color: #555 !important;
-	text-decoration: none;
-}
-
-a:active, a:hover, #leftcol a:active, #leftcol a:hover {
-	color: #f30 !important;
-}
-
-#leftcol a, #breadcrumbs a {
-	text-decoration: none;
-}
-
-.app h3, .app h4 {
-	color: #fff;
-}
-
-.app h3 {
-	background-color: #333;
-}
-
-.app h3 a:link, .app h3 a:visited, .app h4 a:link, .app h4 a:visited {
-	color: #fff !important;
-	text-decoration: underline;
-}
-
-.app h4 {
-	background-color: #888;
-}
-
-.a td {
-	background: #ddd;
-}
-
-.b td {
-	background: #efefef;
-}
-
-table, th, td {
-	border: none;
-}
-
-div.colbar {
-	background: #eee;
-	border-color: #999 #EEE #EEE #999;
-	border-width: 1px;
-	border-style: solid;
-}
-
-.toolgroup {
-	background: #efefef;
-}
-
-.toolgroup .label {
-	border-bottom: 1px solid #666;
-	border-right: 1px solid #666;
-	background: #ddd;
-	color: #555;
-}
-
-.toolgroup .body {
-	border-right: 1px solid #aaa;
-	border-bottom: 1px solid #aaa;
-}
-
-#breadcrumbs {
-	border-top: 1px solid #fff;
-	background-color: #ccc;
-}
-
-#main {
-	border-top: 1px solid #999;
-}
-
-#rightcol div.www, #rightcol div.help {
-	border: 1px solid #ddd;
-}
-
-body.docs div.docs {
-	background-color: #fff;
-	border-left: 1px solid #ddd;
-	border-top: 1px solid #ddd;
-}
-
-#helptext .label {
-	background-image: url(../images/icon_help_sml.gif);
-	background-repeat: no-repeat;
-	background-position: 97%;
-}
-
-body.docs {
-	background: #eee url(../images/help_logo.gif) top right no-repeat !important;
-}
-
-.docs h3, .docs h4 {
-	border-top: solid 1px #000;
-}
-
-#apphead h2 em {
-	color: #777;
-}
-
-.app th {
-	background-color: #bbb;
-}
-
-.tabs th {
-	border-right: 1px solid #333;
-	background-color: #ddd;
-	color: #fff;
-	border-left: 1px solid #fff;
-}
-
-.tabs td {
-	background-color: #999;
-	border-bottom: 1px solid #fff;
-	border-right: 1px solid #fff;
-	border-left: 1px solid #fff;
-}
-
-.tabs {
-	border-bottom: 6px #ddd solid;
-}
-
-.tabs th, .tabs th a:link, .tabs th a:visited {
-	color: #555;
-}
-
-.tabs td, .tabs td a:link, .tabs td a:visited {
-	color: #fff;
-}
-
-.tabs a {
-	text-decoration: none;
-}
-
-.axial th {
-	background-color: #ddd;
-	color: black;
-}
-
-.alert {
-	background-color: #ff9;
-}
-
-.expandedwaste {
-	background: url(../images/icon_arrowwaste2_sml.gif) no-repeat;
-}
-
-.collapsedwaste {
-	background: url(../images/icon_arrowwaste1_sml.gif) no-repeat;
-}
-
-.filebrowse .expanded, .filebrowse-alt .expanded {
-	background-image: url(../images/icon_arrowfolderopen2_sml.gif);
-	background-repeat: no-repeat;
-}
-
-.filebrowse .collapsed, .filebrowse-alt .collapsed {
-	background-image: url(../images/icon_arrowfolderclosed1_sml.gif);
-	background-repeat: no-repeat;
-}
-
-.filebrowse .leafnode, .filebrowse-alt .leafnode {
-	background-image: url(../images/icon_folder_sml.gif);
-	background-repeat: no-repeat;
-}
-
-.filebrowse .leaf, .filebrowse-alt .leaf {
-	background-image: url(../images/icon_doc_sml.gif);
-	background-repeat: no-repeat;
-}
-
-.sortup {
-	background: url(../images/icon_sortup.gif) no-repeat;
-}
-
-.sortdown {
-	background: url(../images/icon_sortdown.gif) no-repeat;
-}
-
-.collapsedwaste {
-	background: url(../images/icon_arrowwaste1_sml.gif) no-repeat;
-}
-
-body .grid td {
-	border-top: 1px solid #ccc;
-	border-left: 1px solid #ccc;
-	background-color: transparent;
-}
-
-.confirm {
-	color: #090;
-}
-
-.info {
-	color: #069;
-}
-
-.errormessage, .warningmessage, .donemessage, .infomessage {
-	border-top: 5px solid #900;
-	border-left: 1px solid #900;
-	background-image: url(../images/icon_error_lrg.gif);
-	background-repeat: no-repeat;
-	background-position: 5px 1.33em;
-}
-
-.warningmessage {
-	background-image: url(../images/icon_warning_lrg.gif);
-	border-color: #c60;
-}
-
-.donemessage {
-	background-image: url(../images/icon_success_lrg.gif);
-	border-color: #090;
-}
-
-.infomessage {
-	background-image: url(../images/icon_info_lrg.gif);
-	border-color: #069;
-}
-
-.docinfo {
-	background: url(../images/icon_doc_lrg.gif) no-repeat;
-}
-
-.dirinfo {
-	background: url(../images/icon_folder_lrg.gif) no-repeat;
-}
-
-.memberinfo {
-	background: url(../images/icon_members_lrg.gif) no-repeat;
-}
-
-.usergroupinfo {
-	background: url(../images/icon_usergroups_lrg.gif) no-repeat;
-}
-
-.errormark, .warningmark, .donemark, .infomark {
-	background: url(../images/icon_error_sml.gif) no-repeat;
-}
-
-.warningmark {
-	background-image: url(../images/icon_warning_sml.gif);
-}
-
-.donemark {
-	background-image: url(../images/icon_success_sml.gif);
-}
-
-.infomark {
-	background-image: url(../images/icon_info_sml.gif);
-}
-
-.cvsdiff, .cvsblame {
-	background-color: #ccc;
-}
-
-.cvsdiffadd {
-	background-color: #afa;
-}
-
-.cvsdiffremove {
-	background-color: #faa;
-}
-
-.cvsdiffchanges1 {
-	background-color: #ff7;
-}
-
-.cvsdiffchanges2 {
-	background-color: #ff7;
-}
-
-li.selection ul a {
-	background: #fff;
-}
-
-.band1 {
-	color: #fff;
-	background-color: #663;
-}
-
-.band2 {
-	color: #fff;
-	background-color: #66C;
-}
-
-.band3 {
-	background-color: #C99;
-}
-
-.band4 {
-	background-color: #CFF;
-}
-
-.band5 {
-	color: #fff;
-	background-color: #336;
-}
-
-.band6 {
-	color: #fff;
-	background-color: #966;
-}
-
-.band7 {
-	background-color: #9CC;
-}
-
-.band8 {
-	background-color: #FFC;
-}
-
-.band9 {
-	color: #fff;
-	background-color: #633;
-}
-
-.band10 {
-	color: #fff;
-	background-color: #699;
-}
-
-.band11 {
-	background-color: #CC9;
-}
-
-.band12 {
-	background-color: #CCF;
-}
-
-.band13 {
-	color: #fff;
-	background-color: #366;
-}
-
-.band14 {
-	color: #fff;
-	background-color: #996;
-}
-
-.band15 {
-	background-color: #99C;
-}
-
-.band16 {
-	background-color: #FCC;
-}
-
-.app .helplink, #helptext .helplink {
-	cursor: help;
-}
-
-.legend th, .bars th {
-	background-color: #fff;
-}
-
-/* font and text properties, exclusive of link indication, alignment, text-indent */
-body, th, td, input, select {
-	font-family: Verdana, Helvetica, Arial, sans-serif;
-}
-
-code, pre {
-	font-family: 'Andale Mono', Courier, monospace;
-}
-
-body, .app h3, .app h4, #rightcol h3, pre, code, #apphead h2 small, h4, th, td {
-	font-size: x-small;
-	voice-family: "\"}\"";
-	voice-family: inherit;
-	font-size: small;
-}
-
-small, div#footer, div#login, div.tabs th, div.tabs td, input, select, .paginate, .functnbar, .functnbar2, .functnbar3, #breadcrumbs, .courtesylinks, #rightcol div.help, .colbar, .tasknav, body.docs div#toc, #leftcol, .legend, .bars {
-	font-size: xx-small;
-	voice-family: "\"}\"";
-	voice-family: inherit;
-	font-size: x-small;
-}
-
-.tabs td, .tabs th, dt, .tasknav .selfref, #login .username, .selection {
-	font-weight: bold;
-}
-
-li.selection ul {
-	font-weight: normal;
-}
-
-#apphead h2 em {
-	font-style: normal;
-}
-
-#banner h1 {
-	font-size: 1.25em;
-}
-
-/* box properties (exclusive of borders), positioning, alignments, list types, text-indent */
-#bodycol h2 {
-	margin-top: .3em;
-	margin-bottom: .5em;
-}
-
-p, ul, ol, dl, .bars table {
-	margin-top: .67em;
-	margin-bottom: .67em;
-}
-
-h3, h4 {
-	margin-bottom: 0;
-}
-
-form {
-	margin: 0;
-}
-
-#bodycol {
-	padding-left: 12px;
-	padding-right: 12px;
-	width: 100%;
-	voice-family: "\"}\"";
-	voice-family: inherit;
-	width: auto;
-}
-
-html>body #bodycol {
-	width: auto;
-}
-
-.docs {
-	line-height: 1.4;
-}
-
-ol ol {
-	list-style-type: lower-alpha;
-}
-
-ol ol ol {
-	list-style-type: lower-roman;
-}
-
-.app h3, .app h4 {
-	padding: 5px;
-	margin-right: 2px;
-	margin-left: 2px;
-}
-
-.app td, .app th {
-	padding: 2px 3px;
-}
-
-.h3 p, .h4 p, .h3 dt, .h4 dt {
-	margin-right: 7px;
-	margin-left: 7px;
-}
-
-.tasknav {
-	margin-bottom: 1.33em;
-}
-
-div.colbar {
-	padding: 3px;
-	margin: 2px 2px 0;
-}
-
-.tabs {
-	margin-top: .67em;
-	margin-right: 2px;
-	margin-left: 2px;
-	padding-left: 8px;
-}
-
-.tabs td, .tabs th {
-	padding: 3px 9px;
-}
-
-#rightcol div.www, #rightcol div.help {
-	padding: 0 .5em;
-}
-
-body.docs #toc {
-	position: absolute;
-	top: 15px;
-	left: 0px;
-	width: 120px;
-	padding: 0 20px 0 0;
-}
-
-body.docs #toc ul, #toc ol {
-	margin-left: 0;
-	padding-left: 0;
-}
-
-body.docs #toc li {
-	margin-top: 7px;
-	padding-left: 10px;
-	list-style-type: none;
-}
-
-body.docs div.docs {
-	margin: 61px 0 0 150px;
-	padding: 1em 2em 1em 1em !important;
-}
-
-.docs p+p {
-	text-indent: 5%;
-	margin-top: -.67em;
-}
-
-.docs h3, .docs h4 {
-	margin-bottom: .1em;
-	padding-top: .3em;
-}
-
-.functnbar, .functnbar2, .functnbar3 {
-	padding: 5px;
-	margin: .67em 2px;
-}
-
-.functnbar3 {
-	margin-top: 0;
-}
-
-body {
-	padding: 1em;
-}
-
-body.composite, body.docs {
-	margin: 0;
-	padding: 0;
-}
-
-th, td {
-	text-align: left;
-	vertical-align: top;
-}
-
-.right {
-	text-align: right !important;
-}
-
-.center {
-	text-align: center !important;
-}
-
-.axial th, .axial th .strut {
-	text-align: right;
-}
-
-.app .axial td th {
-	text-align: left;
-}
-
-body .stb {
-	margin-top: 1em;
-	text-indent: 0;
-}
-
-body .mtb {
-	margin-top: 2em;
-	text-indent: 0;
-}
-
-.courtesylinks {
-	margin-top: 1em;
-	padding-top: 1em;
-}
-
-dd {
-	margin-bottom: .67em;
-}
-
-.toolgroup {
-	margin-bottom: 6px;
-}
-
-.toolgroup .body {
-	padding: 4px 4px 4px 0;
-}
-
-.toolgroup .label {
-	padding: 4px;
-}
-
-.toolgroup .body div {
-	padding-bottom: .3em;
-	padding-left: 1em;
-}
-
-.toolgroup .body div div {
-	margin-top: .3em;
-	padding-bottom: 0;
-}
-
-.tier1 {
-	margin-left: 0;
-}
-
-.tier2 {
-	margin-left: 1.5em;
-}
-
-.tier3 {
-	margin-left: 3em;
-}
-
-.tier4 {
-	margin-left: 4.5em;
-}
-
-.tier5 {
-	margin-left: 6em;
-}
-
-.tier6 {
-	margin-left: 7.5em;
-}
-
-.tier7 {
-	margin-left: 9em;
-}
-
-.tier8 {
-	margin-left: 10.5em;
-}
-
-.tier9 {
-	margin-left: 12em;
-}
-
-.tier10 {
-	margin-left: 13.5em;
-}
-
-.filebrowse .expanded, .filebrowse .collapsed {
-	padding-left: 34px;
-}
-
-.filebrowse .leafnode, .filebrowse .leaf {
-	padding-left: 20px;
-}
-
-.messagechild {
-	padding-left: 34px;
-}
-
-.filebrowse-alt .expanded, .filebrowse-alt .collapsed, .filebrowse-alt .leaf, .filebrowse-alt .leafnode, .expandedwaste, .collapsedwaste, .sortup, .sortdown {
-	/* hide from macie5\*/
-	float: left;
-	/* resume */
-	display: inline-block;
-	height: 15px;
-	width: 34px;
-	padding-left: 0 !important;
-}
-
-.filebrowse-alt .leaf, .filebrowse-alt .leafnode, .sortup, .sortdown {
-	width: 20px;
-}
-
-.filebrowse ul, .filebrowse-alt ul {
-	list-style-type: none;
-	padding-left: 0;
-	margin-left: 0;
-}
-
-.filebrowse ul ul, .filebrowse-alt ul ul {
-	margin-left: 1.5em;
-	margin-top: 0;
-	padding-top: .67em;
-}
-
-.filebrowse li, .filebrowse-alt li {
-	margin-bottom: .67em;
-}
-
-td.filebrowse h3 {
-	margin-top: 0;
-}
-
-.errormessage, .warningmessage, .donemessage, .infomessage, .docinfo, .dirinfo, .memberinfo, .usergroupinfo {
-	margin: .67em 0;
-	padding: .33em 0 .67em 42px;
-	min-height: 32px;
-}
-
-.errormark, .warningmark, .donemark, .infomark {
-	padding-left: 20px;
-	min-height: 15px;
-}
-
-.alt {
-	display: none;
-}
-
-#banner h1 {
-	margin: 0;
-}
-
-#leftcol {
-	width: 14em;
-}
-
-.axial th, .axial th .strut, #leftcol .strut {
-	width: 12em;
-}
-
-#breadcrumbs {
-	padding: 2px 8px;
-}
-
-.app h3, .app h4, .bars {
-	clear: both;
-}
-
-.legend {
-	float: right;
-}
-
-.legend th, .bars th {
-	text-align: right;
-	padding-left: 1em;
-}
-
-.bars table {
-	table-layout: fixed;
-}
-
-.bars th {
-	width: 12em;
-}
-
-#projectdocumentlist td.filebrowse-alt {
-	padding-right: .75em;
-}
diff --git a/build-legacy/core/xdocs/tiles/installation.xml b/build-legacy/core/xdocs/tiles/installation.xml
deleted file mode 100644
index 586f9f1..0000000
--- a/build-legacy/core/xdocs/tiles/installation.xml
+++ /dev/null
@@ -1,346 +0,0 @@
-<?xml version="1.0"?>
-<document url="./installation.xml">
-<properties>
-  <title>The Tiles 1.1 Framework Project - Installation (1.1)</title>
-</properties>
-
-<body>
-
-<section name="Quick Install for Testing, Documentation and Tutorial"
-         href="QuickInstall">
-    <ul>
-        <li>Download Tiles binary distribution</li>
-        <li>Unzip distribution</li>
-        <li>Copy <code>web/tiles-doc.war</code> or <code>web/struts-tiles.war</code>
-            in  your web server webapps directory (webapps with Tomcat).
-            Please refer to your webserver manual to know exactly where, or
-            check <a href="#Containers">detailed install</a>.</li>
-        <li>Restart your web server if necessary</li>
-        <li>Point your browser to the root of newly installed web application
-            (<a href="http://localhost:8080/tiles-doc">
-            http://localhost:8080/tiles-doc</a>
-             or <a href="http://localhost:8080/struts-tiles">
-             http://localhost:8080/struts-tiles</a>
-            with tomcat</li>
-    </ul>
-
-    <p>Quick start and setting of a new application using Tiles</p>
-    <ul>
-        <li>Take appropriate <code>tiles-blank.war</code> and
-            copy it in your web server webapps directory
-            <ul>
-                <li><code>tiles-blank.war</code> - Tiles
-                    without Struts</li>
-                <li><code>tiles-blank-struts1.1.war</code> -
-                    Tiles with Struts1.1</li>
-                <li><code>tiles-blank-struts1.0.war</code> -
-                    Tiles with latest stable Struts1.0.x</li>
-            </ul>
-        </li>
-        <li>These war files are not distributed with Struts binaries.</li>
-    </ul>
-</section>
-
-<section name="Prerequisite Software" href="Prerequisites">
-    <p>Copyright : This page is largely inspired from the original
-       <a href="http://jakarta.apache.org/struts">Struts installation page</a>.
-       For those familiar with Struts, there is nothing really new.</p>
-
-    <p>The Tiles binary distribution needs other software packages installed
-       to operate. You may already have these installed on your system. To
-       build Tiles from source you may need to acquire and install several
-       others. The complete list is as follows:</p>
-
-    <ul>
-        <li><strong>Java Development Kit</strong> -
-            You <strong>must</strong> download and install a Java2 (version
-            1.2 or later) Java Development Kit implementation for your
-            operating system platform. A good starting point for locating Java
-            Development Kit distributions is <a href="http://java.sun.com/j2se">
-            http://java.sun.com/j2se</a>.
-        </li>
-        <li><strong>Servlet Container</strong> -
-            You <strong>must</strong> download and install a servlet container
-            that is compatible with the Servlet API Specification, version 2.2
-            or later, and the JavaServer Pages (JSP) Specification, version 1.1
-            or later. One popular choice is to download Apache's
-            <a href="http://jakarta.apache.org/tomcat">Tomcat</a>
-            (version 3.1 or later required, version 3.2 or later recommended).</li>
-        <li><strong>XML Parser</strong> - Tiles <strong>requires</strong> the
-            presence of an XML parser that is compatible with the Java API for
-            XML Parsing (JAXP) specification, 1.1 or later. You can download
-            and install the JAXP <a href="http://java.sun.com/xml">reference
-            implementation</a>, which is required for building the Tiles
-            source distribution. In Tiles-based web applications, you may
-            replace the reference implementation classes with any other JAXP
-            compliant parser, such as <a href="http://xml.apache.org/xerces-j">
-            Xerces</a>. See detailed    instructions related to the parser in
-            the instructions for <a href="#Building">building</a> and
-            <a href="#Installing">installing</a> Tiles, below. </li>
-        <li><strong>Ant Build System</strong> -
-            If you are building Tiles from the source distribution, you must
-            download and install version 1.3 or later of the
-            <a href="http://jakarta.apache.org/ant">Ant</a> build system.
-            This package is also strongly recommended for use in developing
-            your own web applications based on Tiles.
-        <ul>
-            <li>If you are using the release version of Ant version 1.3, you
-                will also need to download the "optional.jar" file that
-                contains the implementation of Ant's <code>&lt;style&gt;</code>
-                command. </li>
-            <li>Make sure that the "ant" and "ant.bat" scripts
-                are executable, by adding the $ANT_HOME/bin directory to your
-                PATH environment variable. </li>
-        </ul>
-        </li>
-        <li><strong>Servlet API Classes</strong> - In order to compile Tiles
-            itself, or applications that use Tiles, you will need a
-            <code>servlet.jar</code> file containing the Servlet and JSP API
-            classes. Most servlet containers include this JAR file. Otherwise,
-            you can get the Servlet API classes distribution from
-            <a href="http://jakarta.apache.org/builds/jakarta-servletapi">
-            here</a>.
-        </li>
-        <li><strong>Jakarta Commons Packages</strong> -
-            Tiles utilizes several    packages from the
-            <a href="http://jakarta.apache.org/commons/">Jakarta Commons
-            Project</a>.If you are utilizing a binary distribution of Tiles,
-            the corresponding JAR files are included in the <code>lib</code>
-            directory. However, if you wish to build Tiles from source, you
-            will need to download and install the following packages:
-
-        <ul>
-                <li><em>Beanutils</em> (Version 1.0 or later)</li>
-                <li><em>Collections</em> (Version 1.0 or later)</li>
-                <li><em>Digester</em> (Version 1.0 or later)</li>
-                <li><em>Logging</em> (Version 1.0 or later)</li>
-        </ul>
-        </li>
-        <li><strong>Xalan XSLT Processor</strong> -
-            If you are building Tiles from the source distribution, you will
-            need a version of Xalan to perform XSLT transformations. If you
-            are using the JAXP/1.1 XML parser, you    should use the version
-            of <code>xalan.jar</code> shipped with it. Otherwise, download
-            and install version 1.2 of Xalan from
-            <a href="http://xml.apache.org/xalan">here</a>.
-        </li>
-        <li><strong>Struts Framework</strong> - If you are planning to use
-            Tiles with Struts, you should download and install Struts from
-            <a href="http://jakarta.apache.org/struts/">
-            Jakarta Struts Project</a>.
-            If you have acquired Tiles with the Struts distribution, you
-            don't need to install it again. Tiles can run without Struts.
-            In this case you loose some features.</li>
-    </ul>
-</section>
-
-<section name="Install A Tiles Binary Distribution" href="Installing">
-    <p>First, download a binary distribution of Tiles by following the
-       instructions <a href="download.jsp">here</a>.
-       Then, make sure    you have downloaded and installed the
-       <a href="#Prerequisites">prerequisite</a> software packages described
-       above.</p>
-    <p>Unpack the Tiles binary distribution into a convenient directory.
-       (If you <a href="#Building">build Tiles from the source distribution</a>,
-       the result of the build will already be an unpacked binary distribution
-       for you). The distribution consists of the following contents:</p>
-    <ul>
-        <li><strong>lib/tiles.jar</strong> - This JAR file contains all of
-            the Java classes included in Tiles. It should be copied into the
-            <code>WEB-INF/lib</code>directory of your web application.
-            <em>WARNING</em> - If you are going to be hosting multiple tiles
-            based applications on the same servlet container, you will be
-            tempted to place the <code>struts.jar</code> file into the shared
-            repository supported by your container. Be advised that this will
-            likely cause you to encounter ClassNotFoundException problems
-            unless <em>all</em> of your application classes are stored in the
-            shared repository.
-        </li>
-        <li><strong>lib/struts1.0/tilesForStruts1.0.jar</strong> -
-            Same as before,    but for use with Struts1.0.x. </li>
-        <li><strong>lib/tiles.tld</strong> - These is the "tag library
-            descriptor" file that describe the custom tags in the Tiles tag
-            libraries. It should be copied into the <code>WEB-INF</code>
-            directory of your web application.
-        </li>
-        <li><strong>webapps/tiles-doc.war</strong> or
-            <strong>webapps/struts-tiles.war</strong> - This is a
-            "web application archive" file containing all of the Tiles
-            documentation found on the
-            <a href="http://www.lifl.fr/~dumoulin/tiles/">Tiles web site</a>
-            (including these pages). You can install this web application
-            on any servlet container compatible with Servlet API 2.2 or later.
-        </li>
-        <li><strong>webapps/tiles-channel.war</strong> - Examples using a
-            custom definition factory.</li>
-        <li><strong>webapps/tiles-blank.war</strong> - A blank application
-            that can be used as a starting point when you want to develop
-            your own application with Tiles. This blank application doesn't
-            contains neither use Struts. If you also want to use Struts,
-            add struts.jar and related tld files, or choose one of the
-            following applications. </li>
-        <li><strong>webapps/tiles-blank-struts1.1.war</strong> -
-            A blank application to use with Struts1.1 </li>
-        <li><strong>webapps/tiles-blank-struts1.0.war</strong> -
-            A blank application to use with Struts1.0.x </li>
-    </ul>
-    <p>To use Tiles in your own application, you will need to follow
-       these steps:</p>
-    <ul>
-        <li>Copy the files<code>lib/commons-*.jar</code> into
-            the <code>WEB-INF/lib</code> directory of your web application.
-        </li>
-        <li>Copy the file <code>lib/tiles.jar</code> from
-            the Tiles distribution    into the <code>WEB-INF/lib</code>
-            directory of your web application.
-        </li>
-        <li>Copy all of the files that match <code>lib/*.tld</code> from
-            the Tiles    distribution into the <code>WEB-INF</code> directory
-            of your web application.
-        </li>
-        <li>If you want to use <em>definitions configuration file</em>, you
-            need to initialize the definitions factory. This can be done as follows:
-        <ul>
-            <li>Modify the <code>WEB-INF/web.xml</code> file
-                for your web application to use a <code>&lt;servlet&gt;
-                </code> that initializes the factory and catch Struts action
-                forwards to check for definition name. Use the
-                <code>WEB-INF/web.xml</code> file from the Tiles example
-                application for a detailed example of the required syntax.
-            <pre>
-  &lt;servlet&gt;
-     ...
-     &lt;servlet-name&gt;action&lt;/servlet-name&gt;
-     &lt;servlet-class&gt;org.apache.struts.tiles.ActionComponentsServlet&lt;/servlet-class
-     &lt;init-param&gt;
-       &lt;param-name&gt;definitions-config&lt;/param-name&gt;
-       &lt;param-value&gt;/WEB-INF/tiles-config.xml&lt;/param-value&gt;
-     &lt;/init-param&gt;
-     ...
-</pre>
-            </li>
-            <li>If you don't want to use Struts, use
-                <code>org.apache.struts.tiles.TilesServlet</code> as servlet.
-            </li>
-            <li>Create a configuration file for definitions. Its name must
-                match the one provided before in <code>WEB-INF/web.xml</code>.
-                Several comma separated names can be provided.
-            </li>
-        </ul>
-        </li>
-        <li>Modify the <code>WEB-INF/web.xml</code> file of your web application
-            to include the following tag library declarations: </li>
-    </ul>
-<pre>&lt;taglib&gt;
-  &lt;taglib-uri&gt;/WEB-INF/tiles.tld&lt;/taglib-uri&gt;
-  &lt;taglib-location&gt;/WEB-INF/tiles.tld&lt;/taglib-location&gt;
-&lt;/taglib&gt;
-</pre>
-
-    <ul>
-        <li>At the top of each JSP page that will use the Tiles custom tags,
-            add line(s) declaring the Tiles custom tag libraries used on this
-            particular page, like this:</li>
-    </ul>
-<pre>&lt;%@ taglib uri="/WEB-INF/tiles.tld" prefix="tiles" %&gt;
-</pre>
-    <ul>
-        <li>When compiling the Java classes that comprise your application,
-            be sure to include the <code>tiles.jar</code> and
-            <code>commons-*.jar</code> files (copied earlier) on the
-            CLASSPATH that is submitted to the compiler.</li>
-    </ul>
-    <p>Note to Struts 1.0 users :</p>
-    <ul>
-        <li>You should use a <code>tiles.jar</code> build with Struts1.0.x.</li>
-        <li>If you have downloaded a Tiles version build with Struts1.0.x, you
-            already have it. </li>
-        <li>Consider to use tilesForStruts1.0.jar located in
-            <code>lib/struts1.0</code></li>
-    </ul>
-
-    <p>Note to Struts1.1 users :</p>
-    <ul>
-        <li>You should also initialize a <code>TilesRequestProcessor</code>.</li>
-        <li>To do so, add following lines in your <code>struts-config.xml</code>
-            file :
-<pre>
-   &lt;controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"&gt;
-   &lt;/controller&gt;
-</pre>
-        </li>
-    </ul>
-</section>
-
-<section name="Installing Tiles with your servlet container" href="Containers">
-    <p><strong>WARNING</strong> - Do <strong>NOT</strong> add
-       <code>tiles.jar</code> to the classpath of your servlet container in
-       an attempt to avoid placing it in the <code>/WEB-INF/lib</code>
-       directory of each individual web app! Doing so will cause problems with
-       <code>ClassNotFoundException</code> exceptions. </p>
-
-    <p>For most containers, you need only to:</p>
-    <ul>
-        <li>Copy the WAR files in your Tiles <code>/webapp</code> directory
-            to your    containers <code>webapps</code> directory. </li>
-        <li>In some cases, you may need to restart your container if it
-            is running.</li>
-    </ul>
-
-    <h4>Status of various containers</h4>
-    <p>For status of additional containers, please refer to the
-        <a href="installation.html#Installing"> Struts installation page</a>).
-    </p>
-</section>
-
-<section name="Building Tiles From Source" href="Building">
-    <p>First, download a source distribution of Tiles from
-       <a href="http://www.lifl.fr/~dumoulin/tiles/">here</a> or
-       from Struts contrib directory. Then, make sure you have downloaded and
-       installed <strong>all</strong> of the
-       <a href="#Prerequisites">prerequisite</a> software packages described
-       above. You also need the appropriate struts version (1.0.x or 1.1)</p>
-    <p>To build Tiles, you will need to customize the build process to the details
-        of your development environment as follows: </p>
-    <ul>
-        <li>The Tiles source distribution uses a file named
-            <code>build.properties</code> (in the top-level directory of the
-            distribution) to identify the location of external components
-            that Tiles depends on.</li>
-        <li>There is no <code>build.properties</code> file included with the
-            source distribution. However, there is an example file named
-            <code>build.properties.example</code> that you can copy to
-            <code>build.properties</code>and then customize.</li>
-        <li>The properties you must configure in <code>build.properties</code> are
-            documented in <code>build.properties.example</code> </li>
-        <li>Tiles build require a Struts library. You can use either a
-            Struts1.0.x or 1.1 <code>struts.jar</code>. The resulting
-            <code>tiles.jar</code> will run with the used <code>struts.jar</code>.
-            You specify the Struts home with <code>struts.home</code> property.
-        </li>
-    </ul>
-    <p>To build a "distribution" version of Tiles, first change your current
-        directory to the directory in which you have unpacked the Tiles
-        source distribution, and (if necessary) create or customize the
-        <code>build.properties</code>file as described above. Then, type:
-    </p>
-<pre>
-        ant dist
-</pre>
-
-    <p>This command will create a binary distribution of Tiles, in a
-       directory named <code>dist</code> (relative to where you are
-       compiling from). This directory contains an exact replica of
-       the files included in a binary distribution of Tiles, as described
-       in the <a href="Installing">preceding section</a>.</p>
-    <p>IMPORTANT NOTE: The <code>tiles.jar</code>, as well as the JAR
-        files from the Jakarta Commons project, must be in your classpath
-        when compiling Tiles. The <code>build.xml</code> provided does this
-        automatically. If you use your development machine to test Tiles
-        application locally, be sure that the <code>tiles.jar</code>is
-        <strong>NOT</strong> on your classpath when your container is
-        running.
-    </p>
-</section>
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/tiles/project.xml b/build-legacy/core/xdocs/tiles/project.xml
deleted file mode 100644
index c3c41b7..0000000
--- a/build-legacy/core/xdocs/tiles/project.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<project name="Apache Struts Web Application Framework"
-         href="http://jakarta.apache.org/struts"
-        image="images/struts.gif">
-
-    <title>The Tiles 1.1 Framework Project - Installation (1.1)</title>
-
-    <menu name="Tiles">
-        <item href="index.jsp" name="Tiles Home"/>
-    </menu>
-
-    <menu name="Examples">
-        <item href="examples/index.jsp" name="Home"/>
-    </menu>
-
-    <menu name="Documentation">
-        <item href="doc/index.jsp" name="Home"/>
-        <item href="examples/index.jsp" name="Examples"/>
-        <item href="test/quickOverview.jsp" name="Quick overview"/>
-        <item href="doc/index.jsp" name="Home"/>
-        <item href="tutorial/index.jsp" name="Tutorial Live Examples"/>
-    </menu>
-
-</project>
-
-
-
-
-
-
diff --git a/build-legacy/core/xdocs/userGuide/building_controller.xml b/build-legacy/core/xdocs/userGuide/building_controller.xml
deleted file mode 100644
index 4920287..0000000
--- a/build-legacy/core/xdocs/userGuide/building_controller.xml
+++ /dev/null
@@ -1,1567 +0,0 @@
-<?xml version="1.0"?>
-<document url="building_controller.html">
-
-<!--
-// ======================================================================== 78
--->
-
-<properties>
-    <title>The Struts User Guide - Building Controller Components</title>
-</properties>
-
-<body>
-<section name="4. Building Controller Components" href="building_controller"/>
-
-<section name="4.1 Overview" href="overview">
-
-    <p>
-    Now that we understand how to construct the Model and View components
-    of your application, it is time to focus on the <code>Controller</code>
-    components.  
-    Struts includes a servlet that implements the primary function of mapping 
-    a request URI to an <code>Action</code> class.  
-    Therefore, your primary responsibilities related to the Controller are:
-    </p>
-
-    <ul>
-    
-        <li>
-        Write an <code>ActionForm</code> class to mediate between the Model
-        and the View, as described in <a href="building_model.html">Building
-        Model Components</a>.
-        </li>
-
-        <li>
-        Write an <code>Action</code> class for each logical request that may
-        be received (extend <code>org.apache.struts.action.Action</code>).
-        </li>
-
-        <li>
-        Configure a ActionMapping (in XML) for each logical request that may
-        be submitted. 
-        The XML configuration file is usually named 
-        <code>struts-config.xml</code>.
-        </li>
-
-    </ul>
-    
-    <p>
-    To deploy your application, you will also need to:
-    </p>
-    
-    <ul>
-
-        <li>
-        Update the web application deployment descriptor file (in XML)
-        for your application to include the necessary Struts components.
-        </li>
-
-        <li>
-        Add the appropriate Struts components to your application.
-        </li>
-        
-    </ul>
-    
-    <p>
-    The latter two items are covered in the 
-    "<a href="configuration.html">Configuring Applications</a>" chapter.
-    </p>
-
-</section>
-
-<section name="4.2 The ActionServlet" href="action_servlet">
-
-    <p>
-    For those of you familiar with MVC architecture, the ActionServlet
-    represents the C - the controller.  
-    The job of the controller is to:
-    </p>
-    
-    <ul>
-    
-    <li>
-    process user requests, 
-    </li>
-    
-    <li>
-    determine what the user is trying to achieve according to the request, 
-    </li>
-    
-    <li>
-    pull data from the model (if necessary) to be given to the appropriate 
-    view, and 
-    </li>
-    
-    <li>
-    select the proper view to respond to the user.  
-    </li>
-    
-    </ul>
-    
-    <p>
-    The Struts controller delegates most of this grunt work to Action classes.
-    </p>
-    
-    <p>
-    In addition to being the controller for your application, the
-    ActionServlet instance also is responsible for initialization and
-    clean-up of resources.  
-    When the controller initializes, it first loads the application config 
-    corresponding to the "config" init-param.
-    It then goes through an enumeration of all <code>init-param</code>
-    elements, looking for those elements who's name starts with
-    <code>config/</code>.  
-    For each of these elements, Struts loads the configuration file specified 
-    by the value of that <code>init-param</code>, and assigns a "prefix" 
-    value to that module's ModuleConfig instance consisting of the piece
-    of the <code>init-param</code> name following "config/".  
-    For example, the module prefix specified by the 
-    <code>init-param config/foo</code> would be "foo". 
-    This is important to know, since this is how the controller determines 
-    which module will be given control of processing the request.  
-    To access the module foo, you would use a URL like:
-    </p>
-    
-    <pre>http://localhost:8080/myApp/foo/someAction.do</pre>
-    
-    <p>
-    For each request made of the controller, the method
-    <code>process(HttpServletRequest, HttpServletResponse)</code> will be
-    called.  
-    This method simply determines which module should service the request and 
-    then invokes that module's RequestProcessor's process method, passing the 
-    same request and response.
-    </p>
-
-</section>
-
-<section name="4.2.1 Request Processor" href="request_processor">
-
-    <p>
-    The RequestProcessor is where the majority of the core processing 
-    occurs for each request.  
-    Let's take a look at the helper functions the process method invokes 
-    in-turn:
-    </p>
-
-    <table>
-    <tr>
-        <td>
-        <code>processPath</code>
-        </td>
-        <td>
-        Determine the path that invoked us.  
-        This will be used later to retrieve an ActionMapping.
-        </td>
-    </tr>
-
-    <tr>
-        <td>
-        <code>processLocale</code>
-        </td>
-        <td>
-        Select a locale for this request, if one hasn't already been 
-        selected, and place it in the request.
-        </td>
-    </tr>
-
-    <tr>
-        <td>
-        <code>processContent</code> 
-        </td>
-        <td>
-        Set the default content type (with optional character encoding) for 
-        all responses if requested.
-        </td>
-    </tr>
-
-    <tr>
-        <td>
-        <code>processNoCache</code>
-        </td>
-        <td>
-        If appropriate, set the following response headers: "Pragma", 
-        "Cache-Control", and "Expires".
-        </td>
-    </tr>
-
-    <tr>
-        <td>
-        <code>processPreprocess</code>
-        </td>
-        <td>
-        This is one of the "hooks" the RequestProcessor makes available for 
-        subclasses to override.  
-        The default implementation simply returns <code>true</code>.  
-        If you subclass RequestProcessor and override processPreprocess you 
-        should either return <code>true</code> (indicating process should 
-        continue processing the request) or <code>false</code> (indicating 
-        you have handled the request and the process should return)
-        </td>
-    </tr>
-
-    <tr>
-        <td>
-        <code>processMapping</code> 
-        </td>
-        <td>
-        Determine the ActionMapping associated with this path.
-        </td>
-    </tr>
-
-    <tr>
-        <td>
-        <code>processRoles</code> 
-        </td>
-        <td>
-        If the mapping has a role associated with it, ensure the requesting 
-        user is has the specified role.  
-        If they do not, raise an error and stop processing of the request.
-        </td>
-    </tr>
-
-    <tr>
-        <td>
-        <code>processActionForm</code> 
-        </td>
-        <td>
-        Instantiate (if necessary) the ActionForm associated with this 
-        mapping (if any) and place it into the appropriate scope.
-        </td>
-    </tr>
-
-    <tr>
-        <td>
-        <code>processPopulate</code>
-        </td>
-        <td>
-        Populate the ActionForm associated with this request, if any.
-        </td>
-    </tr>
-
-    <tr>
-        <td>
-        <code>processValidate</code> 
-        </td>
-        <td>
-        Perform validation (if requested) on the ActionForm associated with 
-        this request (if any).
-        </td>
-    </tr>
-    
-    <tr>
-        <td>
-        <code>processForward</code>
-        </td>
-        <td>
-        If this mapping represents a forward, forward to the path specified 
-        by the mapping.
-        </td>
-    </tr>
-    
-    <tr>
-        <td>
-        <code>processInclude</code> 
-        </td>
-        <td>
-        If this mapping represents an include, include the result of 
-        invoking the path in this request.
-        </td>
-    </tr>
-    
-    <tr>
-        <td>
-        <code>processActionCreate</code>
-        </td>
-        <td>
-        Instantiate an instance of the class specified by the current 
-        ActionMapping (if necessary).
-        </td>
-    </tr>
-    
-    <tr>
-        <td>
-        <code>processActionPerform</code> 
-        </td>
-        <td>
-        This is the point at which your action's <code>perform</code> or 
-        <code>execute</code> method will be called.
-        </td>
-    </tr>
-
-    <tr>
-        <td>
-         <code>processForwardConfig</code>
-        </td>
-        <td>
-        Finally, the process method of the RequestProcessor takes the 
-        ActionForward returned by your Action class, and uses to select the 
-        next resource (if any).
-        Most often the ActionForward leads to the presentation page that
-        renders the response.
-        </td>
-    </tr>
-
-    </table>
-
-</section>
-
-<section name="4.3 ActionForm Classes" href="action_form_classes">
-
-    <p>
-    An ActionForm represents an HTML form that the user interacts with over 
-    one or more pages.  
-    You will provide properties to hold the state of the form with getters 
-    and setters to access them.  
-    ActionForms can be stored in either the session (default) or request 
-    scopes.  
-    If they're in the session it's important to implement the form's 
-    <code>reset</code> method to initialize the form before each use.  
-    Struts sets the ActionForm's properties from the request parameters and 
-    sends the validated form to the appropriate Action's <code>execute</code> 
-    method.
-    </p>
-
-    <p>
-    When you code your <code>ActionForm</code> beans, keep the following
-    principles in mind:
-    </p>
-
-    <ul>
-    
-    <li>
-    The <code>ActionForm</code> class itself requires no specific
-    methods to be implemented.  
-    It is used to identify the role these particular beans play in the overall 
-    architecture.  
-    Typically, an <code>ActionForm</code> bean will have only property getter 
-    and property setter methods, with no business logic.
-    </li>
-    
-    <li>
-    The ActionForm object also offers a standard validation mechanism.
-    If you override a "stub" method, and provide error messages in the
-    standard application resource, Struts will automatically validate the
-    input from the form (using your method). 
-    See "<a href="./building_view.html#form_validation">
-    Action Form Validation</a>" for details. 
-    Of course, you can also ignore the ActionForm validation and provide your 
-    own in the Action object.
-    </li>
-
-    <li>
-    Define a property (with associated <code>getXxx</code> and
-    <code>setXxx</code> methods) for each field that is present in the
-    form.  
-    The field name and property name must match according to the usual 
-    JavaBeans conventions (see the Javadoc for the 
-    <code>java.beans.Introspector</code> class for a start on information
-    about this).  
-    For example, an input field named <code>username</code> will cause the 
-    <code>setUsername</code> method to be called.
-    </li>
-
-    <li>
-    Buttons and other controls on your form can also be defined as properties.
-    This can help determine which button or control was selected when the
-    form was submitted. 
-    Remember, the ActionForm is meant to represent your data-entry form, not 
-    just the data beans.
-    </li>
-    
-    <li>
-    Think of your ActionForm beans as a firewall between HTTP and the Action.
-    Use the <code>validate</code> method to ensure all required properties 
-    are present, and that they contain reasonable values. 
-    An ActionForm that fails validation will not even be presented to the 
-    Action for handling.
-    </li>
-    
-    <li>
-    You may also place a bean instance on your form, and use nested property
-    references. 
-    For example, you might have a "customer" bean on your ActionForm, and 
-    then refer to the property "customer.name" in your presentation page.
-    This would correspond to the methods <code>customer.getName()</code> and
-    <code>customer.setName(string Name)</code> on your customer bean. 
-    See the Tag Library Developer Guides for more about using nested syntax 
-    with the Struts JSP tags.
-    </li>
-    
-    <li>
-    <em>Caution:</em> If you nest an existing bean instance on your form, think
-    about the properties it exposes. 
-    Any public property on an ActionForm that accepts a single String value 
-    can be set with a query string. 
-    It may be useful to place beans that can affect the business state inside 
-    a thin "wrapper" that exposes only the properties required. 
-    This wrapper can also provide a filter to be sure runtime properties are 
-    not set to inappropriate values.
-    </li>
-    
-    </ul>
-
-</section>
-
-<section name="4.3.1 DynaActionForm Classes" href="dyna_action_form_classes">
-
-    <p>
-    Maintaining a separate concrete ActionForm class for each form in your 
-    Struts application is time-consuming.
-    It is particularly frustrating when all the ActionForm does is gather
-    and validate simple properties that are passed along to a business
-    JavaBean.
-    </p>
-    <p>
-    This bottleneck can be alleviated through the use of DynaActionForm classes.
-    Instead of creating a new ActionForm subclass and new get/set methods for 
-    each of your bean's properties, you can list its properties, type, and 
-    defaults in the Struts configuration file.
-    </p>
-    
-    <p>
-    For example, add the following to struts-config.xml for a UserForm bean 
-    that stores a user's given and family names:
-    </p>
-    
-<pre><code><![CDATA[
-<form-bean 
-    name="UserForm" 
-    type="org.apache.struts.action.DynaActionForm">
-    <form-property 
-        name="givenName" 
-        type="java.lang.String" 
-        initial="John"/>
-    <form-property 
-        name="familyName" 
-        type="java.lang.String" 
-        initial="Smith"/>
-</form-bean>
-]]></code></pre>
-
-    <p>
-    The types supported by DynaActionForm include:
-    </p>
-    
-    <ul>
-    
-        <li>
-        java.lang.BigDecimal
-        </li>
-
-        <li>
-        java.lang.BigInteger
-        </li>
-
-        <li>
-        boolean and java.lang.Boolean
-        </li>
-
-        <li>
-        byte and java.lang.Byte
-        </li>
-
-        <li>
-        char and java.lang.Character
-        </li>
-
-        <li>
-        java.lang.Class
-        </li>
-
-        <li>
-        double and java.lang.Double
-        </li>
-
-        <li>
-        float and java.lang.Float
-        </li>
-
-        <li>
-        int and java.lang.Integer
-        </li>
-
-        <li>
-        long and java.lang.Long
-        </li>
-
-        <li>
-        short and java.lang.Short
-        </li>
-
-        <li>
-        java.lang.String
-        </li>
-
-        <li>
-        java.sql.Date
-        </li>
-
-        <li>
-        java.sql.Time
-        </li>
-
-        <li>
-        java.sql.Timestamp
-        </li>
-    
-    </ul>
-
-    <p>
-        You may also specify Arrays of these types (e.g. <code>String[]</code>).
-        You may also specify a concrete implementation of the Map Interface,
-        such as <code>java.util.HashMap</code>,
-        or a List implementation, such as <code>java.util.ArrayList</code>.
-    </p>
-
-    <p>
-    If you do not supply an initial attribute, numbers will be initialized to 
-    0 and objects to <code>null</code>.
-    </p>
-    
-    <p>
-    In JSP pages using the original Struts custom tags, attributes of
-    <code>DynaActionForm</code> objects can be referenced just like ordinary
-    <code>ActionForm</code> objects. Wherever a Struts tag refers to a
-    "property", the tags will automatically use the DynaActionForm properties
-    just like those of a conventional JavaBean.
-    You can even expose DynaActionForm properties using bean:define.
-    (Although, tou can't use bean:define to <strong>instantiate</strong> a DynaActionForm,
-    since it needs to be setup with the appropriate dyna-properties).
-    </p>
-
-    <p>
-    If you are using the Struts JSTL EL taglib, the references are different,
-    however.
-    Only properties of ordinary <code>ActionForm</code> objects can be directly
-    accessed through the JSTL expression language syntax.  
-    The <code>DynaActionForm</code> properties must be accessed through a
-    slightly different syntax. 
-    The JSTL EL syntax for referencing a property
-    of an <code>ActionForm</code> goes like this:
-    </p>
-    
-<pre><code>${formbean.prop}</code></pre>
-    
-    <p>
-    The syntax for referencing a property of a <code>DynaActionForm</code>
-    would be:
-    </p>
-
-<pre><code>${dynabean.map.prop}</code></pre>
-
-    <p>
-    The <code>map</code> property is a property of 
-    <code>DynaActionForm</code> which represents the <code>HashMap</code>
-    containing the <code>DynaActionForm</code> properties.
-    </p>
-
-    <p>
-    DynaActionForms are meant as an easy solution to a common problem:
-    <em>Your ActionForms use simple properties and standard validations,
-    and you just pass these properties over to another JavaBean</em>
-    (say using <code>BeanUtils.copyProperties(myBusinessBean,form)</code>).
-    </p>
-
-    <p>
-    DynaActionForms are <strong>not</strong> a drop-in replacement for ActionForms.
-    If you need to access ActionForm properties in your Action, you will need to
-    use the map-style accessor, like <code>myForm.get("name")</code>.
-    If you actively use the ActionForm object in your Action,
-    then you may want to use conventional ActionForms instead.
-    </p>
-
-    <p>
-    DynaActionForms cannot be instantiated using a no-argument constructor.
-    In order to simulate the extra properties,
-    there is a lot of machinery involved in their construction.
-    You must rely on Struts to instantiate a DynaActionForm for you,
-    via the ActionMapping.
-    </p>
-
-    <p>
-    If need be, you can extend the DynaActionForm to add custom
-    validate and reset methods you might need.
-    Simply specify your subclass in the struts-config instead.
-    However, you cannot mix conventional properties and DynaProperties.
-    A conventional getter or setter on a DynaActionForm won't be found
-    by the reflection utilities.
-    </p>
-
-    <p>
-    To use DynaActionForms with the Struts Validator, specify
-    <code>org.apache.struts.validator.ValidatorActionForm</code>
-    (or your subclass) as the form-bean class.
-    </p>
-
-</section>
-
-<section name="4.3.2 Map-backed ActionForms" href="map_action_form_classes">
-
-    <p>
-    The DynaActionForm classes offer the ability to create ActionForm beans 
-    at initialization time, based on a list of properties enumerated in the 
-    Struts configuration file. 
-    However, many HTML forms are generated dynamically at request time. 
-    Since the properties of these forms' ActionForm beans are not all known 
-    ahead of time, we need a new approach.
-    </p>
-    
-    <p>
-    Struts allows you to make one or more of your ActionForm's properties' 
-    values a Map instead of a traditional atomic object. 
-    You can then store the data from your form's dynamic fields in that Map. 
-    Here is an example of a map-backed ActionForm class:
-    </p>
-    
-<pre><code><![CDATA[public FooForm extends ActionForm {
-
-    private final Map values = new HashMap();
-
-    public void setValue(String key, Object value) {
-        values.put(key, value);
-    }
-
-    public Object getValue(String key) {
-        return values.get(key);
-    }
-
-}
-]]></code></pre>
-
-    <p>
-    In its corresponding JSP page, you can access objects stored in the 
-    values map using a special notation: <code>mapname(keyname)</code>. 
-    The parentheses in the bean property name indicate that:
-    </p>
-    
-    <ul>
-    
-        <li>
-        The bean property named <code>mapname</code> is indexed using Strings
-        (probably backed by a Map), and that 
-        </li>
-
-        <li>
-        Struts should look for get/set methods that take a String key 
-        parameter to find the correct sub-property value. 
-        Struts will, of course, use the <code>keyname</code> value from the 
-        parentheses when it calls the get/set methods.
-        </li>
-    
-    </ul>
-    
-    <p>
-    Here is a simple example:
-    </p>
-
-<pre><code><![CDATA[<html:text property="value(foo)"/>]]></code></pre>
-
-    <p>
-    This will call the <code>getValue</code> method on FooForm with a key 
-    value of "<code>foo</code>" to find the property value. 
-    To create a form with dynamic field names, you could do the following:
-    </p>
-
-<pre><code><![CDATA[
-<% 
-    for (int i = 0; i < 10; i++) {
-        String name = "value(foo-" + i + ")";
-%>
-        <html:text property="<%= name %>"/>
-        <br/>
-<%
-    }
-%>
-]]></code></pre>
-
-    <p>
-    Note that there is nothing special about the name <code>value</code>. 
-    Your map-backed property could instead be named <code>property</code>, 
-    <code>thingy</code>, or any other bean property name you prefer. 
-    You can even have multiple map-backed properties on the same bean.
-    </p>
-    
-    <p>
-    In addition to map-backed properties, you can also create list-backed 
-    properties. 
-    You do so by creating indexed get/set methods on your bean:
-    </p>
-    
-<pre><code><![CDATA[public FooForm extends ActionForm {
-
-    private final List values = new ArrayList();
-
-    public void setValue(int key, Object value) {
-        values.set(key, value);
-    }
-
-    public Object getValue(int key) {
-        return values.get(key);
-    }
-}
-]]></code></pre>
-
-    <p>
-    In your presentation pages, you access individual entries in a list-backed 
-    property by using a different special notation: 
-    <code>listname[index]</code>. 
-    The braces in the bean property name indicate that the bean property named 
-    <code>listname</code> is indexed (probably backed by a List), and that 
-    Struts should look for get/set methods that take an index parameter in 
-    order to find the correct sub-property value.
-    </p>
-
-    <p>
-        While map-backed ActionForms provide you with more flexibility, they do not support the same range of syntax
-        available to conventional or DynaActionForms.
-        You might have difficulty referencing <a href="../faqs/indexedprops.html">indexed or mapped properties</a>
-        using a map-backed ActionForm.
-    </p>
-
-</section>
-
-<section name="4.4 Action Classes" href="action_classes">
-
-    <p>
-    The <code>Action</code> class defines two methods that could be
-    executed depending on your servlet environment:
-    </p>
-
-<pre><code>public ActionForward execute(ActionMapping mapping,
-                     ActionForm form,
-                     ServletRequest request,
-                     ServletResponse response)
-throws Exception;
-
-public ActionForward execute(ActionMapping mapping,
-                     ActionForm form,
-                     HttpServletRequest request,
-                     HttpServletResponse response)
-throws Exception;
-</code></pre>
-
-    <p>
-    Since the majority of Struts projects are focused on building web 
-    applications, most projects will only use the "HttpServletRequest" 
-    version.
-    A non-HTTP execute() method has been provided for applications that are 
-    not specifically geared towards the HTTP protocol.  
-    </p>
-
-    <p>
-    The goal of an <code>Action</code> class is to process a request, via
-    its <code>execute</code> method, and return an <code>ActionForward</code> 
-    object that identifies where control should be forwarded (e.g. a JSP, 
-    Tile definition, Velocity template, or another Action) to provide the 
-    appropriate response.  
-    In the <em>MVC/Model 2</em> design pattern, a typical <code>Action</code> 
-    class will often implement logic like the following in its 
-    <code>execute</code> method:
-    </p>
-    
-    <ul>
-    
-        <li>
-        Validate the current state of the user's session (for example, 
-        checking that the user has successfully logged on).
-        If the <code>Action</code> class finds that no logon exists, the 
-        request can be forwarded to the presentation page that displays the 
-        username and password prompts for logging on.  
-        This could occur because a user tried to enter an application "in the 
-        middle" (say, from a bookmark), or because the session has timed out, 
-        and the servlet container created a new one.
-        </li>
-
-        <li>
-        If validation is not complete, validate the form bean properties as 
-        needed. 
-        If a problem is found, store the appropriate error message keys as a 
-        request attribute, and forward control back to the input form so that 
-        the errors can be corrected.
-        </li>
-
-        <li>
-        Perform the processing required to deal with this request (such as
-        saving a row into a database).  
-        This <em>can</em> be done by logic code embedded within the 
-        <code>Action</code> class itself, <strong>but</strong> should generally be 
-        performed by calling an appropriate method of a business logic bean.
-        </li>
-
-        <li>
-        Update the server-side objects that will be used to create the next
-        page of the user interface (typically request scope or session scope
-        beans, depending on how long you need to keep these items available).
-        </li>
-
-        <li>
-        Return an appropriate <code>ActionForward</code> object that 
-        identifies the presentation page to be used to generate this response, 
-        based on the newly updated beans. 
-        Typically, you will acquire a reference to such an object by calling 
-        <code>findForward</code> on either the <code>ActionMapping</code> 
-        object you received (if you are using a logical name local to this 
-        mapping), or on the controller servlet itself (if you are using a 
-        logical name global to the application).
-        </li>
-    
-    </ul>
-
-    <p>
-    In Struts 1.0, Actions called a <code>perform</code> method instead of 
-    the now-preferred <code>execute</code> method. 
-    These methods use the same parameters and differ only in which exceptions 
-    they throw. 
-    The elder <code>perform</code> method throws <code>SerlvetException</code> 
-    and <code>IOException</code>. 
-    The new <code>execute</code> method simply throws <code>Exception</code>. 
-    The change was to facilitate the Declarative Exception handling feature 
-    introduced in Struts 1.1.
-    </p>
-    
-    <p>
-    The <code>perform</code> method may still be used in Struts 1.1 but is 
-    deprecated.
-    The Struts 1.1 method simply calls the new <code>execute</code> method 
-    and wraps any <code>Exception</code> thrown as a 
-    <code>ServletException</code>.
-    </p>
-
-   </section>
-   
-   <section name="4.4.1 Action Class Design Guidelines" href="action_design_guide">
-
-    <p>
-    Remember the following design guidelines when coding <code>Action</code> 
-    classes:
-    </p>
-
-    <ul>
-    
-        <li>
-        <strong>Write code for a multi-threaded environment</strong> -
-        The controller servlet creates <strong>only one instance of your
-        <code>Action</code> class</strong>, and uses this one instance to service
-        all requests.  
-        Thus, you need to write thread-safe <code>Action</code> classes.
-        Follow the same guidelines you would use to write thread-safe 
-        Servlets.  
-        Here are two general guidelines that will help you write scalable, 
-        thread-safe Action classes:
-        
-        <ul>
-        
-            <li>
-            <strong>Only Use Local Variables</strong> - The most important principle 
-            that aids in thread-safe coding is to use only local variables, 
-            <strong>not instance variables</strong>, in your <code>Action</code> class.  
-            Local variables are created on a stack that is assigned (by your 
-            JVM) to each request thread, so there is no need to worry about 
-            sharing them.  
-            An <code>Action</code> can be factored into several local methods, 
-            so  long as all variables needed are passed as method parameters. 
-            This assures thread safety, as the JVM handles such variables 
-            internally using the call stack which is associated with a single 
-            Thread.
-            </li>
-            
-            <li>
-            <strong>Conserve Resources</strong> - As a general rule, allocating scarce 
-            resources and keeping them across requests from the same user 
-            (in the user's session) can cause scalability problems.  
-            For example, if your application uses JDBC and you  allocate a 
-            separate JDBC connection for every user, you are probably going
-            to run in some scalability issues when your site suddenly shows 
-            up on Slashdot.  
-            You should strive to use pools and release resources (such as 
-            database connections) prior to forwarding control to the 
-            appropriate View component -- even if a bean method you have 
-            called throws an exception.
-            </li>
-            
-        </ul>
-    
-        </li>
-
-        <li>
-        <strong>Don't throw it, catch it!</strong> - Ever used a commercial website only to 
-        have a stack trace or exception thrown in your face after you've already 
-        typed in your credit card number and clicked the purchase button?  
-        Let's just say it doesn't inspire confidence.  
-        Now is your chance to deal with these application errors - in the 
-        <code>Action</code> class.  
-        If your application specific code throws expections you should catch these 
-        exceptions  in your Action class, log them in your application's log 
-        (<code>servlet.log("Error message", exception)</code>) and return the 
-        appropriate ActionForward.
-        </li>
-    
-    </ul>
-
-    <p>
-    It is wise to avoid creating lengthy and complex Action classes.
-    If you start to embed too much logic in the <code>Action</code> class 
-    itself, you will begin to find the <code>Action</code> class hard to 
-    understand, maintain, and impossible to reuse.  
-    Rather than creating overly complex Action classes, it is generally a 
-    good practice to move most of the persistence, and "business logic" to a 
-    separate application layer.  
-    When an Action class becomes lengthy and procedural, it may be a good time 
-    to refactor your application architecture and move some of this logic
-    to another conceptual layer; 
-    otherwise, you may be left with an inflexible application which can only 
-    be accessed in a web-application environment.
-    Struts should be viewed as simply the <strong>foundation</strong> for implementing 
-    MVC in your applications. 
-    Struts provides you with a useful control layer, but it is not a fully 
-    featured platform for building MVC applications, soup to nuts.
-    </p>
-
-    <p>
-    The MailReader example application included with Struts stretches this design
-    principle somewhat, because the business logic itself is embedded in the
-    <code>Action</code> classes. 
-    This should be considered something of a bug in the design of the example,
-    rather than an intrinsic feature of the Struts architecture, or an 
-    approach to be emulated.
-    In order to demonstrate, in simple terms, the different ways Struts can be
-    used, the MailReader application does not always follow best practices.
-    </p>
-      
-</section>
-   
-<section name="4.5 Exception Handler" href="exception_handler">
-
-    <p>
-    You can define an ExceptionHandler to execute when an Action's 
-    <code>execute</code> method throws an Exception.  
-    First, you need to subclass 
-    <code>org.apache.struts.action.ExceptionHandler</code> and override the 
-    <code>execute</code> method.
-    Your <code>execute</code> method should process the Exception and return 
-    an ActionForward object to tell Struts where to forward to next.  
-    Then you configure your handler in struts-config.xml like this:
-    </p>
-    
-<pre><code><![CDATA[<global-exceptions>
-    <exception 
-      key="some.key" 
-      type="java.io.IOException" 
-      handler="com.yourcorp.ExceptionHandler"/>
-</global-exceptions>
-]]></code></pre>
-    
-    <p>
-    This configuration element says that 
-    <code>com.yourcorp.ExceptionHandler.execute</code> will be called when 
-    any IOException is thrown by an Action.  
-    The <code>key</code> is a key into your message resources properties file 
-    that can be used to retrieve an error message.
-    </p>
-    
-    <p>
-    You can override global exception handlers by defining a handler inside an 
-    action definition.
-    </p>
-    
-    <p>
-    A common use of ExceptionHandlers is to configure one for 
-    <code>java.lang.Exception</code> so it's called for any exception and log 
-    the exception to some data store.
-    </p>
-    
-</section>
-
-<section name="4.6 PlugIn Classes" href="plugin_classes">
-
-    <p>
-    The <em>PlugIn</em> interface extends Action and so that applications can
-    easily hook into the ActionServlet lifecycle. 
-    This interface defines two methods, <code>init()</code> and 
-    <code>destroy()</code>, which are called at application startup and 
-    shutdown, respectively. 
-    A common use of a Plugin Action is to configure or load 
-    application-specific data as the web application is starting up.
-    </p>
-    
-    <p>
-    At runtime, any resource setup by <code>init</code> would be accessed by 
-    Actions or business tier classes. 
-    The PlugIn interface allows you to setup resources, but does not provide 
-    any special way to access them. 
-    Most often, the resource would be stored in application context, under
-    a known key, where other components can find it.
-    </p>
-    
-    <p>
-    PlugIns are configured using &lt;plug-in&gt; elements within the
-    Struts configuration file. 
-    See <a href="configuration.html#plugin_config"> PlugIn Configuration</a> 
-    for details.
-    </p>
-
-</section>
-
-<section name="4.7 The ActionMapping Implementation" href="actionmapping">
-
-    <p>
-    In order to operate successfully, the Struts controller servlet needs
-    to know several things about how each request URI should be mapped to an
-    appropriate <code>Action</code> class.  
-    The required knowledge has been encapsulated in a Java class named 
-    <em>ActionMapping</em>, the most important properties are as follows:
-    </p>
-
-    <ul>
-    
-        <li>
-        <code>type</code> - Fully qualified Java class name of the Action 
-        implementation class used by this mapping.
-        </li>
-
-        <li>
-        <code>name</code> - The name of the form bean defined in the config file
-        that this action will use.
-        </li>
-
-        <li>
-        <code>path</code> - The request URI path that is matched to select this
-        mapping.  
-        See below for examples of how matching works and how to use wildcards 
-        to match multiple request URIs.
-        </li>
-
-        <li>
-        <code>unknown</code> - Set to <code>true</code> if this action
-        should be configured as the default for this application, to handle
-        all requests not handled by another action.  
-        Only one action can be defined as a default within a single application.
-        </li>
-
-        <li>
-        <code>validate</code> - Set to <code>true</code> if the 
-        <code>validate</code> method of the action associated with this mapping 
-        should be called.
-        </li>
-
-        <li>
-        <code>forward</code> - The request URI path to which control is passed
-        when this mapping is invoked. 
-        This is an alternative to declaring a <code>type</code> property. 
-        </li>
-
-    </ul>
-
-</section>
-
-<section name="4.8 Writing Action Mappings" href="config">
-
-    <p>
-    How does the controller servlet learn about the mappings you want?
-    It would be possible (but tedious) to write a small Java class that simply
-    instantiated new <code>ActionMapping</code> instances, and called all of
-    the appropriate setter methods.  
-    To make this process easier, Struts uses the Jakarta-Digester component 
-    to parse an XML-based description of the desired mappings and create the 
-    appropriate objects initialized to the appropriate default values.
-    See the <a href="http://jakarta.apache.org/commons">Jakarta Commons 
-    website</a> for more information about the Digester.
-    </p>
-
-    <p>
-    The developer's responsibility is to create an XML file named
-    <code>struts-config.xml</code> and place it in the WEB-INF directory of 
-    your application. 
-    This format of this document is described by the Document Type Definition
-    (DTD) maintained at
-    <a href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
-    http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd</a>.
-    This chapter covers the configuration elements that you will typically 
-    write as part of developing your application.
-    There are several other elements that can be placed in the 
-    struts-config file to customize your application. 
-    See "<a href="configuration.html">Configuring Applications</a>" for more 
-    about the other elements in the Struts configuration file. 
-    </p>
-
-    <p>
-    The controller uses an internal copy of this document to parse the 
-    configuration; an Internet connection is not required for operation.
-    </p>
-
-    <p>
-    The outermost XML element must be <code>&lt;struts-config&gt;</code>. 
-    Inside of the &lt;struts-config&gt; element, there are three important 
-    elements that are used to describe your actions:
-    </p>
-    
-    <ul>
-    
-        <li>
-        <code>&lt;form-beans&gt;</code>
-        </li>
-    
-        <li>
-        <code>&lt;global-forwards&gt;</code>
-        </li>
-    
-        <li>
-        <code>&lt;action-mappings&gt;</code>
-        </li>
-
-    </ul>
-    
-    <p>
-    <code><strong>&lt;form-beans&gt;</strong></code><br />
-    This section contains your form bean definitions.  
-    Form beans are descriptors that are used to create ActionForm instances 
-    at runtime. 
-    You use a &lt;form-bean&gt; element for each form bean, which has the 
-    following important attributes:
-    </p>
-    
-    <ul>
-    
-        <li>
-        <code>name</code>: A unique identifier for this bean, which will be 
-        used to reference it in corresponding action mappings. 
-        Usually, this is also the name of the request or session attribute 
-        under which this form bean will be stored.
-        </li>
-
-        <li>
-        <code>type</code>: The fully-qualified Java classname of the 
-        ActionForm subclass to use with this form bean.
-        </li>
-
-    </ul>
-
-    <p>
-    <strong>&lt;global-forwards&gt;</strong><br />
-    This section contains your global forward definitions.  
-    Forwards are instances of the ActionForward class returned from an 
-    ActionForm's <code>execute</code> method. 
-    These map logical names to specific resources (typically JSPs), allowing 
-    you to change the resource without changing references to it throughout 
-    your application.
-    You use a <code>&lt;forward&gt;</code> element for each forward 
-    definition, which has the following important attributes:
-    </p>
-    
-    <ul>
-    
-        <li>
-        <code>name</code>: The logical name for this forward.  
-        This is used in your ActionForm's <code>execute</code> method to 
-        forward to the next appropriate resource. 
-        Example: homepage
-        </li>
-
-        <li>
-        <code>path</code>: The context relative path to the resource.
-        Example: /index.jsp or /index.do
-        </li>
-
-        <li>
-        <code>redirect</code>: <code>True</code> or <code>false</code> 
-        (default).  
-        Should the ActionServlet redirect to the resource instead of forward?
-        </li>
-
-    </ul>
-    
-    <p>
-    <code><strong>&lt;action-mappings&gt;</strong></code><br />
-    This section contains your action definitions.  
-    You use an <code>&lt;action&gt;</code> element for each of the mappings 
-    you would like to define.  
-    Most action elements will define at least the following attributes:
-    </p>
-
-    <ul>
-
-        <li>
-        <code>path</code>: The application context-relative path to the 
-        action.
-        </li>
-
-        <li>
-        <code>type</code>: The fully qualified java classname of your 
-        Action class.
-        </li>
-
-        <li>
-        <code>name</code>: The name of your 
-        <code>&lt;form-bean&gt;</code> element to use with this action
-        </li>
-
-    </ul>
-
-    <p>Other often-used attributes include:</p>
-
-    <ul>
-    
-        <li>
-        <code>parameter</code>: A general-purpose attribute often used by 
-        "standard" Actions to pass a required property.
-        </li>
-    
-        <li>
-        <code>roles</code>: A comma-delimited list of the user security roles 
-        that can access this mapping.
-        </li>
-    
-    </ul>
-
-    <p>
-    For a complete description of the elements that can be used with the 
-    <code>action</code> element, see the
-    <a href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
-    Struts Configuration DTD</a> and the
-    <a href="../api/org/apache/struts/action/ActionMapping.html">ActionMapping 
-    documentation</a>.
-    </p>
-
-</section>
-
-<section name="4.8.1 ActionMapping Example" href="action_mapping_example">
-
-    <p>
-    Here's a mapping entry based on the MailReader example
-    application. The MailReader application now uses DynaActionForms.
-    But in this example, we'll show a conventinal
-    ActionForm instead, to illustrate the usual workflow.
-    Note that the entries for all the other actions are left out:
-    </p>
-
-<pre><code><![CDATA[<struts-config>
-    <form-beans>
-        <form-bean
-            name="logonForm"
-            type="org.apache.struts.webapp.example.LogonForm" />
-     </form-beans>
-    <global-forwards
-        type="org.apache.struts.action.ActionForward">
-        <forward 
-            name="logon" 
-            path="/logon.jsp"
-            redirect="false" />
-    </global-forwards>
-    <action-mappings>
-        <action
-            path="/logon"
-            type="org.apache.struts.webapp.example.LogonAction"
-            name="logonForm"
-            scope="request"
-            input="/logon.jsp"
-            unknown="false"
-            validate="true" />
-    </action-mappings>
-</struts-config>
-]]></code></pre>
-
-    <p>
-    First the form bean is defined.  
-    A basic bean of class "<code>org.apache.struts.webapp.example.LogonForm</code>"
-    is mapped to the logical name "<code>logonForm</code>". 
-    This name is used as a request attribute name for the form
-    bean.
-    </p>
-
-    <p>
-    The "<code>global-forwards</code>" section is used to create logical name 
-    mappings for commonly used presentation pages.  
-    Each of these forwards is available through a call to your action mapping 
-    instance, i.e. <code>mapping.findForward("logicalName")</code>.
-    </p>
-
-    <p>
-    As you can see, this mapping matches the path <code>/logon</code> 
-    (actually, because the MailReader example application uses extension 
-    mapping, the request URI you specify in a JSP page would end in 
-    <code>/logon.do</code>).
-    When a request that matches this path is received, an instance of the
-    <em>LogonAction</em> class will be created (the first time only) and used.
-    The controller servlet will look for a bean in request scope under key
-    <code>logonForm</code>, creating and saving a bean of the specified class
-    if needed.
-    </p>
-   
-    <p>
-    Optional but very useful are the local "<code>forward</code>" elements. 
-    In the MailReader example application, many actions include a local 
-    "success" and/or "failure" forward as part of an action mapping.
-    </p>
-
-<pre><code><![CDATA[<!-- Edit mail subscription -->
-<action    
-    path="/editSubscription"
-    type="org.apache.struts.webapp.example.EditSubscriptionAction"
-    name="subscriptionForm"
-    scope="request"
-    validate="false">
-    <forward 
-        name="failure" 
-        path="/mainMenu.jsp"/>
-    <forward 
-        name="success" 
-        path="/subscription.jsp"/>
-</action>
-]]></code></pre>
-
-    <p>
-    Using just these two extra properties, the Action classes are almost 
-    totally independent of the actual names of the presentation pages. 
-    The pages can be renamed (for example) during a redesign, with negligible 
-    impact on the Action classes themselves.
-    If the names of the "next" pages were hard coded into the Action classes, 
-    all of these classes would also need to be modified. 
-    Of course, you can define whatever local <code>forward</code> properties 
-    makes sense for your own application.
-    </p>
-
-    <p>
-    The Struts configuration file includes several other elements that you 
-    can use to customize your application. 
-    See "<a href="configuration.html">Configuring Applications</a>" for details.
-    </p>
-
-</section>
-
-<section name="4.9 Using ActionMappings for Pages" href="module_config-use_actions">
-
-    <p>
-    Fronting your pages with ActionMappings is <em>essential</em> when using 
-    application modules, since doing so is the only way you involve the 
-    controller in the request -- and you want to!  
-    The controller puts the application configuration in the request,
-    which makes available all of your module-specific configuration data 
-    (including which message resources you are using, request-processor, 
-    datasources, and so forth).
-    </p>
-    
-    <p>
-    The simplest way to do this is to use the <code>forward</code> property 
-    of the ActionMapping:
-    </p>
-    
-    <pre>&lt;action path="/view" forward="/view.jsp"/></pre>
-
-</section>
-
-<section name="4.10 Using Wildcards in ActionMappings" href="action_mapping_wildcards">
-
-    <p>
-    As a Struts application grows in size, so will the number of action 
-    mappings.  Wildcards can be used to combine similiar mappings into one
-    more generic mapping.  
-    </p>
-    <p>
-    The best way to explain wildcards is to show an example and walk through 
-    how it works.  This example modifies the previous mapping in the <a 
-    href="#action_mapping_example">ActionMapping Example</a> section to use
-    wildcards to match all pages that start with <code>/edit</code>:
-    </p> 
-
-<pre><code><![CDATA[<!-- Generic edit* mapping -->
-<action    
-    path="/edit*"
-    type="org.apache.struts.webapp.example.Edit{1}Action"
-    name="{1}Form"
-    scope="request"
-    validate="false">
-    <forward 
-        name="failure" 
-        path="/mainMenu.jsp"/>
-    <forward 
-        name="success" 
-        path="/{1}.jsp"/>
-</action>
-]]></code></pre>
-
-    <p>
-    The "<code>*</code>" in the path attribute allows the mapping to match the 
-    request URIs <code>/editSubscription</code>, <code>editRegistration</code>,
-    or any other URI that starts with 
-    <code>/edit</code>, however <code>/editSubscription/add</code> would not be 
-    matched.  The part of 
-    the URI matched by the wildcard will then be substituted into various 
-    attributes of the action mapping and its action forwards replacing 
-    <code>{1}</code>.
-    For the rest of the request, Struts will see the action mapping and its 
-    action forwards containing the new values.
-    </p>
-    
-    <p>
-    Wildcard patterns can contain one or more of the following special tokens:
-    </p>
-
-    <table>
-        <tr>
-            <td>
-            <code>*</code>
-            </td>
-            <td>
-            Matches zero or more characters excluding the 
-            slash ('/') character.
-            </td>
-        </tr>       <tr>
-            <td>
-            <code>**</code>
-            </td>
-            <td>
-            Matches zero or more characters including the 
-            slash ('/') character.
-            </td>
-        </tr>       <tr>
-            <td>
-            <code>\character</code>
-            </td>
-            <td>
-            The backslash character is used as an escape
-            sequence.  Thus <code>\*</code> matches the character asterisk 
-            ('*'), and <code>\\</code>
-            matches the character backslash ('\').
-            </td>
-        </tr>
-    </table>    
-
-    <p>
-    In the action mapping and action forwards, the wildcard-matched values can
-    be accessed with the token <code>{N}</code> where <code>N</code>
-    is a number from 1 to 9 indicating
-    which wildcard-matched value to substitute.  The whole request URI can be
-    accessed with the <code>{0}</code> token.
-    </p>
-
-    <p>
-    The action mapping attributes that will accept wildcard-matched strings
-    are:
-    </p>
-
-    <ul>
-        <li><code>type</code></li>
-        <li><code>name</code></li>
-        <li><code>roles</code></li>
-        <li><code>parameter</code></li>
-        <li><code>attribute</code></li>
-        <li><code>forward</code></li>
-        <li><code>include</code></li>
-        <li><code>input</code></li>
-    </ul>
-
-    <p>
-    The action forward attributes that will accept wildcard-matched strings
-    are:
-    </p>
-
-    <ul>
-        <li><code>path</code></li>
-    </ul>
-
-</section>
-
-<section name="4.11 Commons Logging Interface" href="logging">
-    <p>
-    Struts doesn't configure logging itself -- it's all done by
-    <a href="http://jakarta.apache.org/commons/">commons-logging</a> 
-    under the covers. 
-    The default algorithm is a search:
-    </p>
-    
-    <ul>
-    
-        <li>
-        If Log4J is there, use it.
-        </li>
-
-        <li>
-        If JDK 1.4 is there, use it.
-        </li>
-
-        <li>
-        Otherwise, use SimpleLog.
-        </li>
-    
-    </ul>
-    
-    <p>
-    The commons-logging interface is an <em>ultra-thin</em> bridge to many 
-    different logging implementations.  
-    The intent is to remove compile- and run-time dependencies on any 
-    single logging implementation.  
-    For more information about the currently-supported implementations, 
-    please refer to the
-    <a href="http://jakarta.apache.org/commons/logging/api/index.html">
-    the description for the <code>org.apache.commons.logging</code> 
-    package</a>.
-    </p>
-    
-    <p>
-    Because Struts uses commons-logging and, therefore, includes the necessary 
-    JAR files for <strong>you</strong> to use commons-logging, you've probably had the 
-    occasional fleeting thought, <em>"Should I use
-    commons-logging?"</em> 
-    The answer (surprise!) depends on the requirements for your particular 
-    project. 
-    If one of your requirements is the ability to easily change logging 
-    implementations with zero impact on your application, then commons-logging 
-    is a very good option.
-    </p>
-    
-    <p>
-    <em>"Great!  What do I do to get started using commons-logging in my own 
-    code?"</em>
-    </p>
-    
-    <p>
-    Using commons-logging in your own code is very simple - all you need are 
-    two imports and a declaration for a logger.
-    Let's take a look:
-    </p>
-    
-<pre><code>package com.foo;
-// ...
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-...
-public class Foo {
-    // ...
-    private static Log log = LogFactory.getLog(Foo.class);
-    // ...
-    public void setBar(Bar bar) {
-        if (log.isTraceEnabled()) { 
-            log.trace("Setting bar to " + bar);
-        }
-        this.bar = bar;
-    }
-// ...
-}
-</code></pre>
-    
-    <p>
-    The general idea is to instantiate a single logger per class and to
-    use a name for the logger which reflects where it's being used.  The
-    example is constructed with the class itself.  This gives the
-    logger the name of com.foo.Foo.  Doing things this way lets you
-    easily see where the output is coming from, so you can quickly
-    pin-point problem areas.  In addition, you are able to enable/disable
-    logging in a very fine-grained way.
-    </p>
-
-    <p>
-    For examples of using logging in Struts classes, see the
-    Action classes in the Struts MailReader example application.
-    </p>
-
-</section>
-
-<section>
-    <p class="right">
-    Next: <a href="./configuration.html">Configuring Applications</a>
-    </p>
-</section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/building_model.xml b/build-legacy/core/xdocs/userGuide/building_model.xml
deleted file mode 100644
index f50082c..0000000
--- a/build-legacy/core/xdocs/userGuide/building_model.xml
+++ /dev/null
@@ -1,279 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-// ======================================================================== 78
--->
-
-<document url="building_model.html">
-
-<properties>
-    <title>The Struts User's Guide - Building Model Components</title>
-</properties>
-
-<body>
-<section name="2. Building Model Components" href="building_model"/>
-
-<section name="2.1 Overview" href="overview">
-
-    <p>
-    Many requirements documents used for building web applications focus on 
-    the <em>View</em>.  
-    However, you should ensure that the processing required for each submitted 
-    request is also clearly defined from the <em>Model's</em> perspective.  
-    In general, the developer of the <em>Model</em> components will be focusing 
-    on the creation of JavaBeans classes that support all of the functional 
-    requirements.  
-    The precise nature of the beans required by a particular application will 
-    vary widely depending on those requirements, but they can generally be
-    classified into several categories discussed below.  
-    However, a brief review of the concept of "scope" as it relates to beans 
-    and JSP is useful first.
-    </p>
-    
-</section>
-
-<section name="2.2 JavaBeans and Scope" href="javabeans">
-
-    <p>
-    Within a web-based application, JavaBeans can be stored in (and accessed
-    from) a number of different collections of "attributes".  
-    Each collection has different rules for the lifetime of that collection, 
-    and the visibility of the beans stored there.  
-    Together, the rules defining lifetime and visibility are called the 
-    <em>scope</em> of those beans.  
-    The JavaServer Pages (JSP) Specification defines scope choices using 
-    the following terms (with the equivalent servlet API concept defined in 
-    parentheses):
-    </p>
-
-    <ul>
-    
-        <li>
-        <strong>page</strong> - Beans that are visible within a single JSP page,
-        for the lifetime of the current request.  
-        (Local variables of the <code>service</code> method)
-        </li>
-
-        <li>
-        <strong>request</strong> - Beans that are visible within a single JSP page,
-        as well as to any page or servlet that is included in this page,
-        or forwarded to by this page.
-        (Request attributes)
-        </li>
-
-        <li>
-        <strong>session</strong> - Beans that are visible to all JSP pages and
-        servlets that participate in a particular user session, across one
-        or more requests.
-        (Session attributes)
-        </li>
-
-        <li>
-        <strong>application</strong> - Beans that are visible to all JSP pages and
-        servlets that are part of a web application.  
-        (Servlet context attributes)
-        </li>
-    
-    </ul>
-
-    <p>
-    It is important to remember that JSP pages and servlets in the same
-    web application share the same sets of bean collections.  
-    For example, a bean stored as a request attribute in a servlet like this:
-    </p>
-
-    <p>
-    <code>MyCart mycart = new MyCart(...);<br />
-    request.setAttribute("cart", mycart);
-    </code>
-    </p>
-
-    <p>
-    is immediately visible to a JSP page which this servlet forwards to,
-    using a standard action tag like this:
-    </p>
-
-    <p>
-    <code>&lt;jsp:useBean id="cart" scope="request"<br />
-    class="com.mycompany.MyApp.MyCart"/&gt;
-    </code>
-    </p>
-
-</section>
-
-<section name="2.3 ActionForm Beans" href="actionform">
-
-    
-    <strong>Note:</strong> While ActionForm beans often have properties that 
-    correspond to properties in your Model beans, the form beans themselves 
-    should be considered a Controller component. 
-    As such, they are able to transfer data between the Model and View layers.
-    
-
-    <p>
-    The Struts framework generally assumes that you have defined an
-    <code>ActionForm</code> bean (that is, a Java class extending the
-    <code>ActionForm</code> class) for the input forms in your
-    application. 
-    <code>ActionForm</code> beans are sometimes just called "form beans". 
-    These may be finely-grained objects, so that there is one
-    bean for each form, or coarsely-grained so that one bean serves
-    several forms, or even an entire application.
-    </p>
-
-    <p>
-    If you declare such beans in your Struts
-    configuration file (see "<a href="building_controller.html#config">
-    Building the Controller Components</a>"), the Struts  controller servlet
-    will automatically perform the following services for you, before
-    invoking the appropriate <code>Action</code> method:
-    </p>
-
-    <ul>
-    
-        <li>
-        Check for an instance of a bean of the appropriate class, under the appropriate key,
-        in the appropriate scope (request or session).
-        </li>
-
-        <li>
-        If there is no such bean instance available, a new one is
-        automatically created and added to the appropriate scope (request or session).
-        </li>
-
-        <li>
-        For every request parameter whose name corresponds to the name
-        of a property in the bean, the corresponding setter method will
-        be called.  This operates in a manner similar to the standard
-        JSP action <code>&lt;jsp:setProperty&gt;</code> when you use the
-        asterisk wildcard to select all properties.
-        </li>
-
-        <li>
-        The updated <code>ActionForm</code> bean will be passed to the
-        <code>execute</code> method of an <code>Action</code> class
-        [<code>org.apache.struts.Action</code>], so that the values can
-        be made available to your system state and business logic beans.
-        </li>
-    
-    </ul>
-
-    <p>
-    For more about coding <code>Actions</code> and <code>ActionForm</code>
-    beans, see the "<a href="building_controller.html">Building
-    Controller Components</a>" chapter.
-    </p>
-
-    <p>
-    You should note that a "form", in the sense discussed here, does not
-    necessarily correspond to a single JSP page in the user interface.  
-    It is common in many applications to have a "form" (from the user's 
-    perspective) that extends over multiple pages. 
-    Think, for example, of the wizard style user interface that is commonly 
-    used when installing new applications.  
-    Struts encourages you to define a single <code>ActionForm</code> bean that 
-    contains properties for all of the fields, no matter which page the field 
-    is actually displayed on. 
-    Likewise, the various pages of the same form should all be submitted to 
-    the same Action Class. 
-    If you follow these suggestions, the page designers can rearrange the 
-    fields among the various pages, often without requiring changes to the 
-    processing logic.
-    </p>
-
-    <p>
-    Smaller applications may only need a single ActionForm to service all of
-    its input forms. 
-    Others applications might use a single ActionForm for each major subsystem 
-    of the application. 
-    Some teams might prefer to have a separate ActionForm class for each 
-    distinct input form or workflow. 
-    How many or how few ActionForms to use is entirely up to you. 
-    The framework doesn't care.
-    </p>
-
-</section>
-
-<section name="2.4 System State Beans" href="system_state">
-
-    <p>
-    The actual state of a system is normally represented as a set of one or
-    more JavaBeans classes, whose properties define the current state.  
-    A shopping cart system, for example, will include a bean that represents 
-    the cart being maintained for each individual shopper, and will (among 
-    other things) include the set of items that the shopper has currently 
-    selected for purchase.  
-    Separately, the system will also include different beans for the user's 
-    profile information (including their credit card and ship-to addresses), 
-    as well as the catalog of available items and their current inventory 
-    levels.
-    </p>
-
-    <p>
-    For small scale systems, or for state information that need not be kept
-    for a long period of time, a set of system state beans may contain all the
-    knowledge that the system ever has of these particular details.  
-    Or, as is often the case, the system state beans will represent 
-    information that is stored permanently in some external database (such as 
-    a <code>CustomerBean</code> object that corresponds to a particular row in 
-    the CUSTOMERS table), and are created or removed from the server's memory 
-    as needed.  
-    Entity Enterprise JavaBeans are also used for this purpose in large scale 
-    applications.
-    </p>
-
-</section>
-
-<section name="2.5 Business Logic Beans" href="business_logic">
-
-    <p>
-    You should encapsulate the functional logic of your application as
-    method calls on JavaBeans designed for this purpose.  
-    These methods may be part of the same classes used for the system state 
-    beans, or they may be in separate classes dedicated to performing the 
-    logic.  
-    In the latter case, you will usually need to pass the system state beans 
-    to be manipulated to these methods as arguments.
-    </p>
-
-    <p>
-    For maximum code re-use, business logic beans should be designed and
-    implemented so that they do <strong>not</strong> know they are being executed in a
-    web application environment.  
-    If you find yourself having to import a <code>javax.servlet.*</code> class 
-    in your bean, you are tying this business logic to the web application 
-    environment.  
-    Consider rearranging things so that your <code>Action</code> classes (part 
-    of the Controller role, as described below) translate all required 
-    information from the HTTP request being processed into property setter 
-    calls on your business logic beans, after which a call to an 
-    <code>execute</code> method can be made.  
-    Such a business logic class can be reused in environments other than the 
-    web application for which they were initially constructed.
-    </p>
-
-    <p>
-    Depending on the complexity and scope of your application, business logic
-    beans might be ordinary JavaBeans that interact with system state beans
-    passed as arguments, or ordinary JavaBeans that access a database using
-    JDBC calls.  
-    For larger applications, these beans will often be stateful or stateless 
-    Enterprise JavaBeans (EJBs) instead.
-    </p>
-    
-    <p>
-    For more about using a database with your application, see the 
-    <a href="../faqs/database.html">Accessing a Database HowTo</a>.
-    </p>
-
-</section>
-
-<section>
-    <p class="right">
-    Next: <a href="building_view.html">Building View Components</a>
-    </p>
-</section>
-
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/building_view.xml b/build-legacy/core/xdocs/userGuide/building_view.xml
deleted file mode 100644
index 9e81c35..0000000
--- a/build-legacy/core/xdocs/userGuide/building_view.xml
+++ /dev/null
@@ -1,896 +0,0 @@
-<?xml version="1.0"?>
-<document url="building_view.html">
-
-<!--
-// ======================================================================== 78
--->
-
-<properties>
-    <title>The Struts User's Guide - Building View Components</title>
-</properties>
-
-<body>
-<section name="3. Building View Components" href="building_view"/>
-
-<section name="3.1 Overview" href="overview">
-
-    <p>
-    This chapter focuses on the task of building the <em>View</em> components
-    for use with the Struts framework. 
-    Many applications rely on JavaServer Pages (JSP) technology to create the 
-    presentation layer. 
-    The Struts distribution includes a comprehensive JSP tag library that 
-    provides support for building internationalized applications, as well as 
-    for interacting with input forms.
-    Several other topics related to the View components are briefly discussed.
-    </p>
-
-</section>
-
-<section name="3.2 Internationalized Messages" href="i18n">
-
-    <p>
-    A few years ago, application developers could count on having to support
-    only residents of their own country, who are used to only one (or 
-    sometimes two) languages, and one way to represent numeric quantities like 
-    dates, numbers, and monetary values.  
-    However, the explosion of application development based on web 
-    technologies, as well as the deployment of such applications on the 
-    Internet and other broadly accessible networks, have rendered national 
-    boundaries invisible in many cases.  
-    This has translated (if you will pardon the pun) into a need for 
-    applications to support <em>internationalization</em> (often called "i18n" 
-    because 18 is the number of letters in between the "i" and the "n") and 
-    <em>localization</em>.
-    </p>
-
-    <p>
-    Struts builds upon the standard classes available on the Java platform to
-    build internationalized and localized applications. 
-    The key concepts to become familiar with are:
-    </p>
-
-    <ul>
-    
-        <li>
-        <a href="http://java.sun.com/j2se/1.4.1/docs/api/java/util/Locale.html">
-        <strong>Locale</strong></a> - The fundamental Java class that supports 
-        internationalization is <code>Locale</code>.  
-        Each <code>Locale</code> represents a particular choice of country and 
-        language (plus an optional language variant), and also a set of 
-        formatting assumptions for things like numbers and dates.
-        </li>
-        
-        <li>
-        <a href="http://java.sun.com/j2se/1.4.1/docs/api/java/util/ResourceBundle.html">
-        <strong>ResourceBundle</strong></a> - The <code>java.util.ResourceBundle</code> 
-        class provides the fundamental tools for supporting messages in 
-        multiple languages.  
-        See the Javadocs for the <code>ResourceBundle</code> class, and the 
-        information on Internationalization in the documentation bundle for your 
-        JDK release, for more information.
-        </li>
-        
-        <li>
-        <a href="http://java.sun.com/j2se/1.4.1/docs/api/java/util/PropertyResourceBundle.html">
-        <strong>PropertyResourceBundle</strong></a> - One of the standard 
-        implementations of <code>ResourceBundle</code> allows you to define 
-        resources using  the same "name=value" syntax used to initialize 
-        properties files.  
-        This is very convenient for preparing resource bundles with messages 
-        that are used in a web application, because these messages are 
-        generally text oriented.
-        </li>
-        
-        <li>
-        <a href="http://java.sun.com/j2se/1.4.1/docs/api/java/text/MessageFormat.html">
-        <strong>MessageFormat</strong></a> - The <code>java.text.MessageFormat</code> 
-        class allows you to replace portions of a message string (in this 
-        case, one retrieved from a resource bundle) with arguments specified 
-        at run time.  
-        This is useful in cases where you are creating a sentence, but the 
-        words would appear in a different order in different languages.
-        The placeholder string <code>{0}</code> in the message is replaced by
-        the first runtime argument, <code>{1}</code> is replaced by the 
-        second argument, and so on.
-        </li>
-        
-        <li>
-        <a href="../api/org/apache/struts/util/MessageResources.html">
-        <strong>MessageResources</strong></a> - The Struts class 
-        <code>org.apache.struts.util.MessageResources</code> lets you treat
-        a set of resource bundles like a database, and allows you to request
-        a particular message string for a particular Locale (normally one
-        associated with the current user) instead of for the default Locale
-        the server itself is running in.
-        </li>
-        
-    </ul>
-
-    <p>
-    Please note that the i18n support in a framework like Struts is limited to 
-    the <strong>presentation</strong> of internationalized text and images to the user.
-    Support for Locale specific <strong>input methods</strong> (used with languages
-    such as Japanese, Chinese, and Korean) is left up to the client device, 
-    whichis usually a web browser.
-    </p>
-
-    <p>
-    For an internationalized application, follow the steps described in
-    the Internationalization document in the JDK documentation bundle for your
-    platform to create a properties file containing the messages for each
-    language.  
-    An example will illustrate this further:
-    </p>
-
-    <p>
-    Assume that your source code is created in package
-    <code>com.mycompany.mypackage</code>, so it is stored in a directory
-    (relative to your source directory) named
-    <code>com/mycompany/mypackage</code>.  
-    To create a resource bundle called
-    <code>com.mycompany.mypackage.MyApplication</code>, you would create the
-    following files in the <code>com/mycompany/mypackage</code> directory:
-    </p>
-
-    <ul>
-
-        <li>
-        <strong>MyApplication.properties</strong> - Contains the messages in the default
-        language for your server.  
-        If your default language is English, you might have an entry like 
-        this: <code>prompt.hello=Hello</code>
-        </li>
-
-        <li>
-        <strong>MyApplication_xx.properties</strong> - Contains the same messages in the
-        language whose ISO language code is "xx" (See the
-        <a href="http://java.sun.com/j2se/1.4.1/docs/api/java/util/ResourceBundle.html">
-        ResourceBundle Javadoc</a> page for a link to the current list).  
-        For a French version of the message shown above, you would have this 
-        entry: <code>prompt.hello=Bonjour</code>
-        You can have resource bundle files for as many languages as you need.
-        </li>
-
-    </ul>
-
-    <p>
-    When you configure the controller servlet in the web application
-    deployment descriptor, one of the things you will need to define in
-    an initialization parameter is the base name of the resource bundle
-    for the application.  
-    In the case described above, it would be 
-    <code>com.mycompany.mypackage.MyApplication</code>.
-    </p>
-
-<pre><code><![CDATA[
-<servlet>
-<servlet-name>action</servlet-name>
-<servlet-class>
-org.apache.struts.action.ActionServlet
-</servlet-class>
-<init-param>
-<param-name>application</param-name>
-<param-value>
-    com.mycompany.mypackage.MyResources
-</param-value>
-</init-param>
-<!-- ... -->
-</servlet>
-]]></code></pre>
-
-    <p>
-    The important thing is for the resource bundle to be found on the
-    class path for your application. 
-    Another approach is to store the <code>MyResources.properties</code> 
-    file in your application's <code>classes</code> folder. 
-    You can then simply specify "myResources" as the application value. 
-    Just be careful it is not deleted if your build script deletes 
-    classes as part of a "clean" target.
-    </p>
-
-    <p>
-    If it does, here is an Ant task to run when compiling your application
-    that copies the contents of a <code>src/conf</code>
-    directory to the <code>classes</code> directory:
-    </p>
-
-<pre><code><![CDATA[
-<!-- Copy any configuration files -->
-<copy todir="classes">
-<fileset dir="src/conf"/>
-</copy>
-]]></code></pre>
-
-</section>
-
-<section name="3.3 Forms and FormBean Interactions" href="form_beans">
-
-<p>
-    <strong>Note:</strong> While the examples given here use JSP and custom tags,
-    the ActionForm beans and the other Struts controller components are
-    View neutral. 
-    Struts can be used with Velocity Templates, XSL, and any other 
-    presentation technology that can be rendered via a Java servlet. 
-</p>
-
-    <p>
-    At one time or another, most web developers have built forms using
-    the standard capabilities of HTML, such as the <code>&lt;input&gt;</code>
-    tag.  
-    Users have come to expect interactive applications to have certain
-    behaviors, and one of these expectations relates to error handling -- if
-    the user makes an error, the application should allow them to fix just 
-    what needs to be changed -- without having to re-enter any of the rest 
-    of the information on the current page or form.
-    </p>
-
-    <p>
-    Fulfilling this expectation is tedious and cumbersome when coding with
-    standard HTML and JSP pages.  
-    For example, an input element for a <code>username</code> field might 
-    look like this (in JSP):
-    </p>
-   
-<pre><code><![CDATA[
-<input type="text" name="username"
-value="<%= loginBean.getUsername() >"/>
-]]></code></pre>
-
-    <p>
-    which is difficult to type correctly, confuses HTML developers who are
-    not knowledgeable about programming concepts, and can cause problems with
-    HTML editors.  
-    Instead, Struts provides a comprehensive facility for building forms, 
-    based on the Custom Tag Library facility of JSP 1.1.
-    The case above would be rendered like this using Struts:
-    </p>
-
-<pre><code><![CDATA[
-<html:text property="username"/>;
-]]></code></pre>
-
-    <p>
-    with no need to explicitly refer to the JavaBean from which the initial
-    value is retrieved.  That is handled automatically by the JSP tag, using
-    facilities provided by the framework.
-    </p>
-
-    <p>
-    HTML forms are sometimes used to upload other files. 
-    Most browsers support this through a &lt;input type="file"&gt; element, 
-    that generates a file browse button, but it's up to the developer to 
-    handle the incoming files. 
-    Struts handles these "multipart" forms in a way identical to building 
-    normal forms. 
-    </p>
-    
-    <p>
-    For an example of using Struts to create a simple login form, 
-    see the "<a href="../faqs/actionForm.html">
-    Buiding an ActionForm Howto</a>".
-    </p>
-
-</section>
-
-
-<section name="3.3.1 Indexed &amp; Mapped Properties" href="indexed">
-
-    <p>
-    Property references in JSP pages using the Struts framework can reference
-    Java Bean properties as described in the JavaBeans specification. 
-    Most of these references refer to "scalar" bean properties, referring to 
-    primitive or single Object properties.  
-    However, Struts, along with the Jakarta Commons Beanutils library, allow 
-    you to use property references which refer to individual items in an array, 
-    collection, or map, which are represented by bean methods using 
-    well-defined naming and signature schemes.
-    </p>
-
-<p>
- Documentation on the Beanutils package can be found at 
- <a href="http://jakarta.apache.org/commons/beanutils/api/index.html">
- http://jakarta.apache.org/commons/beanutils/api/index.html</a>.
- More information about using indexed and mapped properties in Struts can
- be found in the FAQ describing <a
- href="../faqs/indexedprops.html"><em>Indexed Properties, Mapped Properties,
- and Indexed Tags</em></a>.
-</p>
-</section>
-
-<section name="3.3.2 Input Field Types Supported" href="form_input">
-
-    <p>
-    Struts defines HTML tags for all of the following types of input fields,
-    with hyperlinks to the corresponding reference information.
-    </p>
-
-    <ul>
-        
-        <li>
-        <a href="struts-html.html#checkbox">checkboxes</a>
-        </li>
-        
-        <li>
-        <a href="struts-html.html#hidden">hidden</a> fields
-        </li>
-        
-        <li>
-        <a href="struts-html.html#password">password</a> input fields
-        </li>
-        
-        <li>
-        <a href="struts-html.html#radio">radio</a> buttons
-        </li>
-        
-        <li>
-        <a href="struts-html.html#reset">reset</a> buttons
-        </li>
-        
-        <li>
-        <a href="struts-html.html#select">select</a> lists with embedded 
-        option or options items
-        </li>
-        
-        <li>
-        <a href="struts-html.html#option">option</a>
-        </li>
-        
-        <li>
-        <a href="struts-html.html#options">options</a>
-        </li>
-        
-        <li>
-        <a href="struts-html.html#submit">submit</a> buttons
-        </li>
-        
-        <li>
-        <a href="struts-html.html#text">text</a> input fields
-        </li>
-        
-        <li>
-        <a href="struts-html.html#textarea">textareas</a>
-        </li>
-        
-    </ul>
-
-    <p>
-    In every
-    case, a field tag must be nested within a <code>form</code> tag, so that
-    the field knows what bean to use for initializing displayed values.
-    </p>
-
-</section>
-
-<section name="3.3.3 Other Useful Presentation Tags" href="presentation_tags">
-
-    <p>
-    There are several tags useful for creating presentations, consult the 
-    documentation on each specific tag library, along with the Tag Developers 
-    Guides, for more information:
-    </p>
-
-    <ul>
-
-    <li>
-    [logic] <a href="struts-logic.html#iterate">iterate</a> repeats its 
-    tag body once for each element of a specified collection (which can be an 
-    Enumeration, a Hashtable, a Vector, or an array of objects).
-    </li>
-    
-    <li>
-    [logic] <a href="struts-logic.html#present">present</a> depending on 
-    which  attribute is specified, this tag checks the current request, and 
-    evaluates the nested body content of this tag only if the specified value 
-    is present. 
-    Only one of the attributes may be used in one occurrence of this tag, 
-    unless you use the property attribute, in which case the name attribute 
-    is also required. 
-    The attributes include cookie, header, name, parameter, property, role, 
-    scope, and user.
-    </li>
-
-    <li>
-    [logic] <a href="struts-logic.html#notPresent">notPresent</a> the 
-    companion tag to present, notPresent provides the same functionality when 
-    the specified attribute is not present.
-    </li>
-    
-    <li>
-    [html] <a href="struts-html.html#link">link</a> generates a HTML 
-    &lt;a&gt; element as an anchor definition or a hyperlink to the specified 
-    URL, and automatically applies URL encoding to maintain session state in 
-    the absence of cookie support.
-    </li>
-    
-    <li>
-    [html] <a href="struts-html.html#img">img</a> generates a HTML 
-    &lt;img&gt; element with the ability to dynamically modify the URLs 
-    specified by the "src" and "lowsrc" attributes in the same manner that 
-    &lt;html:link> can.
-    </li>
-    
-    <li>
-    [bean] <a href="struts-bean.html#parameter">parameter</a> 
-    retrieves the value of the specified request parameter, and defines the 
-    result as a page scope attribute of type String or String[].
-    </li>
-    
-    </ul>
-
-</section>
-
-<section name="3.3.4 Automatic Form Validation" href="form_validation">
-
-    <p>
-    In addition to the form and bean interactions described above, Struts
-    offers an additional facility to validate the input fields it has received.
-    To utilize this feature, override the following method in your ActionForm
-    class:
-    </p>
-
-<pre><code><![CDATA[
-validate(ActionMapping mapping,
-HttpServletRequest request);
-]]></code></pre>
-
-    <p>
-    The <code>validate</code> method is called by the controller servlet after
-    the  bean properties have been populated, but before the corresponding 
-    action class's <code>execute</code> method is invoked. 
-    The <code>validate</code> method has the following options:
-    </p>
-
-    <ul>
-
-        <li>
-        Perform the appropriate validations and find no problems -- Return
-        either <code>null</code> or a zero-length ActionErrors instance, 
-        and the controller servlet will proceed to call the 
-        <code>perform</code> method of the appropriate <code>Action</code> class.
-        </li>
-
-        <li>
-        Perform the appropriate validations and find problems -- Return an 
-        ActionErrors instance containing <code>ActionError</code>'s, which 
-        are classes that contain the error message keys (into the 
-        application's <code>MessageResources</code> bundle) that should be 
-        displayed. 
-        The controller servlet will store this array as a request attribute 
-        suitable for use by the <code>&lt;html:errors&gt;</code> tag, and 
-        will forward control back to the input form (identified by the 
-        <code>input</code> property for this <code>ActionMapping</code>).
-        </li>
-        
-    </ul>
-
-    <p>
-    As mentioned earlier, this feature is entirely optional.  
-    The default implementation of the <code>validate</code> method returns 
-    <code>null</code>, and the controller servlet will assume that any 
-    required validation is done by the action class.
-    </p>
-    
-    <p>
-    One common approach is to perform simple, prima facia validations using 
-    the ActionForm <code>validate</code> method, and then handle the 
-    "business logic" validation from the Action.
-    </p>
-
-    <p>
-    The Struts Validator, covered in the next section, may be used to easily 
-    validate ActionForms.
-    </p>
-    
-</section>
-
-<section name="3.3.5 The Struts Validator" href="validator">
-
-    <p>
-    Configuring the Validator to perform form validation is easy.
-    </p>
-    <ol>
-    
-    <li>
-    The ActionForm bean must extend ValidatorForm
-    </li>
-    <li>
-    The form's JSP must include the 
-    <a href="struts-html.html">&lt;html:javascript&gt;</a> tag for client 
-    side validation.
-    </li>
-    <li>
-    You must define the validation rules in an xml file like this:
-    
-<pre><code><![CDATA[
-<form-validation>
-<formset>             
-<form name="logonForm">
-  <field property="username" depends="required">
-    <msg name="required" key="error.username"/>
-  </field>    
-</form>        
-</formset>   
-</form-validation>
-]]></code></pre>
-The msg element points to the message resource key to use when generating the error message.
-</li>
-<li>Lastly, you must enable the ValidatorPlugin in the struts-config.xml file like this:
-<pre><code><![CDATA[
-<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
-<set-property 
-property="pathnames" 
-value="/WEB-INF/validator-rules.xml, 
-    /WEB-INF/validation.xml"/>
-</plug-in>
-]]></code></pre>
-
-        </li>
-    </ol>
-    
-    <p>
-    <strong>Note:</strong> If your required form property is one of the Java object representations of 
-    primitive types (ie. java.lang.Integer), you must set the ActionServlet's convertNull init.
-    parameter to true.  Failing to do this will result in the required validation not being performed
-    on that field because it will default to 0.
-    </p>
-    
-    <p>
-    For more about the Struts Validator, see the 
-    <a href="./dev_validator.html">Developers Guide</a>.
-    </p>
-    
-</section>
-
-<section name="3.4 Other Presentation Techniques" href="other_presentations">
-
-    <p>
-    Although the look and feel of your application can be completely
-    constructed based on the standard capabilities of JSP and the Struts
-    custom tag library, you should consider employing other techniques that
-    will improve component reuse, reduce maintenance efforts, and/or reduce
-    errors.  
-    Several options are discussed in the following sections.
-    </p>
-  
-</section>
-
-<section name="3.4.1 Application-Specific Custom Tags" href="custom_tags">
-
-    <p>
-    Beyond using the custom tags provided by the Struts library, it is easy
-    to create tags that are specific to the application you are building, to
-    assist in creating the user interface.  The MailReader example application included with
-    Struts illustrates this principle by creating the following tags unique to
-    the implementation of this application:
-    </p>
-
-    <ul>
-    <li><strong>checkLogon</strong> - Checks for the existence of a particular session
-    object, and forwards control to the logon page if it is missing.  This is
-    used to catch cases where a user has bookmarked a page in the middle of
-    your application and tries to bypass logging on, or if the user's session
-    has been timed out. (Note that there are better ways to authenticate users; the
-    checkLogon tag is simply meant to demonstrate writing your own custom tags.) </li>
-    <li><strong>linkSubscription</strong> - Generates a hyperlink to a details page
-    for a Subscription, which passes the required primary key values as
-    request attributes.  This is used when listing the subscriptions associated
-    with a user, and providing links to edit or delete them.</li>
-    <li><strong>linkUser</strong> - Generates a hyperlink to a details page
-    for a User, which passes the required primary key values as
-    request attributes.</li>
-    </ul>
-
-    <p>
-    The source code for these tags is in the <code>src/example</code> directory,
-    in package <code>org.apache.struts.example</code>, along with the other Java
-    classes that are used in this application.
-    </p>
-</section>
-
-<section name="3.4.2 Page Composition With Includes" href="includes">
-
-    <p>
-    Creating the entire presentation of a page in one JSP file (with custom
-    tags and beans to access the required dynamic data) is a very common 
-    design approach, and was employed in the example application included 
-    with Struts.
-    However, many applications require the display of multiple logically 
-    distinct portions of your application together on a single page.
-    </p>
-
-    <p>
-    For example, a portal application might have some or all of the following
-    functional capabilities available on the portal's "home" page:
-    </p>
-
-    <ul>
-    
-        <li>
-        Access to a search engine for this portal.
-        </li>
-
-        <li>
-        One or more "news feed" displays, with the topics of interest 
-        customizedfrom the user's registration profile.
-        </li>
-
-        <li>
-        Access to discussion topics related to this portal.
-        </li>
-
-        <li>
-        A "mail waiting" indicator if your portal provides free email
-        accounts.
-        </li>
-    
-    </ul>
-
-    <p>
-    The development of the various segments of this site is easier if you
-    can divide up the work, and assign different developers to the different
-    segments.  
-    Then, you can use the <em>include</em> capability of JavaServer Pages
-    technology to combine the results into a single result page, or use the 
-    include tag provided with Struts.  
-    There are three types of <em>include</em> available, depending on when you w
-    ant the combination of output to occur:
-    </p>
-
-    <ul>
-    
-        <li>
-        An <code>&lt;%@ include file="xxxxx" %&gt;</code> directive can 
-        include a file that contains Java code or JSP tags. 
-        The code in the included file can even reference variables declared 
-        earlier in the outer jsp page. 
-        The code is inlined into the other JavaServer Page before it is 
-        compiled so it can definitely contain more than just HTML.
-        </li>
-
-        <li>
-        The include <em>action</em> (<code>&lt;jsp:include page="xxxxx"
-        flush="true" /&gt;</code>) is processed at request time, and is 
-        handled transparently by the server.  
-        Among other things, that means you can conditionally perform the 
-        include by nesting it within a tag like 
-        <a href="struts-logic.html#equal">equal</a> by using it's
-        parameter attribute.
-        </li>
-
-        <li>
-        The <a href="struts-bean.html#include">bean:include</a> 
-        tag takes either a an argument "forward" representing a logical name 
-        mapped to the jsp to include, or the "id" argument, which represents a 
-        page context String variable to print out to the jsp page.
-        </li>
-    
-    </ul>
-
-</section>
-
-<section name="3.4.3 Page Composition With Tiles" href="Tiles">
-
-    <p>
-    Tiles is a powerful templating library that allows you to construct views 
-    by combining various "tiles".  
-    Here's a quick setup guide:
-    </p>
-
-    <ol>
-        <li>
-        Create a /layout/layout.jsp file that contains your app's common look and 
-        feel:
-    
-<pre><code><![CDATA[
-<html>
-<body>
-<tiles:insert attribute="body"/>
-</body>
-</html>
-]]></code></pre>
-        </li>
-        
-        <li>
-    Create your /index.jsp homepage file:
-    
-<pre><code><![CDATA[
-<h1>This is my homepage</h1>
-]]></code></pre>
-
-        </li>
-
-        <li>
-        Create a /WEB-INF/tiles-defs.xml file that looks like this:
-
-<pre><code><![CDATA[
-<tiles-definitions>
-<definition 
-    name="layout" 
-    path="/layout/layout.jsp">
-    <put name="body" value=""/>
-</definition>
-<definition name="homepage" extends="layout">
-    <put 
-        name="body" 
-        value="/index.jsp"/>
-</definition>
-<tiles-definitions>
-]]></code></pre>
-        </li>
-
-        <li>
-        Setup the TilesPlugin in the struts-config.xml file:
-        
-<pre><code><![CDATA[
-<plug-in 
-    className="org.apache.struts.tiles.TilesPlugin">
-    <set-property 
-        property="definitions-config" 
-        value="/WEB-INF/tiles-defs.xml"/>
-</plug-in>
-]]></code></pre>
-        </li>
-        
-        <li>
-        Setup an action mapping in struts-config.xml to point to your 
-        homepage tile:
-
-<pre><code><![CDATA[
-<action 
-path="/index"
-type="org.apache.struts.actions.ForwardAction"
-parameter="homepage"/>
-]]></code></pre>
-        </li>
-        </ol>
-
-        <p>
-        The TilesPlugin configures a special RequestProcessor that determines 
-        if the requested view is a tile and processes it accordingly.  
-        Note that we made the homepage tile extend our root layout tile and 
-        changed the body attribute.  
-        Tiles inserts the file named in the body attribute into the main 
-        layout.
-        </p>
-
-        <p>
-        See the tiles-documentation webapp for in-depth examples.
-        </p>
-  
-  </section>
-
-  <section name="3.4.4 Image Rendering Components" href="image_rendering">
-
-        <p>
-        Some applications require dynamically generated images, like the 
-        price charts on a stock reporting site.  
-        Two different approaches are commonly  used to meet these 
-        requirements:
-        </p>
-
-    <ul>
-  
-        <li>
-        Render a hyperlink with a URL that executes a servlet request.  
-        The servlet will use a graphics library to render the graphical image,
-        set the content type appropriately (such as to 
-        <code>image/gif</code>), and send back the bytes of that image to the 
-        browser, which will display them just as if it had received a static 
-        file.
-        </li>
-
-        <li>
-        Render the HTML code necessary to download a Java applet that 
-        creates the required graph.  
-        You can configure the graph by setting appropriate initialization 
-        parameters for the applet in the rendered code, or you can have the 
-        applet make its own connection to the server to receive
-        these parameters.
-        </li>
-        
-    </ul>
-    
-  </section>
-
-  <section name="3.4.5 Rendering Text" href="text_rendering">
-
-    <p>
-    Some applications require dynamically generated text or markup,
-    such as XML. 
-    If a complete page is being rendered, and can be output using a 
-    PrintWriter, this is very easy to do from an Action:
-    </p>
-
-<pre><code><![CDATA[
-response.setContentType("text/plain"); // or text/xml
-PrintWriter writer = response.getWriter();
-// use writer to render text
-return(null);
-]]></code></pre>
-
-</section>
-
-    <section name="3.4.6 The Struts-EL Tag Library" href="struts-el">
-    
-    <p>
-    The <strong>Struts-EL</strong> tag library is a contributed library in
-    the Struts distribution.  
-    It represents an integration of the Struts tag library with the JavaServer 
-    Pages Standard Tag Library, or at least the "expression evaluation" 
-    engine that is used by the JSTL.
-    </p>
-
-    <p>
-    The base Struts tag library contains tags which rely on the evaluation
-    of "rtexprvalue"s (runtime scriptlet expressions) to evaluate dynamic
-    attribute values.  For instance, to print a message from a properties
-    file based on a resource key, you would use the
-    <code>bean:write</code> tag, perhaps like this:</p>
-    <pre><code>
-    <![CDATA[<bean:message key='<%= stringvar %>'/>]]>
-    </code></pre>
-
-    <p>
-    This assumes that <code>stringvar</code> exists as a JSP scripting
-    variable.  If you're using the <strong>Struts-EL</strong> library, the
-    reference looks very similar, but slightly different, like this:</p>
-    <pre><code>
-    <![CDATA[<bean-el:message key="${stringvar}"/>]]>
-    </code></pre>
-
-    <p>
-    If you want to know how to properly use the <strong>Struts-EL</strong>
-    tag library, there are two important things you need to know:
-    </p>
-    
-    <ul>
-    
-        <li>
-        The Struts tag library
-        </li>
-
-        <li>
-        The JavaServer Pages Standard tag library
-        </li>
-
-    </ul>
-
-
-    <p>
-    Once you understand how to use these two, consider Struts tag
-    attribute values being evaluated the same way the JSTL tag attribute
-    values are.  
-    Past that, there is very little else you need to know to effectively use 
-    the <strong>Struts-EL</strong> tag library.
-    </p>
-    
-    <p>
-    Although the <strong>Struts-EL</strong> tag library is a direct "port"
-    of the tags from the Struts tag library, not all of the tags in the
-    Struts tag library were implemented in the <strong>Struts-EL</strong>
-    tag library.  
-    This was the case if it was clear that the functionality of a particular 
-    Struts tag could be entirely fulfilled by a tag in the JSTL.  
-    It is assumed that developers will want to use the 
-    <strong>Struts-EL</strong> tag library along with the JSTL, so it is 
-    reasonable to assume that they will use tags from the JSTL if they
-    fill their needs.
-    </p>
-
-    <p>
-    For more see, <a href="../faqs/struts-el.html">Struts-El Extension</a> in the FAQ/HOWTO section.
-    </p>
-
-</section>
-
-<section>
-    <p class="right">
-    Next: <a href="building_controller.html">Building Controller 
-    Components</a>
-    </p>
-</section>
-
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/configuration.xml b/build-legacy/core/xdocs/userGuide/configuration.xml
deleted file mode 100644
index f33201e..0000000
--- a/build-legacy/core/xdocs/userGuide/configuration.xml
+++ /dev/null
@@ -1,1305 +0,0 @@
-<?xml version="1.0"?>
-<document url="configuration.html">
-
-<properties>
-    <title>The Struts User's Guide - Configuring Applications</title>
-</properties>
-
-<body>
-<section name="5. Configuring Applications" href="config_apps"/>
-
-<section name="5.1 Overview" href="config-overview">
-
-    <p>
-    Before you can build an application, you need to lay a solid foundation.
-    There are several setup tasks you need to perform before deploying
-    your Struts application.
-    These include components in the Struts configuration file
-    and in the Web Application Deployment Descriptor.
-    </p>
-
- </section>
-
- <section name="5.2 The Struts configuration file"  href="struts-config">
-
-    <p>
-    The <a href="building_controller.html#config">Building Controller
-    Components</a> chapter covered writing the form-bean and action-mapping
-    portions of the Struts configuration file.
-    These elements usually play an important role in the development of a
-    Struts application.
-    The other elements in Struts configuration file tend to be static:
-    you set them once and leave them alone.
-    </p>
-
-    <p>
-    These "static" configuration elements are:
-    </p>
-
-    <ul>
-
-        <li>
-            controller
-        </li>
-
-        <li>
-            message-resources
-        </li>
-
-        <li>
-            plug-in
-        </li>
-
-        <li>
-            data-sources
-        </li>
-
-    </ul>
-
- </section>
-
- <section name="5.2.1 Controller Configuration" href="controller_config">
-
-    <p>
-    The <code>&lt;controller&gt;</code> element allows you to configure
-    the ActionServlet.
-    Many of the controller parameters were previously defined by servlet
-    initialization parameters in your <code>web.xml</code> file but have been
-    moved to this section of <code>struts-config.xml</code> in order to allow
-    different modules in the same web application to be configured differently.
-    For full details on available parameters see the
-    <a href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
-    struts-config_1_1.dtd</a> or the list below.
-    </p>
-
-    
-
-    <ul>
-
-        <li>
-        <strong>bufferSize</strong> - The size (in bytes) of the input buffer
-        used when processing file uploads.
-        [4096] (optional)
-        </li>
-
-        <li>
-        <strong>className</strong> - Classname of configuration bean.
-        [org.apache.struts.config.ControllerConfig] (optional)
-        </li>
-
-        <li>
-        <strong>contentType</strong> - Default content type (and optional character
-        encoding) to be set on each response.
-        May be overridden by the Action, JSP, or other resource to which
-        the request is forwarded.
-        [text/html] (optional)
-        </li>
-
-        <li>
-        <strong>forwardPattern</strong> - Replacement pattern defining how the "path"
-        attribute of a <code>&lt;forward&gt;</code> element is mapped to a
-        context-relative URL when it starts with a slash (and when the
-        <code>contextRelative</code> property is <code>false</code>).
-        This value may consist of any combination of the following:
-
-        <ul>
-
-            <li>
-            <em>$M</em> - Replaced by the module prefix of this module.
-            </li>
-
-            <li>
-            <em>$P</em> - Replaced by the "path" attribute of the selected
-            <code>&lt;forward&gt;</code> element.
-            </li>
-
-            <li>
-            <em>$$</em> - Causes a literal dollar sign to be rendered.
-            </li>
-
-            <li>
-            <em>$x</em> - (Where "x" is any character not defined above)
-            Silently swallowed, reserved for future use.
-            </li>
-
-        </ul>
-
-        If not specified, the default forwardPattern is consistent with the
-        previous behavior of forwards.
-        [$M$P] (optional)
-        </li>
-
-        <li>
-        <strong>inputForward</strong> - Set to <code>true</code> if you want the
-        <code>input</code> attribute of <code>&lt;action&gt;</code> elements
-        to be the name of a local or global <code>ActionForward</code>, which
-        will then be used to calculate the ultimate URL.
-        Set to <code>false</code> to treat the <code>input</code> parameter of
-        <code>&lt;action&gt;</code> elements as a module-relative path to
-        the resource to be used as the input form.
-        [false] (optional)
-        </li>
-
-        <li>
-        <strong>locale</strong> - Set to <code>true</code> if you want a
-        <code>Locale</code> object stored in the user's session if not already
-        present.
-        [true] (optional)
-        </li>
-
-        <li>
-        <strong>maxFileSize</strong> - The maximum size (in bytes) of a file to be
-        accepted as a file upload.
-        Can be expressed as a number followed by a "K", "M", or "G",
-        which are interpreted to mean kilobytes, megabytes, or gigabytes,
-        respectively.
-        [250M] (optional)
-        </li>
-
-        <li>
-        <strong>memFileSize</strong> - The maximum size (in bytes) of a file whose 
-        contents will be retained in memory after uploading. Files larger than this
-        threshold will be written to some alternative storage medium, typically
-        a hard disk. Can be expressed as a number followed by a "K", "M", or
-        "G", which are interpreted to mean kilobytes, megabytes, or gigabytes,
-        respectively.
-        [256K] (optional)
-        </li>
-
-        <li>
-        <strong>multipartClass</strong> - The fully qualified Java class name of the
-        multipart request handler class to be used with this module.
-        [org.apache.struts.upload.CommonsMultipartRequestHandler] (optional)
-        </li>
-
-        <li>
-        <strong>nocache</strong> - Set to <code>true</code> if you want the controller
-        to add HTTP headers for defeating caching to every response from
-        this module.
-        [false] (optional)
-        </li>
-
-        <li>
-        <strong>pagePattern</strong> - Replacement pattern defining how the
-        <code>page</code> attribute of custom tags using it is mapped to a
-        context-relative URL of the corresponding resource.
-        This value may consist of any combination of the following:
-
-        <ul>
-
-            <li>
-            <em>$M</em> - Replaced by the module prefix of this module.
-            </li>
-
-            <li>
-            <em>$P</em> - Replaced by the "path" attribute of the selected
-            <code>&lt;forward&gt;</code> element.
-
-            </li>
-            <li>
-            <em>$$</em> - Causes a literal dollar sign to be rendered.
-            </li>
-
-            <li>
-            <em>$x</em> - (Where "x" is any character not defined above)
-              Silently swallowed, reserved for future use.
-            </li>
-
-        </ul>
-
-        If not specified, the default pagePattern is consistent with the
-        previous behavior of URL calculation.
-        [$M$P] (optional)
-        </li>
-        <li>
-
-        <strong>processorClass</strong> - The fully qualified Java class name of the
-        <code>RequestProcessor</code> subclass to be used with this module.
-        [org.apache.struts.action.RequestProcessor] (optional)
-        </li>
-
-        <li>
-        <strong>tempDir</strong> - Temporary working directory to use when processing
-        file uploads.
-        [{the directory provided by the servlet container}]
-        </li>
-
-    </ul>
-
-    
-
-    <p>
-    This example uses the default values for several controller parameters.
-    If you only want default behavior you can omit the controller section
-    altogether.
-    </p>
-
-<pre><code><![CDATA[
-<controller
-    processorClass="org.apache.struts.action.RequestProcessor"
-             debug="0"
-       contentType="text/html"/>;
-]]></code></pre>
-
-</section>
-
-<section name="5.2.2 Message Resources Configuration" href="resources_config">
-
-    <p>
-    Struts has built in support for internationalization (I18N).
-    You can define one or more <code>&lt;message-resources&gt;</code> elements
-    for your webapp; modules can define their own resource bundles.
-    Different bundles can be used simultaneously in your application, the 'key'
-    attribute is used to specify the desired bundle.
-    </p>
-
-    
-
-    <ul>
-
-        <li>
-        <strong>className</strong> - Classname of configuration bean.
-        [org.apache.struts.config.MessageResourcesConfig] (optional)
-        </li>
-
-        <li>
-        <strong>factory</strong> - Classname of MessageResourcesFactory.
-        [org.apache.struts.util.PropertyMessageResourcesFactory] (optional)
-        </li>
-
-        <li>
-        <strong>key</strong> - ServletContext attribute key to store this bundle.
-        [org.apache.struts.action.MESSAGE] (optional)
-        </li>
-
-        <li>
-        <strong>null</strong> - Set to <code>false</code> to display missing resource
-        keys in your application like '<em>???keyname???</em>' instead of
-        <code>null</code>.
-        [true] (optional)
-        </li>
-
-        <li>
-        <strong>parameter</strong> - Name of the resource bundle. (required)
-        </li>
-
-    </ul>
-
-    
-
-    <p>Example configuration:</p>
-
-<pre><code><![CDATA[
-<message-resources
-    parameter="MyWebAppResources"
-    null="false" />
-]]></code></pre>
-
-    <p>
-    This would set up a message resource bundle provided in the file
-    <code>MyWebAppResources.properties</code> under the default key.
-    Missing resource keys would be displayed as '<em>???keyname???</em>'.
-    </p>
-
-</section>
-
-<section name="5.2.3 PlugIn Configuration" href="plugin_config">
-
-    <p>
-    Struts PlugIns are configured using the <code>&lt;plug-in&gt;</code>
-    element within the Struts configuration file.
-    This element has only one valid attribute, 'className', which is the fully
-    qualified name of the Java class which implements the
-    <code>org.apache.struts.action.PlugIn</code> interface.
-    </p>
-
-    <p>
-    For PlugIns that require configuration themselves, the nested
-    <code>&lt;set-property&gt;</code> element is available.
-    </p>
-
-    <p>
-    This is an example using the Tiles plugin:
-    </p>
-
-<pre><code><![CDATA[
-<plug-in className="org.apache.struts.tiles.TilesPlugin" >
-<set-property
-  property="definitions-config"
-  value="/WEB-INF/tiles-defs.xml"/>
-</plug-in>
-]]></code></pre>
-
-</section>
-
-<section name="5.2.4 Data Source Configuration" href="data-source_config">
-
-    <p>
-    Besides the objects related to defining ActionMappings, the Struts
-    configuration may contain elements that create other useful objects.
-    </p>
-
-    <p>
-    The <code>&lt;data-sources></code> section can be used to specify
-    a collection of DataSources [javax.sql.DataSource] for the use of your
-    application.
-    Typically, a DataSource represents a connection pool to a database
-    or other persistent store.
-    As a convenience, the Struts DataSource manager can be used to
-    instantiate whatever standard pool your application may need.
-    Of course, if your persistence layer provides for its own connections,
-    then you do not need to specify a <code>data-sources</code> element.
-    </p>
-
-    <p>
-    Since DataSource implementations vary in what properties need to be
-    set, unlike other Struts configuration elements, the
-    <code>data-source</code> element does not pre-define a slate of
-    properties.
-    Instead, the generic <code>set-property</code> feature is used to set
-    whatever properties your implementation may require.
-    Typically, these settings would include:
-    </p>
-
-    <ul>
-
-    <li>
-    A driver class name
-    </li>
-
-    <li>
-    A url to access the driver
-    </li>
-
-    <li>
-    A description
-    </li>
-
-    </ul>
-
-    <p>
-    And other sundry properties.
-    </p>
-
-<pre><code><![CDATA[
-<data-source type="org.apache.commons.dbcp.BasicDataSource">
-<!-- ... set-property elements ... -->
-</data-source>
-]]></code></pre>
-
-    <p>
-    In Struts 1.2.0, the GenericDataSource has been removed, and it is
-    recommended that you use the Commons BasicDataSource or other DataSource
-    implementation instead. In practice, if you need to use the DataSource 
-    manager, you should use whatever DataSource implementation works best 
-    with your container or database.
-    </p>
-
-    <p>
-    For examples of specifying a data-sources element and using the
-    DataSource with an Action, see the
-    <a href="../faqs/database.html">Accessing a Database HowTo</a>.
-    </p>
-
-</section>
-
-<section
-    name="5.3 Configuring your application for modules"
-    href="dd_config_modules">
-
-    <p>
-    Very little is required in order to start taking advantage of the Struts
-    application module feature.
-    Just go through the following steps:
-    </p>
-
-    <ol>
-
-      <li>
-      Prepare a config file for each module.
-      </li>
-
-      <li>
-      Inform the controller of your module.
-      </li>
-
-      <li>
-      Use actions to refer to your pages.
-      </li>
-
-    </ol>
-
-</section>
-
-<section name="5.3.1 Module Configuration Files" href="module_config-files">
-
-    <p>
-    Back in Struts 1.0, a few "boot-strap" options were placed in the web.xml
-    file, and the bulk of the configuration was done in a single
-    struts-config.xml file.
-    Obviously, this wasn't ideal for a team environment, since multiple users
-    had to share the same configuration file.
-    </p>
-
-    <p>
-    In Struts 1.1, you have two options: you can list
-    <a href="#dd_config_servlet">multiple struts-config files</a> as a
-    comma-delimited list, or you can subdivide a larger application into
-    modules.
-    </p>
-
-    <p>
-    With the advent of modules, a given module has its own configuration file.
-    This means each team (each module would presumably be developed by a
-    single team) has their own configuration file, and there should be a lot
-    less contention when trying to modify it.
-    </p>
-
-</section>
-
-<section
-    name="5.3.2 Informing the Controller"
-    href="module_config-inform_controller">
-
-    <p>
-    In struts 1.0, you listed your configuration file as an initialization
-    parameter to the action servlet in web.xml.
-    This is still done in 1.1, but it's augmented a little.
-    In order to tell the Struts machinery about your different modules, you
-    specify multiple config initialization parameters, with a slight twist.
-    You'll still use "config" to tell the action servlet about your "default"
-    module, however, for each additional module, you will
-    list an initialization parameter named "config/module", where module is
-    the name of your module (this gets used when determining which URIs fall
-    under a given module, so choose something meaningful!).
-    For example:
-    </p>
-
-<pre><code><![CDATA[
-    ...
-    <init-param>
-      <param-name>config</param-name>
-      <param-value>/WEB-INF/conf/struts-default.xml</param-value>
-    </init-param>
-    <init-param>
-      <param-name>config/module1</param-name>
-      <param-value>/WEB-INF/conf/struts-module1.xml</param-value>
-    </init-param>
-    ...
-]]></code></pre>
-
-    <p>
-    This says I have two modules.
-    One happens to be the "default" module, which has no "/module" in it's
-    name, and one named "module1" (config/module1).
-    I've told the controller it can find their respective configurations
-    under /WEB-INF/conf (which is where I put all my configuration files).
-    Pretty simple!
-    </p>
-
-    <p>
-    (My struts-default.xml would be equivalent to what most folks call
-    struts-config.xml.
-    I just like the symmetry of having all my Struts module files being
-    named struts-&lt;module&gt;.xml)
-    </p>
-
-    <p>
-        If you'd like to vary where the pages for each module is stored,
-        see the <a href="#controller_config">forwardPattern</a> setting for the
-        Controller.
-    </p>
-
-</section>
-
-
-<section name="5.3.3 Switching Modules" href="module_config-switching">
-
-    <p>
-    There are two basic methods to switching from one module to another.
-    You can either use a forward (global or local) and specify the
-    contextRelative attribute with a value of true, or you can use
-    the built-in <code>org.apache.struts.actions.SwitchAction</code>.
-    </p>
-
-    <p>
-    Here's an example of a global forward:
-    </p>
-
-<pre><code><![CDATA[
-    ...
-    <struts-config>
-    ...
-    <global-forwards>
-    <forward name="toModuleB"
-       contextRelative="true"
-       path="/moduleB/index.do"
-       redirect="true"/>
-    ...
-    </global-forwards>
-    ...
-    </struts-config>
-]]></code></pre>
-
-    <p>
-     You could do the same thing with a local forward declared in an
-     ActionMapping:
-    </p>
-
-<pre><code><![CDATA[
-    ...
-    <struts-config>
-    ...
-    <action-mappings>
-    ...
-    <action ... >
-    <forward name="success"
-         contextRelative="true"
-         path="/moduleB/index.do"
-         redirect="true"/>
-    </action>
-    ...
-    </action-mappings>
-    ...
-    </struts-config>
-]]></code></pre>
-
-    <p>
-     Finally, you could use
-     <code>org.apache.struts.actions.SwitchAction</code>,
-     like so:
-    </p>
-
-<pre><code><![CDATA[
-    ...
-    <action-mappings>
-    <action path="/toModule"
-    type="org.apache.struts.actions.SwitchAction"/>
-    ...
-    </action-mappings>
-    ...
-]]></code></pre>
-
-    <p>
-     Now, to change to ModuleB, we would use a URI like this:
-    </p>
-
-    <pre><code>
-    http://localhost:8080/toModule.do?prefix=/moduleB&amp;page=/index.do
-    </code></pre>
-
-    <p>
-    If you are using the "default" module as well as "named" modules (like "/moduleB"),
-    you can switch back to the "default" module with a URI like this:
-    </p>
-
-    <pre><code>
-    http://localhost:8080/toModule.do?prefix=&amp;page=/index.do
-    </code></pre>
-
-    <p>
-    That's all there is to it!  Happy module-switching!
-    </p>
-
-</section>
-
-<section name="5.4 The Web Application Deployment Descriptor" href="dd_config">
-
-    <p>
-    The final step in setting up the application is to configure the
-    application deployment descriptor (stored in file
-    <code>WEB-INF/web.xml</code>) to  include all the Struts components that
-    are required.
-    Using the deployment descriptor for the example application as a guide,
-    we see that the following entries need to be created or modified.
-    </p>
-
-</section>
-
-<section
-    name="5.4.1 Configure the Action Servlet Instance"
-    href="dd_config_servlet">
-
-    <p>
-    Add an entry defining the action servlet itself, along with the
-    appropriate initialization parameters.
-    Such an entry might look like this:
-    </p>
-
-<pre><code><![CDATA[
-<servlet>
-  <servlet-name>action</servlet-name>
-  <servlet-class>
-    org.apache.struts.action.ActionServlet
-  </servlet-class>
-  <init-param>
-    <param-name>config</param-name>
-    <param-value>
-      /WEB-INF/struts-config.xml
-    </param-value>
-  </init-param>
-  <load-on-startup>1</load-on-startup>
-</servlet>
-]]></code></pre>
-
-    <p>
-    The initialization parameters supported by the controller servlet are
-    described below.
-    (You can also find these details in the
-    <a href="../api/index.html">Javadocs</a> for the ActionServlet class.)
-    Square brackets describe the default values that are assumed if you do
-    not provide a value for that initialization parameter.
-    </p>
-
-    <ul>
-
-        <li>
-        <strong>config</strong> - Context-relative path to the XML resource
-        containing the configuration information for the default module.
-        This may also be a comma-delimited list of configuration files.
-        Each file is loaded in turn, and its objects are appended to the
-        internal data structure. [/WEB-INF/struts-config.xml].<br/>
-        <strong>WARNING</strong> - If you define
-        an object of the same name in more than one configuration file,
-        the last one loaded quietly wins.
-
-        </li>
-
-        <li>
-        <strong>config/${module}</strong> - Context-relative path to the XML
-        resource containing the configuration information for the application
-        module that will use the specified prefix (/${module}).
-        This can be repeated as many times as required for multiple
-        application modules. (Since Struts 1.1)
-        </li>
-
-        <li>
-        <strong>convertNull</strong> - Force simulation of the Struts 1.0
-        behavior when populating forms.
-        If set to true, the numeric Java wrapper class types (like
-        <code>java.lang.Integer</code>) will default to null (rather than 0).
-        (Since Struts 1.1) [false]
-        </li>
-
-        <li>
-        <strong>rulesets</strong> - Comma-delimited list of fully qualified
-        classnames of additional
-        <code>org.apache.commons.digester.RuleSet</code> instances that
-        should be added to the <code>Digester</code> that will be processing
-        <code>struts-config.xml</code> files.
-        By default, only the <code>RuleSet</code> for the standard
-        configuration elements is loaded. (Since Struts 1.1)
-        </li>
-
-        <li>
-        <strong>validating</strong> - Should we use a validating XML parser to
-        process the configuration file (strongly recommended)?
-        [true]
-        </li>
-
-    </ul>
-
-
-     <p>
-     The following parameters may still be used with the Struts 1.1 release
-     but are <strong>deprecated</strong>.
-     </p>
-
-     <ul>
-
-        <li>
-        <strong>application</strong> - Java class name of the application
-        resources bundle base class.
-        [NONE]
-        <em>DEPRECATED - Configure this using the "parameter" attribute
-        of the &lt;message-resources&gt; element.</em>
-        </li>
-
-        <li><strong>bufferSize</strong> - The size of the input buffer used
-        when processing file uploads.
-        [4096]
-        <em>DEPRECATED - Configure this using the "bufferSize" attribute
-        of the &lt;controller&gt; element.</em>
-        </li>
-
-        <li>
-        <strong>content</strong> - Default content type and character encoding
-        to be set on each response; may be overridden by a forwarded-to
-        servlet or JSP page.
-        [text/html]
-        <em>DEPRECATED - Configure this using the "contentType" attribute
-        of the &lt;controller&gt; element.</em>
-        </li>
-
-        <li>
-        <strong>debug</strong> - The debugging detail level that controls
-        how much information is logged for this servlet.
-        Accepts values 0 (off) and from 1 (least serious) through 6
-        (most serious). [0]
-        <em>DEPRECATED - Configure the logging detail level in your
-        underlying logging implementation.</em>
-        </li>
-
-        <li>
-        <strong>factory</strong> - The Java class name of the
-        <code>MessageResourcesFactory</code> used to create the application
-        <code>MessageResources</code> object.
-        [org.apache.struts.util.PropertyMessageResourcesFactory]
-        <em>DEPRECATED - Configure this using the "factory" attribute
-        of the &lt;message-resources&gt; element.</em>
-        </li>
-
-        <li>
-        <strong>formBean</strong> - The Java class name of the ActionFormBean
-        implementation to use
-        [org.apache.struts.action.ActionFormBean].
-        <em>DEPRECATED - Configure this using the "className" attribute
-        of each &lt;form-bean&gt; element.</em>
-        </li>
-
-        <li>
-        <strong>forward</strong> - The Java class name of the ActionForward
-        implementation to use
-        [org.apache.struts.action.ActionForward].
-        Two convenient classes you may wish to use are:
-        <ul>
-
-            <li>
-            <em>org.apache.struts.action.ForwardingActionForward</em> -
-            Subclass of <code>org.apache.struts.action.ActionForward</code>
-            that defaults the <code>redirect</code> property to
-            <code>false</code> (same as the ActionForward default value).
-            </li>
-
-            <li>
-            <em>org.apache.struts.action.RedirectingActionForward</em> -
-            Subclass of <code>org.apache.struts.action.ActionForward</code>
-            that defaults the <code>redirect</code> property to
-            <code>true</code>.
-            </li>
-
-        </ul>
-        <em>DEPRECATED - Configure this using the "className" attribute of
-        each &lt;forward&gt; element.</em>
-        </li>
-
-        <li>
-        <strong>locale</strong> - If set to <code>true</code>, and there is a
-        user session, identify and store an appropriate
-        <code>java.util.Locale</code> object (under the standard key
-        identified by <code>Globals.LOCALE_KEY</code>) in the user's session
-        if there is not a Locale object there already.
-        [true]
-        <em>DEPRECATED - Configure this using the "locale" attribute of
-        the &lt;controller&gt; element.</em>
-        </li>
-
-        <li>
-        <strong>mapping</strong> - The Java class name of the ActionMapping
-        implementation to use
-        [org.apache.struts.action.ActionMapping].
-        Two convenient classes you may wish to use are:
-
-        <ul>
-
-            <li>
-            <em>org.apache.struts.action.RequestActionMapping</em> - Subclass
-            of <code>org.apache.struts.action.ActionMapping</code> that
-            defaults the <code>scope</code> property to "request".
-            </li>
-
-            <li>
-            <em>org.apache.struts.action.SessionActionMapping</em> - Subclass
-            of <code>org.apache.struts.action.ActionMapping</code> that
-            defaults the <code>scope</code> property to "session".
-            (Same as the ActionMapping default value).
-            </li>
-
-        </ul>
-
-        <em>DEPRECATED - Configure this using the "className" attribute of
-        each &lt;action&gt; element, or globally for a module by using the
-        "type" attribute of the &lt;action-mappings&gt; element.</em>
-        </li>
-
-        <li>
-        <strong>maxFileSize</strong> - The maximum size (in bytes) of a file
-        to be accepted as a file upload.
-        Can be expressed as a number followed by a "K" "M", or "G", which are
-        interpreted to mean kilobytes, megabytes, or gigabytes, respectively.
-        [250M]
-        <em>DEPRECATED - Configure this using the "maxFileSize" attribute of
-        the &lt;controller&gt; element.</em>
-        </li>
-
-        <li>
-        <strong>multipartClass</strong> - The fully qualified name of the
-        MultipartRequestHandler implementation class to be used for processing
-        file uploads.
-        If set to <code>none</code>, disables Struts multipart request
-        handling.
-        [org.apache.struts.upload.CommonsMultipartRequestHandler]
-        <em>DEPRECATED - Configure this using the "multipartClass" attribute
-        of the &lt;controller&gt; element.</em>
-        </li>
-
-        <li>
-        <strong>nocache</strong> - If set to <code>true</code>, add HTTP
-        headers to every response intended to defeat browser caching of
-        any response we generate or forward to.
-        [false]
-        <em>DEPRECATED - Configure this using the "nocache" attribute of
-        the &lt;controller&gt; element.</em>
-        </li>
-
-        <li>
-        <strong>null</strong> - If set to <code>true</code>, set our
-        application resources to return <code>null</code> if an unknown
-        message key is used.
-        Otherwise, an error message including the offending message key will
-        be returned.
-        [true]
-        <em>DEPRECATED - Configure this using the "null" attribute of
-        the &lt;message-resources&gt; element.</em>
-        </li>
-
-        <li>
-        <strong>tempDir</strong> - The temporary working directory to use when
-        processing file uploads.
-        [The working directory provided to this web application as a servlet
-        context attribute]
-        <em>DEPRECATED - Configure this using the "tempDir" attribute of
-        the &lt;controller&gt; element.</em>
-        </li>
-
-     </ul>
-
-     <p>
-       <strong>WARNING</strong> - Struts will not
-       operate correctly if you define more than one
-       <code>&lt;servlet&gt;</code> element for a controller
-       servlet, or a subclass of the standard controller servlet class.
-       The controller servlet <strong>MUST</strong> be a web application
-       wide singleton.
-     </p>
-
-</section>
-
-<section
-    name="5.4.2 Configure the Action Servlet Mapping"
-    href="dd_config_mapping">
-
-    <p>
-    <strong>Note:</strong> The material in this section is not specific to
-    Struts.
-    The configuration of servlet mappings is defined in the Java Servlet
-    Specification.
-    This section describes the most common means of configuring a Struts
-    application.
-    </p>
-
-    <p>
-    There are two common approaches to defining the URLs that will
-    be processed by the controller servlet -- prefix matching and extension
-    matching.
-    An appropriate mapping entry for each approach will be described below.
-    </p>
-
-    <p>
-    Prefix matching means that you want all URLs that start (after the context
-    path part) with a particular value to be passed to this servlet.
-    Such an entry might look like this:
-    </p>
-
-<pre><code><![CDATA[
-  <servlet-mapping>
-     <servlet-name>action</servlet-name>
-     <url-pattern>/do/*</url-pattern>
-   </servlet-mapping>
-]]></code></pre>
-
-        <p>
-        which means that a request URI to match the <code>/logon</code> path
-        described earlier might look like this:
-        </p>
-
-<pre><code>http://www.mycompany.com/myapplication/do/logon</code></pre>
-
-        <p>
-        where <code>/myapplication</code> is the context path under which your
-        application is deployed.
-        </p>
-
-        <p>
-        Extension mapping, on the other hand, matches request URIs to the
-        action servlet based on the fact that the URI ends with a period
-        followed by a defined set of characters.
-        For example, the JSP processing servlet is mapped
-        to the <code>*.jsp</code> pattern so that it is called to process
-        every JSP page that is requested.
-        To use the <code>*.do</code> extension (which implies "do something"),
-        the mapping entry would look like this:
-        </p>
-
-<pre><code><![CDATA[
-  <servlet-mapping>
-     <servlet-name>action</servlet-name>
-     <url-pattern>*.do</url-pattern>
-   </servlet-mapping>
-]]></code></pre>
-
-        <p>
-        and a request URI to match the <code>/logon</code> path described
-        earlier might look like this:
-        </p>
-
-<pre><code>http://www.mycompany.com/myapplication/logon.do</code></pre>
-
-        <p>
-        <strong>WARNING</strong> - Struts will not
-        operate correctly if you define more than one
-        <code>&lt;servlet-mapping&gt;</code> element for the controller
-        servlet.
-        </p>
-
-        <p>
-        <strong>WARNING</strong> - If you are using
-        the new module support in Struts 1.1, you should be aware
-        that <strong>only</strong> extension mapping is supported.
-        </p>
-
-</section>
-
-<section
-    name="5.4.3 Configure the Struts Tag Libraries"
-    href="dd_config_taglib">
-
-        <p>
-        Next, you must add an entry defining the Struts tag library.
-        </p>
-
-        <p>
-        The struts-bean taglib contains tags useful in accessing beans and their
-        properties,  as well as defining new beans (based on these accesses)
-        that are accessible to the remainder of the page via scripting
-        variables and page scope attributes.
-        Convenient mechanisms to create new beans based on the value of request
-        cookies, headers, and parameters are also provided.
-        </p>
-
-        <p>
-        The struts-html taglib contains tags used to create struts input forms,
-        as well as other tags generally useful in the creation of HTML-based
-        user interfaces.
-        </p>
-
-        <p>
-        The struts-logic taglib contains tags that are useful in managing
-        conditional generation of output text,
-        looping over object collections for repetitive generation of output
-        text,  and application flow management.
-        </p>
-
-        <p>
-        The struts-tiles taglib contains tags used for combining various view
-        components, called "tiles", into a final composite view.
-        </p>
-
-        <p>
-        The struts-nested taglib is an extension of other struts taglibs that
-        allows the use of nested beans.
-        </p>
-
-        <p>
-        Below is how you would define all taglibs for use within your
-        application.
-        In practice, you would only specify the taglibs that your application
-        uses:
-        </p>
-
-<pre><code><![CDATA[
-<taglib>
-  <taglib-uri>
-    /tags/struts-bean
-  </taglib-uri>
-  <taglib-location>
-    /WEB-INF/struts-bean.tld
-  </taglib-location>
-</taglib>
-<taglib>
-  <taglib-uri>
-    /tags/struts-html
-  </taglib-uri>
-  <taglib-location>
-    /WEB-INF/struts-html.tld
-  </taglib-location>
-</taglib>
-<taglib>
-  <taglib-uri>
-    /tags/struts-logic
-  </taglib-uri>
-  <taglib-location>
-    /WEB-INF/struts-logic.tld
-  </taglib-location>
-</taglib>
-<taglib>
-  <taglib-uri>
-    /tags/struts-tiles
-  </taglib-uri>
-  <taglib-location>
-    /WEB-INF/struts-tiles.tld
-  </taglib-location>
-</taglib>
-]]></code></pre>
-
-    <p>
-    This tells the JSP system where to find the tag library descriptor
-    for this library (in your application's WEB-INF directory, instead of
-    out on the Internet somewhere).
-    </p>
-
-</section>
-
-<section
-    name="5.4.3.1 Configure the Struts Tag Libraries (Servlet 2.3)"
-    href="dd_config_taglib_23">
-
-    <p>
-    <strong>Servlet 2.3 Users only:</strong> The Servlet 2.3 specification simplifies
-    the deployment and configuration of tag libraries.
-    The instructions above will work on older containers as well as 2.3
-    containers (Struts only requires a servlet 2.2 container);
-    however, if you're using a 2.3 container such as Tomcat 4.x,
-    you can take advantage of a simplified deployment.
-    </p>
-
-    <p>
-    All that's required to install the struts tag libraries is to copy
-    struts.jar into your /WEB-INF/lib directory and reference the tags in
-    your code like this:
-    </p>
-
-    <pre><code>
-    &lt;%@ taglib
-        uri="http://jakarta.apache.org/struts/tags-html"
-        prefix="html" %&gt;
-    </code></pre>
-
-    <p>
-    Note that you <strong>must use the full uri</strong> defined in the various struts
-    tlds so that the container knows where to find the tag's class files.
-    You don't have to alter your web.xml file or copy tlds into any
-    application directories.
-    </p>
-
-</section>
-
-<section
-    name="5.5 Add Struts Components To Your Application"
-    href="config_add">
-
-    <p>
-    To use Struts, you must copy the .tld files that you require into
-    your <code>WEB-INF</code> directory, and copy <code>struts.jar</code>
-    (and all of the <code>commons-*.jar</code> files) into your
-    <code>WEB-INF/lib</code> directory.
-    </p>
-
-    <p>
-    <strong>Servlet 2.3 Users:</strong> See
-    <a href="#dd_config_taglib_23">section 5.4.3.1</a>
-    for how to avoid copying the tlds into your application.
-    </p>
-
-    <div class="notice">
-      <h4 class="center">
-        Sidebar:  Sharing JAR Files Across Web Applications
-      </h4>
-
-      <p>
-        Many servlet containers and application servers provide facilities
-        for sharing JAR files across multiple web applications that depend
-        on them.  For example, Tomcat 4.1 allows you to put JAR files into
-        the <code>$CATALINA_HOME/shared/lib</code> or
-        <code>$CATALINA_HOME/common/lib</code> directories, and the classes
-        in those JAR files will be available in all applications, without
-        the need to place them in every web application's
-        <code>/WEB-INF/lib</code> directory.  Usually, the sharing is
-        accomplished by creating a separate class loader that is the parent
-        of the class loader (created by your container) for each individual
-        web application.
-      </p>
-
-      <p>
-        If you have multiple Struts-based web applications, it is tempting
-        to consider taking advantage of this container feature, and placing
-        <code>struts.jar</code> and the various <code>commons-*.jar</code>
-        files in the shared directory, rather than in each web application.
-        However, there are several potential, and actual, problems with
-        this approach:
-      </p>
-
-      <ul>
-        <li>
-          Classes loaded from the shared class loader cannot see classes
-          in the web application's class loader, unless they are specifically
-          programmed to use the Thread context class loader.
-          
-            For example, Struts dynamically loads your action and form bean
-            classes, and normally would not be able to find those classes.
-            Struts has been programmed to deal with this in <em>most</em>
-            scenarios, but it has not been thoroughly audited to ensure that
-            it works in <em>all</em> scenarios.  The Commons libraries that
-            Struts uses have <strong>NOT</strong> been audited to catch all
-            possible scenarios where this might become a problem.
-          
-        </li>
-        <li>
-          When a class is loaded from a shared class loader, static variables
-          used within that class become global as well.  This can cause
-          inter-webapp conflicts when the underlying code assumes that the
-          statics are global only within a particular web applicaiton (which
-          would be true if the class was loaded from the webapp class loader).
-          
-            There are many cases where Struts, and the Commons libraries it
-            relies on, use static variables to maintain information that is
-            presumed to be visible only within a single web applicaiton.
-            Sharing these JAR files can cause unwanted interactions, and
-            probably cause incorrect behavior.
-          
-        </li>
-        <li>
-          When JAR files are shared like this, it is not possible to update
-          the JAR file versions employed by a single web application without
-          updating all of them.  In addition, because updating a Struts version
-          normally requires recompilation of the applications that use it,
-          you will have to recompile all of your applications as well, instead
-          of being able to manage them independently.
-        </li>
-      </ul>
-
-      <p>
-        In spite of these difficulties, it is possible that sharing the
-        Struts and Commons JAR files <em>might</em> appear to work for you.
-        However, this is <strong>NOT</strong> a supported configuration.
-      </p>
-
-      <p>
-        If you file a bug report for <code>ClassNotFoundException</code> or
-        <code>NoClassDefFoundError</code> exceptions, or similar situations
-        where it appears that the wrong version of a class is being loaded,
-        the bug report will <strong>NOT</strong> be processed unless the
-        problem exists with the JAR files in their recommended location,
-        in the <code>/WEB-INF/lib</code> subdirectory of your webapp.
-      </p>
-    </div>
-
-</section>
-
-<section
-    name="5.6 Logging in Struts Based Applications"
-    href="config_logging">
-
-  <p>
-  In Struts 1.0, the logging functionality was fairly limited.  You could
-  set a debugging detail level with a servlet initialization parameter, and
-  all log messages were written to wherever <code>ServletContext.log()</code>
-  output is sent by your servlet container.  WIth Struts 1.1, however, all
-  logging messages written by Struts itself, as well as the commons librarires
-  that it utilizes, flow through an abstract wrapper called
-  <a href="http://jakarta.apache.org/commons/logging">Commons Logging</a>,
-  which can be used as a wrapper around any logging implementation.  The most
-  common implementations used are simple logging to <code>System.err</code>,
-  the <a href="http://jakarta.apache.org/log4j/">Apache Log4J</a> package,
-  or the built-in logging capabilities of JDK 1.4 or later in the
-  <a href="http://java.sun.com/j2se/1.4/docs/api/java/util/logging/package-summary.html">
-  java.util.logging</a> package.
-  </p>
-
-  <p>
-  This section does not attempt to fully explain how Commons Logging is
-  configured and used.  Instead, it focuses on pertinent details of using
-  Commons Logging in a Struts based environment.  For complete documentation
-  on using Commons Logging, consult the documentation for the logging system
-  you are using, plus the Commons Logging
-  <a href="http://jakarta.apache.org/commons/logging/api/org/apache/commons/logging/package-summary.html#package_description">
-  Javadocs</a>.
-  </p>
-
-  <p>
-  Commons Logging provides fine-grained control over the logging messages
-  created by a <code>Log</code> instance.  By convention, the <code>Log</code>
-  instances for Struts (and the Commons packages in general) are named the
-  fully qualified class name of the class whose messages are being logged.
-  Therefore, log messages created by the RequestProcessor class are, naturally
-  enough, directed to a logger named
-  <code>org.apache.struts.action.RequestProcessor</code>.
-  </p>
-
-  <p>
-  The advantage of this approach is that you can configure the level of detail
-  in the output you want from each class, individually.  However, it would be
-  a burden to be required to maintain such settings for every possible class,
-  so the logging environment supports the notion of logging
-  <em>hierarchies</em> as well.  If a detail level configuration for a
-  particular class has not been set, the logging system looks up the hierarchy
-  until it finds a configuration setting to use, or else uses the default
-  detail level if no configuration for any level of the hierarchy has been
-  explicitly set.  In the case of our messages from <code>RequestProcessor</code>,
-  the logging system will look for explicit settings of the following loggers,
-  in this order, until it finds one.
-  </p>
-
-  <ul>
-  <li><code>org.apache.struts.action.RequestProcessor</code></li>
-  <li><code>org.apache.struts.action</code></li>
-  <li><code>org.apache.struts</code></li>
-  <li><code>org.apache</code></li>
-  <li><code>org</code></li>
-  <li>The default logging detail level for your log implementation.</li>
-  </ul>
-
-  <p>
-  In a similar manner, the detail level for messages from
-  <code>PropertyUtils</code> (from the Commons BeanUtils library) is set by
-  a search for configuration settings for:
-  </p>
-
-  <ul>
-  <li><code>org.apache.commons.beanutils.PropertyUtils</code></li>
-  <li><code>org.apache.commons.beanutils</code></li>
-  <li><code>org.apache.commons</code></li>
-  <li><code>org.apache</code></li>
-  <li><code>org</code></li>
-  <li>The default logging detail level for your log implementation.</li>
-  </ul>
-
-  <p>
-  You can seamlessly integrate logging from your own components into the same
-  logging implementation that Struts and the Commons libraries use, by
-  following the instructions in
-  <a href="building_controller.html#logging">Section 4.10</a>.  If you do
-  this, you are strongly encouraged to follow the same naming convention for
-  loggers (based on the class name of the messages being logged) for
-  maximum configuration flexibility.
-  </p>
-
-</section>
-
-
-<section>
-
-    <p>
-    For more about putting it all together, see the <a href="../faqs/apps.html">
-    Building Applications HowTo</a>.
-    </p>
-
-    <p class="right">
-    Next: <a href="./release-notes.html">Release Notes</a>
-    </p>
-
-</section>
-
-  
-  </body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/dev_bean.xml b/build-legacy/core/xdocs/userGuide/dev_bean.xml
deleted file mode 100644
index c32bce9..0000000
--- a/build-legacy/core/xdocs/userGuide/dev_bean.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<document url="dev_bean.html">
-
-<!--
-// ======================================================================== 78
--->
-
-<properties>
-  <title>The Struts User's Guide - Bean Taglib Guide</title>
-</properties>
-
-<body> 
-<section name="Bean Taglib Guide"/> 
-
-<section href="bean" name="The Bean Taglib">
-
-    <p>
-    <strong>Note:</strong> - Some of the features in this taglib are also 
-    available in the 
-    <a href="http://java.sun.com/products/jsp/jstl/">JavaServer Pages 
-    Standard Tag Library (JSTL)</a>.
-    The Struts team encourages the use of the standard tags over the Struts 
-    specific tags when possible.
-    </p>
-
-    <p>
-    The "struts-bean" tag library contains JSP custom tags useful in defining 
-    new beans (in any desired scope) from a variety of possible sources, 
-    as well as a tag to render a particular bean (or bean property) to the 
-    output response. 
-    </p>
-
-    <p>
-    This tag library contains tags useful in accessing beans and their 
-    properties, as well as defining new beans (based on these accesses) that 
-    are accessible to the remainder of the page via scripting variables and 
-    page scope attributes. 
-    Convenient mechanisms to create new beans based on the value of request 
-    cookies, headers, and parameters are also provided.
-    </p>
-
-</section>
-
-<section href="resources" name="Bean Taglib Resources">
-
-    <ul>
-        <li>
-        <a href="../api/org/apache/struts/taglib/bean/package-summary.html#package_description">
-        Bean Taglib Package Description</a>
-        </li>
-        <li><a href="struts-bean.html">Bean Taglib API Reference</a>
-        </li>
-    </ul>
-
-</section>
-
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/dev_html.xml b/build-legacy/core/xdocs/userGuide/dev_html.xml
deleted file mode 100644
index abe6174..0000000
--- a/build-legacy/core/xdocs/userGuide/dev_html.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<document url="dev_html.html">
-<properties>
- <title>The Struts User's Guide - HTML Taglib Guide</title>
-</properties>
-<body>
-<section name="HTML Taglib Guide"/>
-
-<section href="html" name="The HTML Taglib">
-
-<p>
-The tags in the Struts HTML library form a bridge between a JSP view and the other components of a Web application.
-Since a dynamic Web application often depends on gathering data from a user, input forms play an important role in
-the Struts framework. Consequently, the majority of the HTML tags involve HTML forms.
-</p>
-
-<p>
-The HTML taglib contains tags used to create Struts input forms, as well as other tags generally useful
-in the creation of HTML-based user interfaces.  The output is HTML 4.01 compliant or XHTML 1.0 when in XHTML mode.
-</p>
-</section>
-
-<section href="resources" name="HTML Tag Resources">
-
-<ul>
-<li><a href="../api/org/apache/struts/taglib/html/package-summary.html#package_description">HTML Taglib Package Description</a></li>
-<li><a href="struts-html.html">HTML Taglib API Reference</a></li>
-</ul>
-</section>
-
-</body></document>
diff --git a/build-legacy/core/xdocs/userGuide/dev_logic.xml b/build-legacy/core/xdocs/userGuide/dev_logic.xml
deleted file mode 100644
index 41a72b9..0000000
--- a/build-legacy/core/xdocs/userGuide/dev_logic.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<document url="dev_logic.html">
-<properties>
- <title>The Struts User's Guide - Logic Taglib Guide</title>
-</properties>
-<body> 
-<section name="Logic Taglib Guide"/> 
-
-<section href="html" name="The Logic Taglib">
-
-<p>
-    <strong>Note:</strong> - Many of the features in this taglib are also available in the 
-    <a href="http://java.sun.com/products/jsp/jstl/">JavaServer Pages Standard Tag Library (JSTL)</a>.
-    The Struts team encourages the use of the standard tags over the Struts specific tags when possible.
-</p>
-
-<p>
-The "struts-logic" tag library contains tags that are useful in managing conditional generation of output text, looping 
-over object collections for repetitive generation of output text, and application flow management
-</p>
-
-</section>
-
-<section href="resources" name="Logic Tag Resources">
-
-<ul>
-<li><a href="../api/org/apache/struts/taglib/logic/package-summary.html#package_description">Logic Taglib Package Description</a></li>
-<li><a href="struts-logic.html">Logic Taglib API Reference</a></li>
-</ul>
-</section>
-
-</body></document>
diff --git a/build-legacy/core/xdocs/userGuide/dev_nested.xml b/build-legacy/core/xdocs/userGuide/dev_nested.xml
deleted file mode 100644
index c57f42e..0000000
--- a/build-legacy/core/xdocs/userGuide/dev_nested.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<document url="dev_nested.html">
-<properties>
-<title>The Struts User's Guide - Nested Taglib Guide</title>
-</properties>
-<body> 
-<section name="Nested Taglib Guide"/> 
-
-<section href="nested" name="The Nested Taglib">
-
-<p>
-Nested tags &amp; supporting classes extend the base struts tags to allow them to relate to each other in a nested nature. 
-The fundamental logic of the original tags don't change, except in that all references to beans and bean properties 
-will be managed in a nested context. 
-</p>
-
-</section>
-
-<section href="resources" name="Nested Taglib Resources">
-
-<ul>
-<li><a href="../api/org/apache/struts/taglib/nested/package-summary.html#package_description">Nested Taglib Package Description</a></li>
-<li><a href="struts-nested.html">Nested Taglib API Reference</a></li>
-</ul>
-</section>
-
-</body></document>
diff --git a/build-legacy/core/xdocs/userGuide/dev_tiles.xml b/build-legacy/core/xdocs/userGuide/dev_tiles.xml
deleted file mode 100644
index 1046cab..0000000
--- a/build-legacy/core/xdocs/userGuide/dev_tiles.xml
+++ /dev/null
@@ -1,272 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<document url="dev_tiles.html">
-<properties>
-<title>
-The Struts User's Guide - Tiles Guide
-</title>
-</properties>
-<body>
-<section name="Tiles Guide"/>
-
-<section name="The Tiles Document Assembly Framework">
-
-<p>Tiles builds on the "include" feature provided by the JavaServer Pages
-specification to provide a full-featured, robust framework for assembling
-presentation pages from component parts. Each part ("Tile") can be
-reused as often as needed throughout your application. This reduces the
-amount of markup that needs to be maintained and makes it easier to
-change the look and feel of a website.
-</p>
-
-</section>
-
-<section href="features" name="Overview of Tiles Features">
-
-<ul>
-
-<li>
-  Screen definitions
-
-<ul>
-<li>
-  Create a screen by assembling <strong><em>Tiles</em></strong>, e.g. header, footer, menu, body
-</li>
-<li>
-  Definitions can take place:
-
-<ul>
-<li>
-  in a centralized XML file
-</li>
-
-<li>
-  directly in JSP pages
-</li>
-
-<li>
-  in Struts <code>Action</code>s
-</li>
-</ul>
-</li>
-
-<li>
-  Definitions provide an inheritance
-  mechanism: a definition can extend another one
-  and override some (or all) of its parameters
-</li>
-</ul>
-</li>
-
-<li>
-Layouts
-
-<ul>
-<li>
-  Define common page layouts and reuse them across your web site
-</li>
-
-<li>
-  Define menu layouts and pass lists of items and links
-</li>
-
-<li>
-  Define a portal layout, use it by passing list of <strong><em>Tiles</em></strong> (pages) to show
-</li>
-
-<li>
-  Reuse existing layouts, or define your own ones
-</li>
-</ul>
-</li>
-
-<li>
-  Dynamic page building
-<ul>
-<li>
-  Tiles are gathered dynamically during page reload. It is possible to change any attributes: layout, list of Tiles in portal, list of menu items, ...
-</li>
-</ul>
-</li>
-
-<li>
-  Reuse of <strong><em>Tiles</em></strong>/Components
-<ul>
-
-<li>
-  If well defined, a <strong><em>Tile</em></strong> can be reused in different locations
-</li>
-
-<li>
-  Dynamic attributes are used to parameterize <em><strong>Tiles</strong>
-</em>
-</li>
-
-<li>
-  It is possible to define libraries of reusable <em><strong>Tiles</strong>
-</em>.
-</li>
-
-<li>
-  Build a page by assembling predefined components, give them appropriate parameters
-</li>
-</ul>
-</li>
-
-<li>
-  Internationalization (I18N)
-
-<ul>
-<li>
-  It is possible to load different Tiles according to the user's Locale
-</li>
-
-<li>
-A mechanism similar to Java properties files is used for definition files: you can have one definition file per Locale, the appropriate definition is loaded according to the current Locale
-</li>
-</ul>
-</li>
-
-<li>
-  Multi-channels
-
-<ul>
-<li>
-  It is possible to load different Tiles according to a key stored e.g. in session context
-</li>
-
-<li>
-  The key could hold e.g. user privileges, browser type, ...
-</li>
-
-<li>
-  A mechanism similar to Java properties files is used for definition files: you can have one definition file per key, the appropriate definition is loaded according to the key
-</li>
-</ul>
-</li>
-</ul>
-
-</section>
-
-<section href="setup" name="Enabling your application for Tiles">
-
-<p>
-The Tiles framework is bundled with Struts but not enabled by default. To enable Tiles you need to:
-</p>
-
-<ul>
-<li>
-  Setup the struts-tiles taglib in your <code>WEB-INF/web.xml</code> file to include the following tag library declaration:
-</li>
-</ul>
-
-<pre>&lt;taglib&gt;
-&lt;taglib-uri&gt;/WEB-INF/struts-tiles.tld&lt;/taglib-uri&gt;
-&lt;taglib-location&gt;/WEB-INF/struts-tiles.tld&lt;/taglib-location&gt;
-&lt;/taglib&gt;</pre>
-
-<ul>
-<li>
-  At the top of each JSP page that will use the Tiles custom tags, add the following line declaring the Tiles custom tag library for use on the page:
-</li>
-</ul>
-
-<pre>&lt;%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %&gt;</pre>
-<strong>Servlet 2.3</strong>: You can omit the declaration in <code>WEB-INF/web.xml</code> and replace above line with the full URI:
-<pre>&lt;%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %&gt;</pre>
-<ul>
-<li>
-  If you plan to use Tiles definitions defined in a centralized file, you need to create this file and instruct Struts to load the Tiles plugin which will create the factory corresponding to the file. You can have more than one definitions file.
-
-<ul>
-<li>
-Create a file containing your definitions (e.g. <code>WEB-INF/tiles-defs.xml</code>). You can use the <code>tiles-defs.xml</code> file from the Tiles application for a detailed example of the required syntax.</li>
-
-<li>
-  Setup the Tiles plugin in each <code>struts-config.xml</code> file corresponding to a module:
-</li>
-</ul>
-
-<pre>
-&lt;plug-in className="org.apache.struts.tiles.TilesPlugin" &gt;
-  &lt;set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml,
-/WEB-INF/tiles-tests-defs.xml" /&gt;
-  &lt;set-property property="definitions-parser-validate" value="true" /&gt;
-  &lt;set-property property="moduleAware" value="true" /&gt;
-&lt;/plug-in&gt;</pre>
-
-<ul>
-<li>
-  <strong>Note:</strong> This plugin creates one factory for each Struts modules. The plugin first reads the factory parameters from <code>web.xml</code> and then overloads them with the ones defined in the first <code>struts-config.xml</code> file.
-</li>
-</ul>
-</li>
-</ul>
-
-<ul>
-<li>
-<strong>Note:</strong> The Tiles framework now uses the commons-logging package to output different information or debug statements. Please refer to this package documentation to enable it. The simplest way to enable logging is to create two files in <code>WEB-INF/classes</code>:
-<pre><strong>commons-logging.properties</strong>
-org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog
-<strong>simplelog.properties</strong>
-# Logging detail level,
-# Must be one of ("trace", "debug", "info", "warn", "error", or "fatal").
-org.apache.commons.logging.simplelog.defaultlog=trace</pre>
-</li>
-</ul>
-
-</section>
-
-<section href="tiles" name="Tiles API Guide">
-
-<ul>
-<li>
-  A concise <a href="../api/org/apache/struts/tiles/package-summary.html#package_description">Tiles API Guide</a> is available to help you get started with the Tiles framework.
-</li>
-
-<li><a href="struts-tiles.html">Tiles Taglib Syntax Reference</a></li>
-</ul>
-
-</section>
-
-<section href="resources" name="Tiles Resources">
-
-<p>
-<a href="http://www.oracle.com/technology/oramag/oracle/04-may/o34dev_struts.html">
-<strong>Reuse Tiles and Simplify UI</strong></a> by James Holmes. Howto article in Oracle Magazine.
-</p>
-
-<p>
-<a href="http://www.manning.com/getpage.html?project=husted&amp;filename=chapters.html">
-<strong>Developing applications with Tiles</strong></a> by Cedric Dumoulin and Ted Husted.
-Sample chapter from
-<a href="http://www.amazon.com/exec/obidos/ISBN=1930110502/hitchhikeguidetoA/">Struts in Action</a>; available as a free download (PDF).
-</p>
-
-<p>
-<a href="http://www.oreilly.com/catalog/jakarta/chapter/">
-<strong>Using Tiles</strong></a> Sample beta chapter from
-<a href="http://www.amazon.com/exec/obidos/ISBN=0596003285/hitchhikeguidetoA/">Programming Jakarta Struts</a>; available as a free download (PDF).
-</p>
-
-<p>
-<a href="http://www-106.ibm.com/developerworks/java/library/j-strutstiles.html?loc=j">
-<strong>Struts and Tiles aid component-based development</strong></a> by Wellie Chao.
-</p>
-
-<p>
-<a href="http://www.javaworld.com/javaworld/jw-01-2002/jw-0104-tilestrut.html">
-<strong>UI design with Tiles and Struts</strong></a> by Prakash Malani.
-</p>
-
-<p>
-<a href="http://www.theserverside.com/resources/article.jsp?l=Tiles101">
-<strong>Tiles 101/201</strong></a> by Patrick Peak.
-</p>
-
-<p>
-<a href="http://www.lifl.fr/~dumoulin/tiles/tilesAdvancedFeatures.pdf">
-<strong>Tiles Advanced Features</strong></a> by Cedric Dumoulin.
-</p>
-
-</section>
-</body></document>
diff --git a/build-legacy/core/xdocs/userGuide/dev_util.xml b/build-legacy/core/xdocs/userGuide/dev_util.xml
deleted file mode 100644
index b67d55a..0000000
--- a/build-legacy/core/xdocs/userGuide/dev_util.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<document url="dev_util.html">
-<properties>
-  <title>The Struts User's Guide - Utilities Guide</title>
-</properties>
-<body> 
-<section name="Utilities Guide"/> 
-
-<section href="utils" name="The Utilities Package">
-
-<p>
-The Utilities package provides a variety of families of classes, to solve problems that are commonly 
-encountered in building web applications.  
-</p>
-
-</section>
-
-<section href="resources" name="Utilities Resources">
-
-<ul>
-<li><a href="../api/org/apache/struts/util/package-summary.html#package_description">Utilities Package Description</a></li>
-</ul>
-</section>
-
-</body></document>
diff --git a/build-legacy/core/xdocs/userGuide/dev_validator.xml b/build-legacy/core/xdocs/userGuide/dev_validator.xml
deleted file mode 100644
index 1405db3..0000000
--- a/build-legacy/core/xdocs/userGuide/dev_validator.xml
+++ /dev/null
@@ -1,864 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<document url="dev_validator.html">
-
-<!--
-// ======================================================================== 78
--->
-
-<properties>
-<title>The Struts User's Guide - Validator Guide</title>
-</properties>
-
-<body>
-
-<section name="Struts Validator Guide"/>
-
-<section href="validator" name="Struts Validator">
-
-    <p>
-    The Struts Validator, in some form, has been available since the
-    days of Struts 0.5.
-    It was orignally packaged as a developer contribution.
-    Later, the core code was moved to the Jakarta Commons and
-    a Struts specific extension became part of Struts 1.1.
-    </p>
-
-    <p>
-    For the convenience of the many developers who have been using
-    the Struts Validator all along, this document first overviews
-    the core functionality and then covers the changes and
-    new functionality added in the Struts 1.1.
-    </p>
-
-    <p>
-    Once you have configured the Validator Plug-In, so that it can load your
-    Validator Resources you just have to extend
-    <code>org.apache.struts.validator.action.ValidatorForm</code> instead of
-    <code>org.apache.struts.action.ActionForm</code>.
-    Then when the <code>validate</code> method is called, the action's name
-    attribute from the struts-config.xml is used to load the validations for
-    the current form.
-    So the form element's <code>name</code> attribute in the
-    validator-rules.xml should match  action element's <code>name</code>
-    attribute.
-    </p>
-
-    <p>
-    Another alternative is to use the action mapping you are currently on by
-    extending the ValidatorActionForm instead of the ValidatorForm.
-    The ValidatorActionForm uses the action element's <code>path</code>
-    attribute from the struts-config.xml which should match the form element's
-    <code>name</code> attribute in the validator-rules.xml.
-    </p>
-
-    <p>
-    Then a separate action can be defined for each page in a multi-page form
-    and the validation rules can be associated with the action and not a page
-    number as in the example of a multi-page form in the validator example.
-    </p>
-
-</section>
-
-<section href="i18n" name="Internationalization">
-
-    <p>
-    Validation rules for forms can be grouped under a <code>FormSet</code>
-    element in the validator-rules.xml file.
-    The <code>FormSet</code> has language, country, and variant attributes that
-    correspond with the <code>java.util.Locale</code> class.
-    If they are not used, the <code>FormSet</code>  will be set to the default
-    locale.
-    A <code>FormSet</code> can also have constants associated with it.
-    On the same level as a <code>FormSet</code> there can be a global element
-    which can also have constants and have validator actions that perform
-    validations.
-    </p>
-    <p>
-    <strong>Note</strong>: You must declare a default <code>FormSet</code> without 
-    internationalization before your internationalized <code>FormSet</code>s.  This
-    allows the Validator to fall back to the default version if no locale is found.
-    </p>
-
-    <p>
-    The default error message for a pluggable validator can be overriden with
-    the <code>msg</code> element.
-    So instead of using the <code>msg</code> attribute for the mask validator
-    to generate the error message the <code>msg</code> attribute from the
-    field will be used if the name of the field's name attribute matches the
-    validator's name attribute.
-    </p>
-
-    <p>
-    The arguments for error messages can be set with the arg0-arg3 elements.
-    If the arg0-arg3 elements' name attribute isn't set, it will become the
-    default arg value for the different error messages constructed.
-    If the name attribute is set, you can specify the argument for a specific
-    pluggable validator and then this will be used for constructing the error
-    message.
-    </p>
-
-<pre><code><![CDATA[
-<field
-    property="lastName"
-    depends="required,mask">
-    <msg
-        name="mask"
-        key="registrationForm.lastname.maskmsg"/>
-    <arg0 key="registrationForm.lastname.displayname"/>
-    <var>
-        <var-name>mask</var-name>
-        <var-value>^[a-zA-Z]*$</var-value>
-    </var>
-</field>
-]]></code></pre>
-
-    <p>
-    By default the arg0-arg3 elements will try to look up the <code>key</code>
-    attribute in the message resources.
-    If the resource attribute is set to false, it will pass in the value directly
-    without retrieving the value from the message resources.
-    </p>
-    <p>
-    Note that as of the Struts 1.1 release, you must explicitly define your message
-    resource in any module that is going to use the Validator, due to a problem
-    accessing the top-level resource.  This only effects applications which are
-    using modules.
-    </p>
-
-<pre><code><![CDATA[
-<field
-    property="integer"
-    depends="required,integer,intRange">
-    <arg0 key="typeForm.integer.displayname"/>
-    <arg1
-        name="range"
-        key="${var:min}"
-        resource="false"/>
-    <arg2
-        name="range"
-        key="${var:max}"
-        resource="false"/>
-    <var>
-        <var-name>min</var-name>
-        <var-value>10</var-value>
-    </var>
-    <var>
-        <var-name>max</var-name>
-        <var-value>20</var-value>
-    </var>
-    </field>
-]]></code></pre>
-
-</section>
-
-<section href="members" name="Constants/Variables">
-
-    <p>
-    Global constants can be inside the global tags and FormSet/Locale
-    constants can be created in the formset tags.
-    Constants are currently only replaced in the Field's property attribute,
-    the Field's var element value attribute, the Field's msg element key
-    attribute, and Field's arg0-arg3 element's key attribute.
-    A Field's variables can also be substituted in the arg0-arg3
-    elements (ex: ${var:min}).
-    The order of replacement is FormSet/Locale constants are replaced first,
-    Global constants second, and for the arg elements variables are replaced
-    last.
-    </p>
-
-<pre><code><![CDATA[
-<global>
-    <constant>
-        <constant-name>zip</constant-name>
-        <constant-value>^\d{5}(-\d{4})?$</constant-value>
-    </constant>
-</global>
-
-<field
-   property="zip"
-   depends="required,mask">
-<arg0 key="registrationForm.zippostal.displayname"/>
-<var>
- <var-name>mask</var-name>
- <var-value>${zip}</var-value>
-</var>
-</field>
-]]></code></pre>
-
-    <p>
-    The var element under a field can be used to store variables for use by a
-    pluggable validator.
-    These variables are available through the Field's
-    <code>getVar(String key)</code> method.
-    </p>
-
-<pre><code><![CDATA[
-<field
-    property="integer"
-    depends="required,integer,intRange">
-    <arg0 key="typeForm.integer.displayname"/>
-    <arg1
-        name="range"
-        key="${var:min}"
-        resource="false"/>
-    <arg2
-        name="range"
-        key="${var:max}"
-        resource="false"/>
-    <var>
-        <var-name>min</var-name>
-        <var-value>10</var-value>
-    </var>
-    <var>
-        <var-name>max</var-name>
-        <var-value>20</var-value>
-    </var>
-    </field>
-]]></code></pre>
-
-</section>
-
-<section href="validwhen" name="Designing Complex Validations with validwhen">
-    <p>
-    A frequent requirement in validation design is to validate one field
-    against another (for example, if you have asked the user to type in
-    a password twice for confirmation, to make sure that the values match.)
-    In addition, there are fields in a form that may only be required if
-    other fields have certain values.  The new <code>validwhen</code>
-    validation rule, which will be included into the Struts release
-    immediately after the 1.1 release, is designed to handle these cases.</p>
-    <p>
-    The <code>validwhen</code> rule takes a single <code>var</code> field,
-    called <code>test</code>.  The value of this var is a boolean expression
-    which must be true in order for the validation to success.  The
-    values which are allowed in the expression are:</p>
-    <ul>
-      <li>Single or double-quoted string literals.</li>
-      <li>Integer literals in decimal, hex or octal format</li>
-      <li>The value <code>null</code> which will match against either
-      null or an empty string</li>
-      <li>Other fields in the form referenced by field name, such as
-      <code>customerAge</code></li>
-      <li>Indexed fields in the form referenced by an explicit integer, 
-      such as <code>childLastName[2]</code></li>
-      <li>Indexed fields in the form referenced by an implicit integer, 
-      such as <code>childLastName[]</code>, which will use the same
-      index into the array as the index of the field being tested.</li>
-      <li>Properties of an indexed fields in the form referenced by an 
-      explicit or implicit integer, such as <code>child[].lastName</code>, 
-      which will use the same index into the array as the index of the 
-      field being tested.</li>
-      <li>The literal <code>*this</code>, which contains the value of
-      the field currently being tested</li>
-   </ul>
-   <p>
-      As an example of how this would work, consider a form with
-      fields <code>sendNewsletter</code> and <code>emailAddress</code>.
-      The <code>emailAddress</code> field is only required if the
-      <code>sendNewsletter</code> field is not null.  You could code
-      this using the validwhen rule as:</p>
-<pre><code><![CDATA[
-<field property="emailAddress" depends="validwhen">
-      <arg0 key="userinfo.emailAddress.label"/>
-        <var>
-          <var-name>test</var-name>
-          <var-value>((sendNewsletter == null) or (*this* != null))</var-value>
-        </var>
-      </field>
-]]></code></pre>
-<p>
-      Which reads as: this field is valid if <code>sendNewsletter</code> is 
-      <code>null</code> or the field value is not <code>null</code>.</p>
-<p>
-      Here's a slightly more complicated example using indexed fields.
-      Assume a form with a number of lines to allow the user to enter
-      part numbers and quantities they wish to order.  An array of
-      beans of class <code>orderLine</code> is used to hold the entries in
-      a property called orderLines.
-      If you wished to verify that every line with part number also had
-      a quantity entered, you could do it with:</p>
-<pre><code><![CDATA[
-    <field property="quantity" indexedListProperty="orderLines" depends="validwhen">
-      <arg0 key="orderform.quantity.label"/>
-        <var>
-          <var-name>test</var-name>
-          <var-value>((orderLines[].partNumber == null) or (*this* != null))</var-value>
-        </var>
-      </field>
-]]></code></pre>
-     <p>
-     Which reads as: This field is value if the corresponding <code>partNumber
-     </code> field is <code>null</code>, or this field is not <code>null</code>.
-     </p>
-     <p>
-     As a final example, imagine a form where the user must enter their
-     height in inches, and if they are under 60 inches in height, it is
-     an error to have checked off nbaPointGuard as a career.</p>
-<pre><code><![CDATA[
-    <field property="nbaPointGuard" depends="validwhen">
-      <arg0 key="careers.nbaPointGuard.label"/>
-        <var>
-          <var-name>test</var-name>
-          <var-value>((heightInInches >= 60) or (*this* == null))</var-value>
-        </var>
-      </field>
-]]></code></pre>
-     <p>
-     A few quick notes on the grammer.</p>
-     <ul>
-       <li>All comparisons must be enclosed in parens.</li>
-       <li>Only two items may be joined with <code>and</code> or <code>or</code></li>
-       <li>If both items to be compared are convertable to ints, a numeric
-       comparison is done, otherwise a string comparison is done.
-       </li>
-     </ul>
-</section>
-<section href="plugs" name="Pluggable Validators">
-
-    <p>
-    Validation actions are read from the validation.xml file.
-    The default actions are setup in the validation.xml file.
-    The ones currently configured are required, mask ,byte, short, int, long,
-    float, double, date (without locale support), and a numeric range.
-    </p>
-
-    <p>
-    The 'mask' action depends on required in the default setup.
-    That means that 'required' has to successfully completed before 'mask' will
-    run.
-    The 'required' and 'mask' action are partially built into the framework.
-    Any field that isn't 'required' will skip other actions if the field is null
-    or has a length of zero.
-    </p>
-
-    <p>
-    If the <a href="struts-html.html#javascript">Javascript Tag</a> is used,
-    the client side Javascript generation looks for a value in the validator's
-    javascript attribute and generates an object that the supplied method can
-    use to validate the form.
-    For a more detailed explanation of how the Javascript Validator Tag works,
-    see the <a href="struts-html.html">html taglib API reference</a>.
-    </p>
-
-
-    <p>
-    The 'mask' action lets you validate a regular expression mask to the field.
-    It uses the Regular Expression Package from the jakarta site.
-    All validation rules can be stored in the validator-rules.xml file.
-    The main class used is <code>org.apache.regexp.RE</code>.
-    </p>
-
-    <p>
-    Example Validator Configuration from validation.xml.
-    </p>
-
-<pre><code><![CDATA[
-<validator name="required"
-        classname="org.apache.struts.validator.FieldChecks"
-        method="validateRequired"
-        methodParams="java.lang.Object,
-                 org.apache.commons.validator.ValidatorAction,
-                 org.apache.commons.validator.Field,
-                 org.apache.struts.action.ActionErrors,
-                 javax.servlet.http.HttpServletRequest"
-        msg="errors.required">
-
-<validator name="mask"
-        classname="org.apache.struts.validator.FieldChecks"
-        method="validateMask"
-        methodParams="java.lang.Object,
-                 org.apache.commons.validator.ValidatorAction,
-                 org.apache.commons.validator.Field,
-                 org.apache.struts.action.ActionErrors,
-                 javax.servlet.http.HttpServletRequest"
-        msg="errors.invalid">
-]]></code></pre>
-
-    <p>
-    <strong>Creating Pluggable Validators</strong>
-    </p>
-
-    <p>
-    The <code>methodParams</code> attribute takes a comma separated list
-    of class names. The <code>method</code> attribute needs to have a signature
-    complying with the above list. The list can be comprised of any combination
-    of the following:
-    </p>
-
-    <ul>
-
-        <li>
-        <code>java.lang.Object</code>
-        - Bean validation is being performed on.
-        </li>
-
-        <li>
-        <code>org.apache.commons.validator.ValidatorAction</code>
-        - The current ValidatorAction being performed.
-        </li>
-
-        <li>
-        <code>org.apache.commons.validator.Field</code>
-        - Field object being validated.
-        </li>
-
-        <li>
-        <code>org.apache.struts.action.ActionErrors</code>
-        - The errors objects to add an ActionError to if the validation fails.
-        </li>
-
-        <li>
-        <code>javax.servlet.http.HttpServletRequest</code>
-        - Current request object.
-        </li>
-
-        <li>
-        <code>javax.servlet.ServletContext</code>
-        - The application's ServletContext.
-        </li>
-
-        <li>
-        <code>org.apache.commons.validator.Validator</code>
-        - The current org.apache.commons.validator.Validator instance.
-        </li>
-
-        <li>
-        <code>java.util.Locale</code>
-        - The Locale of the current user.
-        </li>
-
-    </ul>
-
-    <p>
-    <strong>Multi Page Forms</strong>
-    </p>
-
-    <p>
-    The field element has an optional page attribute.
-    It can be set to an integer.
-    All validation for any field on a page less than or equal to the
-    current page is performed server side.
-    All validation for any field on a page equal to the current page is
-    generated for the client side Javascript.
-    A mutli-part form expects the page attribute to be set.
-    </p>
-
-<pre><code><![CDATA[
-<html:hidden property="page" value="1"/>
-]]></code></pre>
-
-    <p>
-    <strong>Comparing Two Fields</strong>
-    </p>
-
-    <p>
-    This is an example of how you could compare two fields to see if they
-    have the same value.
-    A good example of this is when you are validating a user changing their
-    password and there is the main password field and a confirmation field.
-    </p>
-
-<pre><code><![CDATA[
-<validator name="twofields"
-       classname="com.mysite.StrutsValidator"
-       method="validateTwoFields"
-       msg="errors.twofields"/>
-
-<field property="password"
-       depends="required,twofields">
-          <arg0 key="typeForm.password.displayname"/>
-          <var>
-             <var-name>secondProperty</var-name>
-             <var-value>password2</var-value>
-          </var>
-</field>
-]]></code></pre>
-
-<pre><code><![CDATA[
-public static boolean validateTwoFields(
-    Object bean,
-    ValidatorAction va, 
-    Field field,
-    ActionErrors errors,
-    HttpServletRequest request, 
-    ServletContext application) {
-
-    String value = ValidatorUtils.getValueAsString(
-        bean, 
-        field.getProperty());
-    String sProperty2 = field.getVarValue("secondProperty");
-    String value2 = ValidatorUtils.getValueAsString(
-        bean, 
-        sProperty2);
-
-    if (!GenericValidator.isBlankOrNull(value)) {
-       try {
-          if (!value.equals(value2)) {
-             errors.add(field.getKey(),
-                Resources.getActionError(
-                    application,
-                    request,
-                    va,
-                    field));
-
-             return false;
-          }
-       } catch (Exception e) {
-             errors.add(field.getKey(),
-                Resources.getActionError(
-                    application,
-                    request,
-                    va,
-                    field));
-             return false;
-       }
-    }
-
-    return true;
-}
-]]></code></pre>
-
-</section>
-
-<section href="validator-bugs" name="Known Bugs">
-
-    <p>
-    Since the Struts Validator relies on the Commons Validator, problem
-    reports and enhancement requests may be listed against either product.
-    </p>
-
-    <ul>
-
-        <li>
-        <a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=VERIFIED&amp;bug_severity=Blocker&amp;bug_severity=Critical&amp;bug_severity=Major&amp;bug_severity=Normal&amp;bug_severity=Minor&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Struts&amp;version=1.1+Beta+1&amp;version=1.1+Beta+2&amp;version=Nightly+Build&amp;version=Unknown&amp;component=Validator+Framework&amp;short_desc=&amp;short_desc_type=allwordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;order=Bug+Number">
-        Struts Validator Bugzilla Reports
-        </a>
-        </li>
-
-        <li>
-        <a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=VERIFIED&amp;bug_severity=Blocker&amp;bug_severity=Critical&amp;bug_severity=Major&amp;bug_severity=Normal&amp;bug_severity=Minor&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Commons&amp;component=Validator&amp;short_desc=&amp;short_desc_type=allwordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;order=Bug+Number">
-        Commons Validator Bugzilla Reports</a>
-        </li>
-
-    </ul>
-
-</section>
-
-<section href="validator-changes" name="Changes and deprecations">
-
-    <p>
-    <strong>New tag attributes.</strong>
-    </p>
-
-    <p>
-    The <a href="struts-html.html#javascript">&lt;html:javascript&gt; tag</a>
-    has new attributes defined.
-    </p>
-
-    <p>
-    <strong>Validating against the DTD in the commons-validator.jar.</strong>
-    </p>
-
-    <p>
-    The validator xml files now <strong>validates against the DTD stored
-    in the commons-validator.jar </strong>!
-    Struts no longer maintains a separate dtd for validator-rules.xml and
-    validator.xml.
-    Additionally, commons-validator now maintains a unified validator.dtd.
-    Change all validator.xml DTD references to:
-    </p>
-<pre><![CDATA[
-<!DOCTYPE form-validation PUBLIC
-"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
-"http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
-]]></pre>
-
-    <p>
-    <strong>Blank fields.</strong>
-    </p>
-
-    <p>
-    The default validator-rules.xml now ignores blank fields for all the
-    basic validation types.
-    If you require a field to be present then to your applications
-    validator.xml field definition add "required" to the depends
-    attribute.
-    </p>
-
-    <p>
-    <strong>New range methods.</strong>
-    </p>
-
-    <p>
-    <code>intRange</code> &amp; <code>floatRange</code> methods in both
-    JavaScript and Java
-    </p>
-
-    <p>
-    <strong>Conditionally required fields.</strong>
-    </p>
-
-    <p>
-    The most fundamental change is the ability to conditionally require
-    validator fields based on the value of other fields. 
-    It allows you to define logic like "only validate this field if field X is
-    non-null and field Y equals 'male'".  The recommended way to do this will
-    be with the <code>validwhen</code> rule, described above, and available
-    in the first release after 1.1.  The 
-    <code>requiredif</code> validation rule, which was added in Struts 1.1, 
-    will be deprecated in favor of this rule, and will be removed in a 
-    future release.  However, if you are using <code>requiredif</code>, here
-    is a brief tutorial.
-    </p>
-
-     <p>Let's assume you have a medical information form with three fields, sex, pregnancyTest, and testResult.  
-     If sex is 'f' or 'F', pregnancyTest is required.  If pregnancyTest is not blank, testResult is required.
-     The entry in your validation.xml file would look like this:
-     </p>
-     <pre>
-&lt;form name="medicalStatusForm"&gt;
-
-&lt;field
-    property="pregnancyTest" depends="requiredif"&gt;
-  &lt;arg0 key="medicalStatusForm.pregnancyTest.label"/&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;field[0]&lt;/var-name&gt;
-    &lt;var-value&gt;sex&lt;/var-value&gt;
-  &lt;/var&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;fieldTest[0]&lt;/var-name&gt;
-    &lt;var-value&gt;EQUAL&lt;/var-value&gt;
-  &lt;/var&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;fieldValue[0]&lt;/var-name&gt;
-    &lt;var-value&gt;F&lt;/var-value&gt;
-  &lt;/var&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;field[1]&lt;/var-name&gt;
-    &lt;var-value&gt;sex&lt;/var-value&gt;
-  &lt;/var&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;fieldTest[1]&lt;/var-name&gt;
-    &lt;var-value&gt;EQUAL&lt;/var-value&gt;
-  &lt;/var&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;fieldValue[1]&lt;/var-name&gt;
-    &lt;var-value&gt;f&lt;/var-value&gt;
-  &lt;/var&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;fieldJoin&lt;/var-name&gt;
-    &lt;var-value&gt;OR&lt;/var-value&gt;
-  &lt;/var&gt;
-&lt;/field&gt;
-
-&lt;field
-    property="testResult" depends="requiredif"&gt;
-  &lt;arg0 key="medicalStatusForm.testResult.label"/&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;field[0]&lt;/var-name&gt;
-    &lt;var-value&gt;pregnancyTest&lt;/var-value&gt;
-  &lt;/var&gt;
-  &lt;var&gt;
-    &lt;var-name&gt;fieldTest[0]&lt;/var-name&gt;
-    &lt;var-value&gt;NOTNULL&lt;/var-value&gt;
-  &lt;/var&gt;
-&lt;/field&gt;
-&lt;/form&gt;
-</pre>
-   
-     
-
-    <p>
-    Here's a more complex example using indexed properties.
-    </p>
-
-    <p>
-    If you have this in your struts-config.xml
-    </p>
-
-<pre><![CDATA[
-<form-bean
-    name="dependentlistForm"
-    type="org.apache.struts.webapp.validator.forms.ValidatorForm">
-    <form-property
-        name="dependents"
-        type="org.apache.struts.webapp.validator.Dependent[]" size="10"/>
-    <form-property
-        name="insureDependents"
-        type="java.lang.Boolean"
-        initial="false"/>
-</form-bean>
-]]></pre>
-
-    <p>
-    Where dependent is a bean that has properties lastName, firstName, dob,
-    coverageType
-    </p>
-
-    <p>
-    You can define a validation:
-    </p>
-
-<pre><![CDATA[
-
-<form name="dependentlistForm">
-
-<field
-    property="firstName" indexedListProperty="dependents"
-    depends="requiredif">
-  <arg0 key="dependentlistForm.firstName.label"/>
-  <var>
-    <var-name>field[0]</var-name>
-    <var-value>lastName</var-value>
-  </var>
-  <var>
-    <var-name>fieldIndexed[0]</var-name>
-    <var-value>true</var-value>
-  </var>
-  <var>
-    <var-name>fieldTest[0]</var-name>
-    <var-value>NOTNULL</var-value>
-  </var>
-</field>
-
-<field
-    property="dob"
-    indexedListProperty="dependents"
-    depends="requiredif,date">
-  <arg0 key="dependentlistForm.dob.label"/>
-  <var>
-    <var-name>field[0]</var-name>
-    <var-value>lastName</var-value>
-  </var>
-  <var>
-    <var-name>fieldIndexed[0]</var-name>
-    <var-value>true</var-value>
-  </var>
-  <var>
-    <var-name>fieldTest[0]</var-name>
-    <var-value>NOTNULL</var-value>
-  </var>
-</field>
-
-<field
-    property="coverageType"
-    indexedListProperty="dependents"
-    depends="requiredif">
-  <arg0 key="dependentlistForm.coverageType.label"/>
-  <var>
-    <var-name>field[0]</var-name>
-    <var-value>lastName</var-value>
-  </var>
-  <var>
-    <var-name>fieldIndexed[0]</var-name>
-    <var-value>true</var-value>
-  </var>
-  <var>
-    <var-name>fieldTest[0]</var-name>
-    <var-value>NOTNULL</var-value>
-  </var>
-  <var>
-    <var-name>field[1]</var-name>
-    <var-value>insureDependents</var-value>
-  </var>
-  <var>
-    <var-name>fieldTest[1]</var-name>
-    <var-value>EQUAL</var-value>
-  </var>
-  <var>
-    <var-name>fieldValue[1]</var-name>
-    <var-value>true</var-value>
-  </var>
-  <var>
-    <var-name>fieldJoin</var-name>
-    <var-value>AND</var-value>
-  </var>
-</field>
-
-</form>
-
-]]></pre>
-
-    <p>
-    Which is read as follows:
-    The firstName field is only required if the lastName field is non-null.
-    Since fieldIndexed is true, it means that lastName must be a property of
-    the same indexed field as firstName.
-    Same thing for dob, except that we validate for date if not blank.
-    </p>
-
-    <p>
-    The coverageType is only required if the lastName for the same indexed
-    bean is not null, and also if the non-indexed field insureDependents is
-    true.
-    </p>
-
-    <p>
-    You can have an arbitrary number of fields by using the [n] syntax,
-    the only restriction is that they must all be AND or OR, you can't mix.
-    </p>
-
-    <p>
-    <strong>Deprecations.</strong>
-    </p>
-
-    <ul>
-
-        <li>
-        Deprecation of <code>range</code> methods in both JavaScript and Java.
-        </li>
-
-        <li>
-        Deprecation of StrutsValidator &amp; StrutsValidatorUtil.
-        </li>
-
-    </ul>
-
-</section>
-
-<section href="tiles" name="Validator API Guide">
-
-    <p>
-    A concise
-    <a href="../api/org/apache/struts/validator/package-summary.html#package_description">
-    Struts Validator API Guide</a> is available to help you get started.
-    </p>
-
-</section>
-
-<section href="resources" name="Validator Resources">
-
-	<p>
-    <a href="http://otn.oracle.com/oramag/oracle/04-jan/o14dev_struts.html">
-    <strong>Check Your Form with Validator</strong></a> by James Holmes.
-    Howto article in Oracle Magazine.
-    </p>
-
-    <p>
-    <a href="http://tinyurl.com/6jnv">
-    <strong>Struts Validator: Validating Two Fields Match</strong></a> by Matt Raible.
-    Howto article.
-    </p>
-
-    <p>
-    <a href="http://www.strutskickstart.com/">
-    <strong>DynaForms and the Validator</strong></a> by James Turner and Kevin Bedell.
-    Sample chapter from
-    <a href="http://www.strutskickstart.com/">Struts Kickstart</a>;
-    available as a free download (PDF).
-    </p>
-
-    <p>
-    <a href="http://www.manning.com/getpage.html?project=husted&amp;filename=chapters.html">
-    <strong>Validating user input</strong></a> by David Winterfeldt and Ted Husted.
-    Sample chapter from
-    <a href="http://www.amazon.com/exec/obidos/ISBN=1930110502/hitchhikeguidetoA/">
-    Struts in Action</a>;
-    available as a free download (PDF).
-    </p>
-
-</section>
-
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/index.xml b/build-legacy/core/xdocs/userGuide/index.xml
deleted file mode 100644
index 0b98a7e..0000000
--- a/build-legacy/core/xdocs/userGuide/index.xml
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0"?>
-<document url="index.html">
-
-  <properties>
-    <title>The Struts User's Guide - Table of Contents</title>
-  </properties>
-
-  <body>
-
-      <!-- Omit chapter heading for the list of chapters (also omits authors) -->
-
-      <section name="Table of Contents" href="toc">
-
-        <ul>
-            <li><a href="preface.html">0. Preface</a>
-            <ul>
-              <li><a href="preface.html#suspects">0.1 The Usual Suspects</a></li>
-              <li><a href="preface.html#http">0.2 HTTP, HTML, and User Agents</a></li>
-              <li><a href="preface.html#cycle">0.3 The HTTP Request/Response Cycle</a></li>
-              <li><a href="preface.html#java">0.4 The Java Language and Application Frameworks</a></li>
-              <li><a href="preface.html#javabeans">0.5 JavaBeans</a></li>
-              <li><a href="preface.html#resources">0.6 Properties Files and  ResourceBundles</a></li>
-              <li><a href="preface.html#servlets">0.7 Java Servlets</a></li>
-              <li><a href="preface.html#jsp">0.8 JavaServer Pages, JSP Tag Libraries, and JavaServer Faces</a></li>
-              <li><a href="preface.html#xml">0.9 Extensible Markup Language</a></li>
-              <li><a href="preface.html#jaas">0.10 JAAS</a></li>
-            </ul></li>
-
-
-           <li><a href="introduction.html">1. Introduction</a>
-                <ul>
-                <li><a href="introduction.html#history">1.1 Forward into the Past!</a></li>
-                <li><a href="introduction.html#mvc">1.2 The Model-View-Controller ('MVC') Design Pattern</a>
-                    <ul>
-                    <li><a href="introduction.html#modelConcepts">1.2.1 The Model: System State and Business Logic JavaBeans</a></li>
-                    <li><a href="introduction.html#presentationConcepts">1.2.2 The View: JSP Pages and Presentation Components</a></li>
-                    <li><a href="introduction.html#controllerConcepts">1.2.3 The Controller: ActionServlet and ActionMapping</a></li>
-                    </ul>
-                    </li>
-                <li><a href="introduction.html#controllerConcepts">1.3 Struts Control Flow</a></li>
-                </ul></li>
-            <li><a href="building_model.html">2. Building Model Components</a>
-                <ul>
-                <li><a href="building_model.html#overview">2.1 Overview</a></li>
-                <li><a href="building_model.html#javabeans">2.2 JavaBeans and Scope</a></li>
-                <li><a href="building_model.html#actionform">2.3 ActionForm Beans</a></li>
-                <li><a href="building_model.html#system_state">2.4 System State Beans</a></li>
-                <li><a href="building_model.html#business_logic">2.5 Business Logic Beans</a></li>
-                </ul></li>
-            <li><a href="building_view.html">3. Building View Components</a>
-                <ul>
-                <li><a href="building_view.html#overview">3.1 Overview</a></li>
-                <li><a href="building_view.html#i18n">3.2 Internationalization</a></li>
-                <li><a href="building_view.html#form_beans">3.3 Forms and FormBean Interactions</a>
-                    <ul>
-                    <li><a href="building_view.html#indexed">3.3.1 Indexed &amp; Mapped Properties</a></li>
-                    <li><a href="building_view.html#form_input">3.3.2 Input Field Types Supported</a></li>
-                    <li><a href="building_view.html#presentation_tags">3.3.3 Other Useful Presentation Tags</a></li>
-                    <li><a href="building_view.html#form_validation">3.3.4 Automatic Form Validation</a></li>
-                    <li><a href="building_view.html#validator">3.3.5 Struts Validator</a></li>
-                    </ul></li>
-                <li><a href="building_view.html#other_presentations">3.4 Other Presentation Techniques</a>
-                    <ul>
-                    <li><a href="building_view.html#custom_tags">3.4.1 Application-Specific Custom Tags</a></li>
-                    <li><a href="building_view.html#includes">3.4.2 Page Composition With Includes</a></li>
-                    <li><a href="building_view.html#includes">3.4.3 Page Composition With Tiles</a></li>
-                    <li><a href="building_view.html#image_rendering">3.4.4 Image Rendering Components</a></li>
-                    <li><a href="building_view.html#text_rendering">3.4.5 Rendering Text</a></li>
-                    <li><a href="building_view.html#struts-el">3.4.6 The Struts-EL Tag Library</a></li>
-                    </ul></li>
-                </ul></li>
-                
-            <li><a href="building_controller.html">4. Building Controller Components</a>
-                <ul>
-                <li><a href="building_controller.html#overview">4.1 Overview</a></li>
-                <li><a href="building_controller.html#action_servlet">4.2 The ActionServlet</a>
-                    <ul>
-                    <li><a href="building_controller.html#request_processor">4.2.1 Request Processor</a></li>
-                    </ul>
-                </li>
-                <li><a href="building_controller.html#action_form_classes">4.3 ActionForm Classes</a>
-                    <ul>
-                    <li><a href="building_controller.html#dyna_action_form_classes">4.3.1 DynaActionForm Classes</a></li>
-                    <li><a href="building_controller.html#map_action_form_classes">4.3.2 Map-backed ActionForm Classes</a></li>
-                    </ul>
-                </li>                    
-                <li><a href="building_controller.html#action_classes">4.4 Action Classes</a>
-                    <ul>
-                    <li><a href="building_controller.html#action_design_guide">4.4.1 Action Class Design Guidelines</a></li>
-                    </ul>
-                </li>
-                <li><a href="building_controller.html#exception_handler">4.5 Exception Handler</a></li>
-                <li><a href="building_controller.html#plugin_classes">4.6 Plugin Classes</a></li>
-                <li><a href="building_controller.html#actionmapping">4.7 The ActionMapping Implementation</a></li>
-                <li><a href="building_controller.html#config">4.8 Writing ActionMappings</a>
-                    <ul>
-                    <li><a href="building_controller.html#action_mapping_example">4.8.1 ActionMapping Example</a></li>
-                    </ul>
-                </li>
-                <li><a href="building_controller.html#module_config-use_actions">4.9 Using ActionMappings for Pages</a></li>
-                <li><a href="building_controller.html#action_mapping_wildcards">4.10 Using Wildcards in ActionMappings</a></li>               
-                <li><a href="building_controller.html#logging">4.11 Using The Commons Logging Interface</a></li>               
-                </ul></li>
-
-             <li><a href="configuration.html">5. Configuring Applications</a>
-                <ul>
-                <li><a href="configuration.html#config-overview">5.1 Overview</a></li>
-                <li><a href="configuration.html#struts-config">5.2 The Struts Configuration File</a>
-                    <ul>
-                    <li><a href="configuration.html#controller_config">5.2.1 Controller Configuration</a></li>
-                    <li><a href="configuration.html#resources_config">5.2.2 Message Resources Configuration</a></li>
-                    <li><a href="configuration.html#plugin_config">5.2.3 PlugIn Configuration</a></li>
-                    <li><a href="configuration.html#data-source_config">5.2.4 Data Source Configuration</a></li>
-                    </ul>
-                </li>    
-                <li><a href="configuration.html#dd_config_modules">5.3 Configuring your application for modules</a>
-                    <ul>
-                    <li><a href="configuration.html#module_config-files">5.3.1 Module Configuration Files</a></li>
-                    <li><a href="configuration.html#module_config-inform_controller">5.3.2 Informing the Controller</a></li>
-                    <li><a href="configuration.html#module_config-switching">5.3.3 Switching Modules</a></li>
-                    </ul>
-                </li>                    
-                <li><a href="configuration.html#dd_config">5.4 The Web Application Deployment Descriptor</a>
-                    <ul>
-                    <li><a href="configuration.html#dd_config_servlet">5.4.1 Configure the Action Servlet Instance</a></li>
-                    <li><a href="configuration.html#dd_config_mapping">5.4.2 Configure the Action Servlet Mapping</a></li>
-                    <li><a href="configuration.html#dd_config_taglib">5.4.3 Configure the Struts Tag Libraries"</a></li>
-                    </ul>
-                 </li>
-                <li><a href="configuration.html#config_add">5.5 Add Struts Components To Your Application</a></li>
-                <li><a href="configuration.html#config_logging">5.6 Logging in Struts Applications</a></li>
-               </ul>             
-             </li>
-
-             <li>6. Getting Started
-                <ul>
-                <li><a href="release-notes.html">6.1 Release Notes</a>
-                <ul>
-                <li><a href="release-notes-1.1.html">Release Notes 1.1</a></li>
-                <li><a href="release-notes-1.1-rc2.html">Release Notes 1.1-rc2</a></li>
-                <li><a href="release-notes-1.1-rc1.html">Release Notes 1.1-rc1</a></li>
-                <li><a href="release-notes-1.1-b3.html">Release Notes 1.1-b3</a></li>
-                <li><a href="release-notes-1.1-b2.html">Release Notes 1.1-b2</a></li>
-                <li><a href="release-notes-1.1-b1.html">Release Notes 1.1-b1</a></li>
-                </ul>
-                </li>
-                <li><a href="installation.html">6.2 Installation</a>
-                <ul>
-                <li><a href="installation-ip.html">iPlanet</a></li>
-                <li><a href="installation-ipas.html">Portal Application Server</a></li>
-                <li><a href="installation-jetty.html">Jetty</a></li>
-                <li><a href="installation-jr30.html">JRun 3.0</a></li>
-                <li><a href="installation-oas.html">Orion Application Server</a></li>
-                <li><a href="installation-sas.html">SilverStream Application Server 3.7.1 and later</a></li>
-                <li><a href="installation-tc.html">Tomcat with Apache</a></li>
-                <li><a href="installation-ubs72.html">Bluestone Universal Business Server 7.2</a></li>
-                <li><a href="installation-was352.html">WebSphere Application Server 3.5 FixPack 2</a></li>
-                <li><a href="installation-was352-x.html">WAS with the Example Applcation</a></li>
-                <li><a href="installation-wls5.html">Weblogic 5.1 sp8</a></li>
-                </ul>
-                </li>
-                </ul>
-              </li>
-                                
-        </ul>
-
-      </section>
-      
-    <section>
-        <p class="right">
-        Next: <a href="preface.html">Preface</a>
-        </p>
-    </section>
-
-  </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/installation-1.0.xml b/build-legacy/core/xdocs/userGuide/installation-1.0.xml
deleted file mode 100644
index 60c8543..0000000
--- a/build-legacy/core/xdocs/userGuide/installation-1.0.xml
+++ /dev/null
@@ -1,291 +0,0 @@
-<?xml version="1.0"?>
-<document url="installation-1.0.html">
-
-  <properties>
-    <title>The Struts Framework Project - Installation (1.0)</title>
-  </properties>
-
-  <body>
-
-  <section name="Prerequisite Software" href="Prerequisites">
-
-  <p>The Struts binary distribution needs three other software packages installed to 
-  operate. You may already have these installed on your system. To build Struts from 
-  source you may need to acquire and install several others. The complete list is as 
-  follows:</p>
-
-  <ul>
-  <li><strong>Java Development Kit</strong> - You <strong>must</strong> download and install
-      a Java2 (version 1.2 or later) Java Development Kit implementation for
-      your operating system platform.
-      A good starting point for locating Java Development Kit distributions is
-      <a href="http://java.sun.com/j2se">http://java.sun.com/j2se</a>.</li>
-  
-  <li><strong>Servlet Container</strong> - You <strong>must</strong> download and install a
-      servlet container that is compatible with the Servlet API Specification,
-      version 2.2 or later, and the JavaServer Pages (JSP) Specification,
-      version 1.1 or later.  One popular choice is to download Apache's
-      <a href="http://jakarta.apache.org/tomcat">Tomcat</a> (version 3.1
-      or later required, version 3.2 or later recommended).</li>
-
-  <li><strong>XML Parser</strong> - Struts <strong>requires</strong> the presence of an XML
-      parser that is compatible with the Java API for XML Parsing (JAXP)
-      specification, 1.0 or later.  You can download and install the JAXP
-      <a href="http://java.sun.com/xml">reference implementation</a>,
-      which is required for building the Struts source distribution.  In
-      Struts-based web applications, you may replace the reference
-      implementation classes with any other JAXP compliant parser, such as
-      <a href="http://xml.apache.org/xerces-j">Xerces</a>.  See detailed
-      instructions related to the parser in the instructions for
-      <a href="#Building">building</a> and <a href="#Installing">installing</a>
-      Struts, below.</li>
-
-  <li><strong>Ant Build System</strong> - If you are building Struts from the
-      source distribution, you must download and install version 1.3 or later
-      of the <a href="http://jakarta.apache.org/ant">Ant</a> build system.
-      This package is also strongly recommended for use in developing your
-      own web applications based on Struts.
-      <ul>
-      <li>If you are using the release version of Ant version 1.3, you will
-          also need to download the "optional.jar" file that contains the
-          implementation of Ant's <code>&lt;style&gt;</code> command.</li>
-      <li>Make sure that the "ant" and "ant.bat" scripts are executable, by
-          adding the $ANT_HOME/bin directory to your PATH environment
-          variable.</li>
-      </ul></li>
-
-  <li><strong>JDBC 2.0 Optional Package Classes</strong> - Struts supports
-      an optional implementation of <code>javax.sql.DataSource</code>, so it
-      requires the API classes to be compiled.  They can be downloaded from
-      <a href="http://java.sun.com/products/jdbc/download.html">http://java.sun.com/products/jdbc/download.html</a>.</li>
-
-  <li><strong>Xalan XSLT Processor</strong> - If you are building Struts from
-      the source distribution, you must download and install version 1.2
-      (problems have been reported with current versions of Xalan 2.0)
-      of the <a href="http://xml.apache.org/xalan">Xalan</a>
-      XSLT processor (which also includes the Xerces XML parser), or use the
-      version of Xalan included in the JAXP 1.1 release.  This
-      processor is used to convert the Struts documentation from its internal
-      XML-based format into the HTML that is presented in the Struts
-      documentation application.</li>
-  </ul>
-
-  </section>
-
-  <section name="Install A Struts Binary Distribution" href="Installing">
-
-    <p>First, download a binary distribution of Struts by following the
-    instructions <a href="../acquiring.html">here</a>.  Then, make sure
-    you have downloaded and installed the
-    <a href="#Prerequisites">prerequisite</a> software packages described
-    above.</p>
-
-    <p>Unpack the Struts binary distribution into a convenient directory.
-    (If you <a href="#Building">build Struts from the source distribution</a>, 
-    the result of the build will already be an unpacked binary distribution 
-    for you). The distribution consists of the following contents:</p>
-
-    <ul>
-    <li><strong>lib/struts.jar</strong> - This JAR file contains all of the
-        Java classes included in Struts.  It should be copied into the
-        <code>WEB-INF/lib</code> directory of your web application.
-        <em>WARNING</em> - If you are going to be hosting multiple Struts
-        based applications on the same servlet container, you will be tempted
-        to place the <code>struts.jar</code> file into the shared repository
-        supported by your container.  Be advised that this will like cause you
-        to encounter ClassNotFoundException problems unless <em>all</em> of
-        your application classes are stored in the shared repository.</li>
-    <li><strong>lib/struts*.tld</strong> - These are the "tag library
-        descriptor" files that describe the custom tags in the various Struts
-        tag libraries.  They should be copied into the <code>WEB-INF</code>
-        directory of your web application.</li>
-    <li><strong>webapps/struts-blank.war</strong> - This is a simple "web
-        application archive" file containing a basic starting point for
-        building your own Struts-based applications.</li>
-    <li><strong>webapps/struts-documentation.war</strong> - This is a
-        "web application archive" file containing all of the Struts
-        documentation found on the
-        <a href="http://jakarta.apache.org/struts">Struts web site</a>
-        (including these pages).  You can install this web application
-        on any servlet container compatible with Servlet API 2.2 or later.</li>
-    <li><strong>webapps/struts-example.war</strong> - This is an example
-        web application that uses a large percentage of Struts features.
-        You can install this web application on any servlet container
-        compatible with the Servlet 2.2 (or later) and JSP 1.1 (or later)
-        specifications.  If an XML parser is not made available to web
-        applications by your container, you will need to add one to the
-        WEB-INF/lib directory of this web application.</li>
-    <li><strong>webapps/struts-exercise-taglib.war</strong> - This web
-        application contains test pages for the various custom tags supported
-        by Struts.  It is primarily of use to developers who are enhancing the
-        Struts custom tag libraries, but may also be useful as simple examples
-        of the usage of various Struts tags.</li>
-    <li><strong>webapps/struts-template.war</strong> - This web application
-        both introduces and demonstrates the Struts template tags.</li>       
-    <li><strong>webapps/struts-upload.war</strong> - This web application
-        is a quick example of uploading files using the Struts framework.</li>
-        </ul>
-
-    <p>To use Struts in your own application, you will need to follow
-    these steps:</p>
-    <ul>
-    <li>Copy the file <code>lib/struts.jar</code> from the Struts distribution
-        into the <code>WEB-INF/lib</code> directory of your web application.
-        </li>
-    <li>Copy the all of the files that match <code>lib/struts*.tld</code>
-        from the Struts distribution into the <code>WEB-INF</code> directory
-        of your web application.</li>
-    <li>Modify the <code>WEB-INF/web.xml</code> file for your web application
-        to include a <code>&lt;servlet&gt;</code> element to define the
-        controller servlet, and a <code>&lt;servlet-mapping&gt;</code> element
-        to establish which request URIs are mapped to this servlet.  Use the
-        <code>WEB-INF/web.xml</code> file from the Struts example application
-        for a detailed example of the required syntax.</li>
-    <li>Modify the <code>WEB-INF/web.xml</code> file of your web application
-        to include the following tag library declarations:</li>
-    </ul>
-
-<pre>&lt;taglib&gt;
-  &lt;taglib-uri&gt;/WEB-INF/struts-bean.tld&lt;/taglib-uri&gt;
-  &lt;taglib-location&gt;/WEB-INF/struts-bean.tld&lt;/taglib-location&gt;
-&lt;/taglib&gt;
-
-&lt;taglib&gt;
-  &lt;taglib-uri&gt;/WEB-INF/struts-html.tld&lt;/taglib-uri&gt;
-  &lt;taglib-location&gt;/WEB-INF/struts-html.tld&lt;/taglib-location&gt;
-&lt;/taglib&gt;
-
-&lt;taglib&gt;
-  &lt;taglib-uri&gt;/WEB-INF/struts-logic.tld&lt;/taglib-uri&gt;
-  &lt;taglib-location&gt;/WEB-INF/struts-logic.tld&lt;/taglib-location&gt;
-&lt;/taglib&gt;
-
-&lt;taglib&gt;
-  &lt;taglib-uri&gt;/WEB-INF/struts-template.tld&lt;/taglib-uri&gt;
-  &lt;taglib-location&gt;/WEB-INF/struts-template.tld&lt;/taglib-location&gt;
-&lt;/taglib&gt;
-</pre>
-
-    <ul>
-    <li>Create a file <code>WEB-INF/struts-config.xml</code> that defines the
-        action mappings and other characteristics of your specific application.
-        You can use the <code>struts-config.xml</code> file from the Struts
-        example application for a detailed example of the required syntax.</li>
-    <li>At the top of each JSP page that will use the Struts custom tags,
-        add line(s) declaring the Struts custom tag libraries used on
-        this particular page, like this:</li>
-    </ul>
-
-<pre>&lt;%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %&gt;
-&lt;%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %&gt;
-&lt;%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %&gt;
-&lt;%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %&gt;
-</pre>
-
-    <ul>
-    <li>When compiling the Java classes that comprise your application, be sure
-        to include the <code>struts.jar</code> file (copied earlier) on the
-        CLASSPATH that is submitted to the compiler.</li>
-    </ul>
-</section> 
-
-<section name="Installing Struts with your servlet container" href="Containers"> 
-
-<p><strong>WARNING</strong> - Do <strong>NOT</strong> add
-<code>struts.jar</code> to the classpath of your servlet container in an
-attempt to avoid placing it in the <code>/WEB-INF/lib</code> directory of
-each individual web app!  Doing so will cause problems with
-<code>ClassNotFoundException</code> exceptions.</p>
-
-<p>For most containers, you need only to: </p>
-<ul>
-  <li>Copy the WAR files in your Struts <code>/webapp</code> directory to your 
-    containers <code>webapps</code> directory. </li>
-  <li>In some cases, you may need to restart your container if it is running.</li>
-</ul>
-<h4>Status of various containers</h4>
-<ul>
-  <li>Bluestone Universal Business Server - <a href="installation-ubs72.html">Additional 
-    steps required.</a></li>
-  <li>Borland Application Server 4.5 -No additional 
-    steps required.</li>
-  <li>iPlanet Application Server - Service Pack 2 is recommended. Note that the database 
-  object in the Struts-Example application is not compatible with this container.</li>
-  <li>iPlanet Web Server - <a href="installation-ip.html">Additional steps required.</a></li>
-  <li>iPortal Application Server - <a href="installation-ipas.html">Additional steps required.</a></li>
-  <li>Jetty - <a href="installation-jetty.html">Additional steps required.</a></li>
-  <li>JRun - <a href="installation-jr30.html">Additional steps required.</a></li>
-  <li>Orion Application Server - <a href="installation-oas.html">Additional steps 
-    required.</a></li>
-  <li>Resin 1.2+ "standalone" - No additional steps required.</li>
-  <li>SilverStream 3.7.1 and later - <a href="installation-sas.html">Additional steps required.</a></li>
-  <li>Tomcat 3.1 and prior - Not recommended. Use Tomcat 3.2.1 or later.</li>
-  <li>Tomcat 3.2.1 with Apache - <a href="installation-tc.html">Additional steps 
-    required.</a></li>
-  <li>Tomcat 3.2.1+ "standalone" - No additional steps required.</li>
-  <li>Tomcat 4.0 - No additional steps required.</li>
-  <li>Weblogic - <a href="installation-wls5.html">Additional steps required.</a></li>
-  <li>WebLogic 6.0+ - No additional steps required.</li>
-  <li>WebSphere - <a href="installation-was352.html">Additional steps required.</a></li>
-  <li>WebSphere - <a href="installation-was352-x.html">Steps for the Example Application.</a></li></ul>
-</section> 
-
-
-  <section name="Building Struts From Source" href="Building">
-
-    <p>First, download a source distribution of Struts by following the
-    instructions <a href="../acquiring.html">here</a>.  Then, make sure
-    you have downloaded and installed <strong>all</strong> of the
-    <a href="#Prerequisites">prerequisite</a> software packages described
-    above.</p>
-
-    <p>To build Struts, you will need to customize the build process to the
-    details of your development environment as follows:</p>
-    <ul>
-    <li>The Struts source distribution uses a file named
-        <code>build.properties</code> (in the top-level directory of the
-        distribution) to identify the location of external components
-        that Struts depends on.</li>
-    <li>There is no <code>build.properties</code> file included with the
-        source distribution.  However, there is an example file named
-        <code>build.properties.example</code> that you can copy to
-        <code>build.properties</code> and then customize.</li>
-    <li>The properties you must configure in <code>build.properties</code> are:
-        <ul>
-        <li><strong>catalina.home</strong> - Pathname to the directory of your
-            binary distribution of Tomcat 4.0 (required only if you wish to
-            use the <code>deploy.catalina</code> target).</li>
-        <li><strong>servletapi.home</strong> - Pathname to the directory of
-            your binary distribution of the Servlet API classes.</li>
-        <li><strong>tomcat.home</strong> - Pathname to the directory of your
-            binary distribution of Tomcat 3.2 (required only if you wish to
-            use the <code>deploy.tomcat</code> target).</li>
-        <li><strong>xerces.home</strong> - Pathname to the directory of your
-            binary distribution of the Xerces parser, version 1.2 or 1.3
-            (required only if you wish to use the <code>deploy.catalina</code>
-            target).</li>
-        </ul></li>
-    <li>If you are a Struts developer with write access to the Subversion repository,
-        be sure that you do <strong>NOT</strong> check in a copy of the
-        <code>build.properties</code> file, since it will be different for
-        each individual developer.</li>
-    </ul>
-
-    <p>To build a "distribution" version of Struts, first change your current
-    directory to the directory in which you have unpacked the Struts
-    source distribution, and (if necessary) create or customize the
-    <code>build.properties</code> file as described above.  Then, type:</p>
-<pre>
-        ant dist
-</pre>
-
-    <p>This command will create a binary distribution of Struts, in a
-    directory named <code>dist</code> (relative to where you
-    are compiling from).  This directory contains an exact replica of the
-    files included in a binary distribution of Struts, as described
-    in the <a href="#Installing">preceding section</a>.</p>
-
-  </section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/installation-ip.xml b/build-legacy/core/xdocs/userGuide/installation-ip.xml
deleted file mode 100644
index 3b8b625..0000000
--- a/build-legacy/core/xdocs/userGuide/installation-ip.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<document url="installation-ip.html">
-<properties>
-<title>The Struts Framework Project - Installation - iPlanet</title>
-</properties>
-<body>
-<section name="5.2 Installation" href="installation"/>
-<section name="Installing Struts with your servlet container" href="Containers">
-<h4 id="ipws60">iPlanet Application Server 6.0</h4>
-<p>Service Pack 2 is recommended.</p>
-<p>NOTE: At present, the Struts example application still uses a non-Serializable
-servlet context attribute, and will not run in an environment that requires them,
-like iPlanet Application Server.</p>
-<h4 id="ipws42">iPlanet Web Server 4.2</h4>
-<p>Here are the issues I ran into while moving my struts based application from
-  Tomcat (supports WebApps and WAR) to iWS 4.1 (does <strong>NOT</strong> support Webapps
-  and WAR). </p>
-<p>Webapps and WAR will be supported in iWS 5.0, as mentioned in iWS5.0 roadmap.</p>
-<h4>Classpath issues.</h4>
-<p>This s pretty straightforward. Since there is no notion of <code>WEB-INF/lib</code> and
-  <code>WEB-INF/classes</code> the classpath has to be explicitly set in
-  <code>$SERVER_ROOT/config/jvm12.conf</code>.</p>
-<h4>Context relative paths</h4>
-<p>All URLs should be visible from the document root. In my case I just created
-  a symbolic link from <code>$DOCROOT/myapp</code> to <code>webapps/myapp</code>.</p>
-<h4>Extension mapping</h4>
-<p>The config file <code>$SERVER_ROOT/config/rules.properties</code> has a similar mechanism
-  as in web.xml.</p>
-<p>I have this in my <code>rules.properties</code> which forwards all urls ending with &quot;do&quot;
-  to the servlet whose logical name is action.</p>
-<pre>####
-    @.*[.]do$=action
-####</pre>
-<hr/>
-<p>Back to <a href="installation.html#Containers">Installation</a></p></section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/installation-ipas.xml b/build-legacy/core/xdocs/userGuide/installation-ipas.xml
deleted file mode 100644
index 1400c47..0000000
--- a/build-legacy/core/xdocs/userGuide/installation-ipas.xml
+++ /dev/null
@@ -1,155 +0,0 @@
-<?xml version="1.0"?>
-<document url="installation-ipas.html">
-    <properties>
-        <title>The Struts Framework Project - Installation - iPortal Application Server</title>
-    </properties>
-    <body>
-    <section name="5.2 Installation" href="installation"/>
-        <section name="Installing Struts with your servlet container" href="Containers">
-            <h4>
-                <a name="ipas13">iPortal Application Server 1.3</a>
-            </h4>
-            <strong>Tested with: Windows 2000</strong>
-            <h4>Important Note:</h4>
-            <p>At the moment, iPAS 1.3 is not fully compliant with the JSP 1.1/1.2
-specification. </p>
-            <p>Specifically, the automatic type conversions for custom tag parameters
-specified in "Issue  7" of the JSP 1.1 Errata and in the JSP 1.2 Proposed
-Final Draft have not yet been implemented.</p>
-            <p>As it stands, JSP pages that make use of Struts taglibs whose parameters
-require  conversion (such as booleans) will not compile under JRun. This
-includes the Struts Example Application. Attempting to run the example
-application will result in an exception similar to the following being
-thrown:</p>
-<pre>
-/struts-example/index.jsp:
-
-Compilation failed [IT_Builder:1000]
- at com.iona.j2ee.builder.JavaBuilder.build(JavaBuilder.java:84)
- at com.iona.j2ee.builder.JspBuilder.build(JspBuilder.java:51)
- at com.iona.j2ee.builder.WarBuilder.build(WarBuilder.java:111)
- at com.iona.j2ee.builder.EarBuilder.build(EarBuilder.java:99)
- at com.iona.j2ee.builder.EarBuilder.main(EarBuilder.java:223)
- at iportal.build.main(build.java:14)
- ocale(boolean) in org.apache.struts.taglib.html.HtmlTag
-   cannot be applied to (java.lang.String)
-       _x0.setLocale("true");
-            ^
- 1 error
-</pre>
-            <p>(For more details see refer to:<br/>
-                
-                    <a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg01860.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg01860.html</a>
-                )
-        </p>
-            <p>The following instructions describe how to install the Struts Example
-Application under iPAS 1.3. A subsequent section describes how the Struts
-Example Application can be patched to work with Struts.</p>
-            <p>The following instructions assume the following:</p>
-            <ul>
-                <li>iPortal Application Server 1.3 has been installed.</li>
-                <li>Both the Strut and XML Parser libraries are in your classpath.</li>
-            </ul>
-            <h4>Installing the struts example application</h4>
-            <ul>
-                <li>Start iPAS Services by clicking on the [Start iPAS Services] menu item. </li>
-                <li>Start the iPortal Application Server by clicking on the [iPortal Application Server] menu item. </li>
-                <li>Start a command shell. Change to the <code>$INSTALLDIR\IONA</code> and run the
-setenvs.bat file.</li>
-                <li>Create a directory called jars.</li>
-            </ul>
-            <p>Now run the EARSCO tool. Type <code>java iportal.earsco</code> and at the prompts do:</p>
-            <ul>
-                <li>Next</li>
-                <li>Type in the application name of <code>struts-example</code> then click next.</li>
-                <li>In step three click the check box and enter the name of the
-   WAR <code>struts-example</code>.Then click next.</li>
-                <li>Click on Finish.</li>
-            </ul>
-            <p>Now you must copy the contents of the struts-example war into the EARSCO
-directory structure as follows: </p>
-            <p>Under <code>$INSTALLDIR\IONA\jars\struts-examples\src\struts-example.war</code> you
-copy contents into the following directories: etc, lib, src and web.</p>
-            <ul>
-                <li>Copy all files in the root directory <br/>
-                    <code>$INSTALLDIR\jakarta-tomcat-3.2.1\webapps\struts-example\WEB-INF</code>
-                    <br/>
-   into the earsco directory<br/>
-                    <code>$INSTALLDIR\IONA\jars\struts-examples\src\struts-example.war\etc</code>
-                    <br/>
-   Do not copy in the classes or lib directories.</li>
-                <li>Copy the directory <br/>
-                    <code>$INSTALLDIR\jakarta-tomcat-3.2.1\webapps\struts-example\WEB-INF\lib</code>
-                    <br/>
-   into the earsco directory<br/>
-                    <code>$INSTALLDIR\IONA\jars\struts-examples\src\struts-example.war\lib</code>
-                </li>
-                <li>Copy the directory <br/>
-                    <code>$INSTALLDIR\jakarta-tomcat-3.2.1\webapps\struts-example\WEB-INF\classes</code>
-                    <br/>
-   into the earsco directory<br/>
-                    <code>$INSTALLDIR\IONA\jars\struts-examples\src\struts-example.war\src</code>
-                    <br/>
-                </li>
-                <li>Copy the directory <br/>
-                    <code>$INSTALLDIR\jakarta-tomcat-3.2.1\webapps\struts-example </code>
-                    <br/>
-   into the earsco directory <br/>
-                    <code>$INSTALLDIR\IONA\jars\struts-examples\src\struts-example.war\web</code>
-                    <br/>
-                </li>
-                <li>Next modify the application.xml in the <br/>
-                    <code>$INSTALLDIR\IONA\jars\struts-examples\etc</code> directory to this: </li>
-            </ul>
-            <pre>
-     &lt;application>
-
-     &lt;!-- Add display name -->
-           &lt;display-name>Struts Example&lt;/display-name>
-                 .......
-</pre>
-            <ul>
-                <li>Last update the cc.xml in the <br/>
-                    <code>$INSTALLDIR\IONA\jars\struts-examples directory as follows:</code>
-                </li>
-            </ul>
-            <pre>
-     &lt;configuration>
-       &lt;web-app>
-         &lt;context-root>struts-example&lt;/context-root>
-       &lt;/web-app>
-     &lt;/configuration>
-</pre>
-            <p>Now you are ready to compile and deploy the struts-example.</p>
-            <p>To compile the source from the $INSTALLDIR\IONA\jars\struts-examples type </p>
-            <p>
-                <code>java iportal.build</code>
-            </p>
-            <p>Next, type</p>
-            <p>
-                <code>java iportal.deploy</code>
-            </p>
-            <p>The first time you deploy you will be prompted by a Deploy wizard and asked to
-supply both locations of the struts-example.ear file and of the cc.xml file.
-Once both elements have been satisfied continue until the finish button and
-click it. The EAR file should deploy successfully.</p>
-            <p>Test the sample application by using the following URL in the browser:</p>
-            <p>
-                <code>http://hostname:9000/struts-example/index.jsp</code>
-            </p>
-            <p>The <code>struts-documentation.war</code> can be installed using the same procedure.</p>
-            <h4>Patching the struts example application</h4>
-            <p>As mentioned at the beginning of these notes, the Struts Example Application
-will not run under iPAS 1.3 without modification. The following changes will
-need to be made:</p>
-            <ul>
-                <li>index.jsp, logon.jsp: Change &lt;html:html locale="true"> to <br/>&lt;html:html locale=&lt;%= true %>></li>
-                <li>registration.jsp, subscription.jsp: Change all instances of filter="true" to <br/>filter=&lt;%= true %></li>
-            </ul>
-            <hr/>
-            <p>Back to <a href="installation.html#Containers">Installation</a>
-            </p>
-        </section>
-    
-    </body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/installation-jetty.xml b/build-legacy/core/xdocs/userGuide/installation-jetty.xml
deleted file mode 100644
index 59a6417..0000000
--- a/build-legacy/core/xdocs/userGuide/installation-jetty.xml
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0"?>
-
-<document url="installation-ip.html">
-
-<properties>
-  <title>The Struts Framework Project - Installation - Jetty</title>
-</properties>
-
-<body>
-<section name="5.2 Installation" href="installation"/>
-<section name="Installing Struts with your servlet container" href="Containers">
-
-<h4 id="jetty">Jetty Java HTTP Servlet Server</h4>
-
-<p>
-Jetty is a small, pure-Java, open source HTTP server that supports the
-2.3 Servlet spec and JSP 1.2. Jetty can be downloaded from
-<a href="http://www.mortbay.com/jetty">http://www.mortbay.com/jetty</a>.
-</p>
-
-<p>
-Struts WAR files run nearly straight out of the box when placed
-underneath Jetty's webapps directory. The one additional step needed
-is to add an entry for each WAR file to the Jetty server configuration
-file in order to map the appropriate request paths to the added Struts
-web applications (using "&lt;Call name="addWebApplication"&gt;...").
-</p>
-
-<p>
-So for example, if you have copied the WAR files that come with the
-Struts binary distribution into a subdirectory of the
-"%JETTY_HOME%/webapps" called "%JETTY_HOME%/webapps/struts" so that
-you have:
-</p>
-
-<pre>
-- %JETTY_HOME%/webapps/struts/struts-documentation.war
-- %JETTY_HOME%/webapps/struts/struts-example.war
-- %JETTY_HOME%/webapps/struts/struts-exercise-taglib.war
-- %JETTY_HOME%/webapps/struts/struts-upload.war
-- %JETTY_HOME%/webapps/struts/struts-blank.war
-</pre>
-
-<p>
-And you want to run Jetty using the demo.xml configuration file that
-comes with Jetty, just add the following block to demo.xml, anywhere
-after the Listeners are declared.
-</p>
-
-<pre>
-&lt;!-- Jetty config for Struts BEGIN --&gt;
-
-  &lt;Call name="addWebApplication"&gt;
-    &lt;Arg&gt;/struts/struts-documentation/*&lt;/Arg&gt;
-    &lt;Arg&gt;&lt;SystemProperty name="jetty.home"
-        default="."/&gt;/webapps/struts/struts-documentation.war&lt;/Arg&gt;
-    &lt;Arg&gt;&lt;SystemProperty name="jetty.home"
-        default="."/&gt;/etc/webdefault.xml&lt;/Arg&gt;
-    &lt;Arg type="boolean"&gt;false&lt;/Arg&gt; &lt;!-- if true,
-        expand war in temp dir --&gt;
-  &lt;/Call&gt;
-
-  &lt;Call name="addWebApplication"&gt;
-    &lt;Arg&gt;/struts/struts-example/*&lt;/Arg&gt;
-    &lt;Arg&gt;&lt;SystemProperty name="jetty.home"
-        default="."/&gt;/webapps/struts/struts-example.war&lt;/Arg&gt;
-    &lt;Arg&gt;&lt;SystemProperty name="jetty.home"
-        default="."/&gt;/etc/webdefault.xml&lt;/Arg&gt;
-    &lt;Arg type="boolean"&gt;true&lt;/Arg&gt; &lt;!-- if true,
-        expand war in temp dir --&gt;
-  &lt;/Call&gt;
-
-  &lt;Call name="addWebApplication"&gt;
-    &lt;Arg&gt;/struts/struts-exercise-taglib/*&lt;/Arg&gt;
-    &lt;Arg&gt;&lt;SystemProperty name="jetty.home"
-        default="."/&gt;/webapps/struts/struts-exercise-taglib.war&lt;/Arg&gt;
-    &lt;Arg&gt;&lt;SystemProperty name="jetty.home"
-        default="."/&gt;/etc/webdefault.xml&lt;/Arg&gt;
-    &lt;Arg type="boolean"&gt;false&lt;/Arg&gt; &lt;!-- if true,
-        expand war in temp dir --&gt;
-  &lt;/Call&gt;
-
-  &lt;Call name="addWebApplication"&gt;
-    &lt;Arg&gt;/struts/struts-upload/*&lt;/Arg&gt;
-    &lt;Arg&gt;&lt;SystemProperty name="jetty.home"
-        default="."/&gt;/webapps/struts/struts-upload.war&lt;/Arg&gt;
-    &lt;Arg&gt;&lt;SystemProperty name="jetty.home"
-        default="."/&gt;/etc/webdefault.xml&lt;/Arg&gt;
-    &lt;Arg type="boolean"&gt;true&lt;/Arg&gt; &lt;!-- if true,
-        expand war in temp dir --&gt;
-  &lt;/Call&gt;
-
-  &lt;Call name="addWebApplication"&gt;
-    &lt;Arg&gt;/struts/struts-blank/*&lt;/Arg&gt;
-    &lt;Arg&gt;&lt;SystemProperty name="jetty.home"
-        default="."/&gt;/webapps/struts/struts-blank.war&lt;/Arg&gt;
-    &lt;Arg&gt;&lt;SystemProperty name="jetty.home"
-        default="."/&gt;/etc/webdefault.xml&lt;/Arg&gt;
-    &lt;Arg type="boolean"&gt;true&lt;/Arg&gt; &lt;!-- if true,
-        expand war in temp dir --&gt;
-  &lt;/Call&gt;
-
-&lt;!-- Jetty config for Struts END --&gt;
-</pre>
-
-<hr/>
-<p>Back to <a href="installation.html#Containers">Installation</a></p>
-
-</section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/installation-jr30.xml b/build-legacy/core/xdocs/userGuide/installation-jr30.xml
deleted file mode 100644
index 6077049..0000000
--- a/build-legacy/core/xdocs/userGuide/installation-jr30.xml
+++ /dev/null
@@ -1,186 +0,0 @@
-<?xml version="1.0"?>
-<document url="installation-jr30.html">
-
-  <properties>
-    <title>The Struts Framework Project - Installation - JRun 3.0</title>
-  </properties>
-
-  <body>
-<section name="5.2 Installation" href="installation"/>
-<section name="Installing Struts with your servlet container" href="Containers">
-
-<h4 id="jrun">JRUN 3.0 SP2A, VERSION 3.02A.11614</h4>
-
-<strong>Tested with: Microsoft IIS 5.0, Windows 2000</strong>
-
-<h4>Important Note:</h4>
-
-<p>At the moment, JRun is not fully compliant with the JSP 1.1/1.2
-specification. </p>
-
-<p>Specifically, the automatic type conversions for custom tag parameters
-specified in "Issue  7" of the JSP 1.1 Errata and in the JSP 1.2 Proposed
-Final Draft have not yet been implemented.</p>
-
-<p>As it stands, JSP pages that make use of Struts taglibs whose parameters
-require  conversion (such as booleans) will not compile under JRun. This
-includes the Struts Example Application. Attempting to run the example
-application will result in an exception similar to the following being
-thrown:</p>
-
-<pre>
-/struts-example/index.jsp:
-
-javax.servlet.ServletException: Compilation error occurred:
-
-allaire.jrun.scripting.DefaultCFE:
-
-Errors reported by compiler:
-c:/JRun/servers/default/Struts
-  Example/WEB-INF/jsp/jrun__index2ejspa.java:41:1:41:27:
-
-Error: No match was found for method "setLocale(java.lang.String)".
-</pre>
-
-<p>(For more details see refer to:<br/>
-<a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg01860.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg01860.html</a>)</p>
-
-<p>The following instructions describe how to install the Struts Example
-Application under JRun. A subsequent section describes how the Struts Example
-Application can be patched to work with Struts</p>
-
-<p>The following instructions assume the following:</p>
-
-<ul>
-<li>JRun has been installed and integrated with the web server of choice.</li>
-
-<li>$APP_SERVER_NAME is the name of the application server used to host the
-  application.  (When JRun is first installed, it creates an application
-  server called JRun Default Server).</li>
-
-<li>$APP_SERVER_DIR is the directory used to hold applications hosted by
-  $APP_SERVER_NAME.  For the JRun Default Server, the directory is
-  $JRUN_HOME/servers/default where $JRUN_HOME is the directory where
-  JRun is installed.</li>
-</ul>
-
-<h4>Installing the struts example application</h4>
-
-<ul>
-<li>Login to the JRun Management Console.</li>
-
-<li>On the left pane, select $APP_SERVER_NAME. A page showing the
-  current server status will be shown on the right pane.</li>
-
-<li>On the right pane, click on the WAR Deployment link. A page
-  containing a list of the currently deployed web applications will be
-  shown.</li>
-
-<li>On the right pane, click on Deploy an Application. Complete the Web
-  Application Information form as follows:
-
-  <ul>
-  <li>Servlet War File or Directory:  Enter the full path where
-      struts-example.war is found or click on Browse to select
-      the path.</li>
-  <li>JRun Server Name:  $APP_SERVER_NAME</li>
-  <li>Application Name:  Struts Example</li>
-  <li>Application Hosts:  All Hosts</li>
-  <li>Application URL:   /struts-example</li>
-  <li>Application Deploy Directory:  will default to
-      $APP_SERVER_NAME/Struts Example (or the name as specified for
-      Application Name).</li>
-  </ul>
-</li>  
-
-<li>Once the form is complete, click on the Deploy button.</li>
-
-<li>If deployment is successful, restart the application server by
-  clicking on <code>$APP_SERVER_NAME</code> on the left pane. A page showing the
-  current server status will be shown on the right pane. Click the
-  Restart Server button to restart the application server.</li>
-
-<li>Test the sample application by using the following URL in the
-  browser:<br/>
-    <code>http://hostname/struts-example/index.jsp</code><br/>
-  The struts-documentation.war can be installed using the same
-  procedure.</li>
-</ul>
-
-<h4>Installing unpacked web applications</h4>
-
-<p>The above steps should be followed for applications deployed as <code>*.war</code> files.</p>
-
-<p>For unpacked web applications, configuration involves the following steps:</p>
-
-<ul>
-<li>From the JRun Management Console, select <code>$APP_SERVER_NAME</code> (on the
-  left pane) and click on WAR Deployment (on the right pane).</li>
-
-<li>On the right pane, click on Create an Application and complete the
-  Web Application Information form as follows:</li>
-
-<li>JRun Server Name:  $APP_SERVER_NAME
-
-  <ul>
-  <li>Application Name:  myApplication</li>
-  <li>Application Hosts:  All Hosts</li>
-  <li>Application URL:   /myApplication</li>
-  <li>Application Deploy Directory:  will default to<br/>
-    <code>$APP_SERVER_NAME/myApplication</code></li>
-  </ul>
-</li>  
-
-<li>Click on Create to submit the form.</li>
-
-<li>Once the web application is created, install and configure the struts
-  components (struts.jar, struts*.tld, etc) for the web application under
-  <code>$APP_SERVER_NAME/myApplication/WEB-INF</code></li>
-
-<li>Install the remaining components of the application:  .class files,
-  JSP pages,.properties files etc  as required.</li>
-
-<li>To configure the extension mapping of the request URI (ie *.do) to
-  the action servlet, expand <code>$APP_SERVER_NAME</code> on the left pane, expand
-  the Web Applications branch and click on myApplication. The right pane
-  will display the configuration options for myApplication. Click on
-  Servlet URL Mappings. A list of existing mappings will be shown. Click
-  the Edit button and create the following entry:
-
-  <ul>
-  <li>Virtual Path/Extension:   *.do</li>
-  <li>Servlet Invoked:  action</li>
-  </ul>
-</li>  
-
-<li>Click on the Update button to save the changes.</li>
-<li>Restart the application server.</li>
-<li>The application should now be accessible from the browser.</li>
-</ul>
-
-<p>The JRun application server will need to be restarted each time one of the
-following changes are made to the web application:</p>
-
-<ul>
-<li><code>.class</code> or <code>.jar</code> files are modified</li>
-<li><code>.properties</code> files are modified</li>
-<li><code>.xml</code> files are modified</li>
-</ul>
-
-<h4>Patching the struts example application</h4>
-
-<p>As mentioned at the beginning of these notes, the Struts Example Application
-will not run under JRun without modification.  The following changes will need
-to be made:</p>
-
-<ul>
-<li>index.jsp, logon.jsp: Change &lt;html:html locale="true"> to <br/>&lt;html:html locale=&lt;%= true %>></li>
-<li>logon.jsp: Change &lt;html:html redisplay="true"> to <br/>&lt;html:html redisplay=&lt;%= true %>></li>
-<li>registration.jsp, subscription.jsp: Change all instances of filter="true" to <br/>filter=&lt;%= true %></li>
-</ul>
-  <hr/>
-  <p>Back to <a href="installation.html#Containers">Installation</a></p>
-</section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/installation-novell.xml b/build-legacy/core/xdocs/userGuide/installation-novell.xml
deleted file mode 100644
index ae885dd..0000000
--- a/build-legacy/core/xdocs/userGuide/installation-novell.xml
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0"?>
-<document url="installation-novell.html">
-
-  <properties>
-    <title>The Struts Framework Project - Installation - Novell ExteNd Application Server</title>
-  </properties>
-
-  <body>
-<section name="5.2 Installation" href="installation"/>
-<section name="Installing Struts with your servlet container" href="Containers">
-
-<h4 id="orion">Novell ExteNd Application Server 4.0</h4>
-
-<strong>Using the ExteNd Workbench to deploy a WAR to the Novell ExteNd
-application server:</strong>
-<ul>
-  <li>Start the Novell ExteNd application server.</li>
-  <li>Using the ExteNd Workbench, create a new project:
-    <ol>
-    <li>File &gt; New Project</li>
-    <li>Select <em>Deploy-Only</em> and click <code>OK</code></li>
-    <li>Under Archive File select the appropriate Struts WAR file</li>
-    <li>Indicate the type of file (i.e. WAR 1.2)</li>
-    <li>Give the Deploy-Only project a name (i.e. struts-example)</li>
-    <li>Give the Deploy-Only project a location
-        (i.e. <code>D:\Struts</code>)</li>
-    <li>Click <code>Next</code></li>
-    <li>Review the material to be sure everything is correct</li>
-    <li>Click <code>Finish</code></li>
-    </ol>
-  </li>
-  <li>Setting up a deployment plan and server profile:
-    <ol>
-    <li>Right click on the project icon you just created and
-        select <em>Deployment Plan</em></li>
-    <li>Select <code>OK</code> when asked to create a new deployment
-        plan</li>
-    <li>Save the deployment plan</li>
-    <li>Create a server profile:  Projects &gt; Deployment Settings</li>
-    <li>Click on the Server Profiles tab</li>
-    <li>Select a server profile and click <code>OK</code></li>
-    </ol>
-  </li>
-  <li>Deploy the project:
-    <ol>
-    <li>Project &gt; Deploy Archive</li>
-    </ol>
-  </li>
-</ul>
-
-<strong>Deploying a WAR from a command line using SilverCmd:</strong>
-<ul>
-  <li>Start the SilverStream application server.</li>
-  <li>Create an XML deployment plan for the <code>struts-example.war</code>
-      application.</li>
-  <li>Call the file <code>struts-example-depl-plan.xml</code>.  You
-      can use the following contents for the file:
-<pre><![CDATA[
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE warJarOptions PUBLIC
-  "-//Silverstream Software, Inc.//DTD J2EE WAR Deployment Plan//EN"
-  "deploy_war.dtd">
-<warJarOptions>
-  <warJar>
-    <warJarName>struts-example.war</warJarName>
-    <isEnabled>true</isEnabled>
-    <urls>
-      <el>struts-example</el>
-    </urls>
-  </warJar>
-</warJarOptions>
-]]></pre>
-  </li>
-  <li>Create an XML deployment plan for the
-      <code>struts-documentation.war</code> application.</li>
-  <li>Call the file <code>struts-documentation-depl-plan.xml</code>.  You
-      can use the following contents for the file:
-<pre><![CDATA[
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE warJarOptions PUBLIC
-  "-//Silverstream Software, Inc.//DTD J2EE WAR Deployment Plan//EN"
-  "deploy_war.dtd">
-<warJarOptions>
-  <warJar>
-    <warJarName>struts-documentation.war</warJarName>
-    <isEnabled>true</isEnabled>
-    <urls>
-      <el>struts-documentation</el>
-    </urls>
-  </warJar>
-</warJarOptions>
-]]></pre>
-  </li>
-  <li>Run the following "SilverCmd DeployWAR" commands to deploy the
-      applications.  You can change 'localhost' to whatever server you
-      are deploying to.  You can change 'Silvermaster' to whatever
-      database you are deploying to.
-<pre><![CDATA[
-SilverCmd DeployWar localhost Silvermaster struts-example.war
-  -f struts-example-depl-plan.xml
-SilverCmd DeployWar localhost Silvermaster struts-documentation.war
-  -f struts-documentation-depl-plan.xml
-]]></pre>
-  </li>
-</ul>
-
-  <hr/>
-  <p>Back to <a href="installation.html#Containers">Installation</a></p>
-</section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/installation-oas.xml b/build-legacy/core/xdocs/userGuide/installation-oas.xml
deleted file mode 100644
index e2a5e16..0000000
--- a/build-legacy/core/xdocs/userGuide/installation-oas.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0"?>
-<document url="installation-oas.html">
-
-  <properties>
-    <title>The Struts Framework Project - Installation - Orion Application Server</title>
-  </properties>
-
-  <body>
-<section name="5.2 Installation" href="installation"/>
-<section name="Installing Struts with your servlet container" href="Containers">
-
-<h4 id="orion">Orion Application Server</h4>
-
-<p>In the steps below, <code>$ORION_HOME</code> refers to the directory in which
-  you have installed Orion, and <code>$STRUTS_HOME</code> is the directory in
-  which you unpacked the Struts binary distribution.</p>
-
-<ul>
-  <li>Modify the file <code>$ORION_HOME/config/application.xml</code> to define
-    the two new applications, by adding the following declarations, immediately
-    following the <code>web-module</code> directive for the default web application:</li>
-</ul>
-
-<pre>&lt;web-module id="strutsDoc"
-path="$STRUTS_HOME/webapps/struts-documentation.war"/>
-&lt;web-module id="strutsExample"
-path="$STRUTS_HOME/webapps/struts-example.war"/>
-</pre>
-
-<ul>
-  <li>Modify the file <code>$ORION_HOME/config/default-web-site.xml</code> (or
-    the configuration file for any other Orion web site) to include the following
-    declarations, after the declaration for the &lt;default-web-app> if any:</li>
-</ul>
-
-<pre>&lt;web-app application="default" name="strutsDoc"
-  root="/struts-documentation"/>
-&lt;web-app application="default" name="strutsExample"
-  root="/struts-example"/>
-</pre>
-
-<ul>
-  <li>After you start Orion, you should now be able to access these applications
-    (assuming you haven't changed the port number from the default of 80) at:</li>
-</ul>
-
-<pre>http://localhost/struts-documentation
-http://localhost/struts-example
-</pre>
-
-<ul>
-  <li>Versions of Orion up to at least 1.0.3 have a bug related to ServletContext.getResource()
-    calls that prevent the Struts example application from working out of the
-    box. This manifests itself as a JSP error when you try to access the example
-    application, with the following message:<br/>
-    <code>javax.servlet.jsp.JspException: Missing resources attributeorg.apache.struts.action.MESSAGE</code><br/>
-    followed by an error traceback. There will also be an initialization error
-    message in the <code>ORION_HOME/log/global-application.log</code> log file.
-    To work around this problem, you can take the following steps:
-  <ul>
-    <li>Go to the <code>$STRUTS_HOME/webapps</code> directory, where you will
-      note that Orion has automatically expanded each web application into an
-      unpacked directory structure.</li>
-    <li>Go to the <code>$STRUTS_HOME/webapps/struts-example/WEB-INF</code> directory,
-      and copy the file <code>struts-config.xml</code> one directory up (that
-      is, into <code>$STRUTS_HOME/webapps/struts-example</code>.</li>
-    <li>Modify the <code>$STRUTS_HOME/webapps/struts-example/WEB-INF/web.xm</code>
-      file, changing the value of the "config" initialization parameter (for the
-      action servlet) from <code>/WEB-INF/struts-config.xml</code> to <code>/action.xml</code>.</li>
-    <li>Restart Orion, and you should be able to access the example application.</li>
-    <li>Note that this workaround has a negative security-related side effect:
-      your <code>struts-conifig.xml</code> file can now be retrieved by remote
-      clients at the following URL:<br/>
-      <code>http://localhost/struts-example/struts-config.xml</code><br/>
-      Therefore, you should be sure you do not store sensitive information (such
-      as database passwords) in this file. </li>
-  </ul>
-  </li>
-</ul>
-
-  <hr/>
-  <p>Back to <a href="installation.html#Containers">Installation</a></p>
-</section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/installation-sas.xml b/build-legacy/core/xdocs/userGuide/installation-sas.xml
deleted file mode 100644
index 452ee4d..0000000
--- a/build-legacy/core/xdocs/userGuide/installation-sas.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0"?>
-<document url="installation-sas.html">
-
-  <properties>
-    <title>The Struts Framework Project - Installation - Silverstream Application Server</title>
-  </properties>
-
-  <body>
-<section name="5.2 Installation" href="installation"/>
-<section name="Installing Struts with your servlet container" href="Containers">
-
-<h4 id="sas">SilverStream Application Server 3.7.1 and later</h4>
-
-<ul>
-  <li>Start the SilverStream application server.</li>
-  <li>Create an XML deployment plan for the &quot;<code>struts-example.war</code>&quot;
-      application. Call the file &quot;<code>struts-example-depl-plan.xml</code>&quot;.
-      You can use the following contents for the file</li>
-</ul>
-
-<hr/>
-
-<p>----- cut here -----</p>
-
-<pre>
-&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
-&lt;!DOCTYPE warJarOptions PUBLIC
-  &quot;-//SilverStream Software, Inc.//DTD J2EE WAR Deployment Plan//EN&quot;
-  &quot;deploy_war.dtd&quot;&gt;
-&lt;warJarOptions&gt;
-&lt;warJar&gt;
-&lt;warJarName&gt;struts-example.war&lt;/warJarName&gt;
-&lt;isEnabled&gt;true&lt;/isEnabled&gt;
-&lt;urls&gt;&lt;el&gt;struts-example&lt;/el&gt;&lt;/urls&gt;
-&lt;/warJar&gt;
-&lt;/warJarOptions&gt;
-</pre>
-
-<p>----- cut here -----</p>
-
-<hr/>
-
-<p>Create an XML deployment plan for the &quot;<code>struts-documentation.war</code>&quot;
-    application. Call the file &quot;struts-documentation-depl-plan.xml&quot;.
-    You can use the following contents for the file:</p>
-
-<hr/>
-<p>----- cut here -----</p>
-
-<pre>
-&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
-&lt;!DOCTYPE warJarOptions PUBLIC
-  &quot;-//SilverStream Software, Inc.//DTD J2EE WAR Deployment Plan//EN&quot;
-  &quot;deploy_war.dtd&quot;&gt;
-&lt;warJarOptions&gt;
-&lt;warJar&gt;
-&lt;warJarName&gt;struts-documentation.war&lt;/warJarName&gt;
-&lt;isEnabled&gt;true&lt;/isEnabled&gt;
-&lt;urls&gt;&lt;el&gt;struts-documentation&lt;/el&gt;&lt;/urls&gt;
-&lt;/warJar&gt;
-&lt;/warJarOptions&gt;
-</pre>
-
-<p>----- cut here -----</p>
-<hr/>
-
-<p>Run the following &quot;<code>SilverCmd DeployWAR</code>&quot; commands to
-   deploy the applications. You can change 'localhost' to whatever server you
-   are deploying to. You can change 'Silvermaster' to whatever
-   database you are deploying to.</p>
-   <ul>
-     <li>SilverCmd DeployWar localhost Silvermaster struts-example.war -f struts-example-depl-plan.xml</li>
-     <li>SilverCmd DeployWar localhost Silvermaster struts-documentation.war -f struts-documentation-depl-plan.xml</li>
-   </ul>
-  <hr/>
-  <p>Back to <a href="installation.html#Containers">Installation</a></p>
-</section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/installation-tc.xml b/build-legacy/core/xdocs/userGuide/installation-tc.xml
deleted file mode 100644
index 82489e0..0000000
--- a/build-legacy/core/xdocs/userGuide/installation-tc.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0"?>
-<document url="installation-tc.html">
-
-  <properties>
-    <title>The Struts Framework Project - Installation - Tomcat with Apache</title>
-  </properties>
-
-  <body>
-<section name="5.2 Installation" href="installation"/>
-<section name="Installing Struts with your servlet container" href="Containers">
-<h4 id="tc321">Tomcat 3.2.1 With Apache</h4>
-<p>Note that the instructions for Tomcat 4 will be different than those for Tomcat 3,
-but the Tomcat 4.0 web connector is still under development. Versions of Tomcat prior
-to 3.2.1 are not recommend for use with Struts.</p>
-<ul>
-  <li>These instructions assume you have successfully integrated Tomcat with Apache
-    according to the Tomcat documentation.</li>
-  <li>Copy "struts-documentation.war" and "struts-example.war" to your $TOMCAT_HOME/webapps
-    directory</li>
-  <li>Restart Tomcat if it is already running</li>
-  <li>Tomcat will generate a file "$TOMCAT_HOME/conf/tomcat-apache.conf" that
-    will be used by Apache. This file is regenerated every time you start Tomcat,
-    so copy this file to a safe place (such as your Apache configuration directory;
-    on Unix systems this is usually <code>/usr/local/apache/conf</code>.</li>
-  <li>If you are running Tomcat 3.1, Tomcat will not have generated the entries
-    for your new applications. Add the following lines to the <code>tomcat-apache.conf</code>
-    file that you have saved, replacing $TOMCAT_HOME with the path to your Tomcat
-    home directory:</li>
-</ul>
-<pre>
-Alias /struts-documentation "$TOMCAT_HOME/webapps/struts-documentation
-  &lt;Directory "$TOMCAT_HOME/webapps/struts-documentation>
-    Options Indexes FollowSymLinks
-  &lt;/Directory>
-    ApJServMount /struts-documentation/servlet /struts-documentation
-  &lt;Location "/struts-documentation/WEB-INF/">
-    AllowOverride None
-    deny from all
-  &lt;/Location>
-Alias /struts-example "$TOMCAT_HOME/webapps/struts-example"
-  &lt;Directory "$TOMCAT_HOME/webapps/struts-example>
-    Options Indexes FollowSymLinks
-  &lt;/Directory>
-    ApJServMount /struts-example/servlet /struts-example
-  &lt;Location "/struts-example/WEB-INF/">
-    AllowOverride None
-    deny from all
-  &lt;/Location>
-</pre>
-<ul>
-  <li>The generated file above does not know anything
-    about extension mappings defined in a web.xml file, so the "*.do" URIs that
-    go to the controller servlet will not be recognized. To fix this, add the
-    following line to the saved version of "tomcat-apache.conf", after the corresponding
-    line for the .jsp extension:<br/>
-    <code>AddHandler jserv-servlet .do</code></li>
-  <li>Ensure that the saved version of "tomcat-apache.conf" is referenced in your
-    Apache "httpd.conf" configuration file. A typical use would have the following
-    line at the bottom of "httpd.conf":<br/>
-    <code>Include /usr/local/apache/conf/tomcat-apache.conf</code></li>
-  <li>In order to recognize "index.jsp" as a default page for web applications,
-    search in your "httpd.conf" for a "DirectoryIndex" directive. If you have
-    one, add "index.jsp" to the end of the list, so that it might look like this:<br/>
-    <code>DirectoryIndex index.html index.jsp</code><br/>
-    If you do not have such an entry, add one like this:<br/>
-    <code>DirectoryIndex index.jsp</code></li>
-  <li>Restart Apache to make it aware of the new applications. You should now
-    be able to access the applications from a browser like this:<br/>
-    <code>http://localhost/struts-documentation<br/>
-    http://localhost/struts-example</code></li>
-</ul>
-  <hr/>
-  <p>Back to <a href="installation.html#Containers">Installation</a></p>
-</section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/installation-ubs72.xml b/build-legacy/core/xdocs/userGuide/installation-ubs72.xml
deleted file mode 100644
index bdac9ed..0000000
--- a/build-legacy/core/xdocs/userGuide/installation-ubs72.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0"?>
-<document url="installation-ubs72.html">
-
-  <properties>
-    <title>The Struts Framework Project - Installation - Bluestone UBS 7.2</title>
-  </properties>
-
-  <body>
-<section name="5.2 Installation" href="installation"/>
-<section name="Installing Struts with your servlet container" href="Containers">
-<h4 id="bluestone">Bluestone Universal Business Server 7.2</h4>
-
-<ul>
-  <li>You need UBS version 7.2 to run war file applications. The UBS 7.2.2 evaluation
-    is located <a href="http://www.bluestone.com/SaISAPI.dll/SaServletEngine.class/products/downloads.jsp">here</a>.
-    If you're using version 7.2.1, you need to download the WAR file patch, located
-    in the product enhancement section of Bluestone's website <a href="http://www.bluestone.com/SaISAPI.dll/SaServletEngine.class/products/wfe.jsp">here</a>
-  </li>
-  <li> After installation of the correct version and/or patch of UBS 7.2, you
-    need to modify your apserver.txt file to point to the correct directory for
-    your war file applications. Look for the section that says something similar
-    to the following:<br />
-    <pre>
-  [SaServletEngine.class]
-  session_affinity=1
-  type=1
-  program=/SaServletEngine.class
-  file_path=f:\webapps
-  host=localhost:20000
-</pre>
-  </li>
-
-  <li>Use the directory specified by the "file_path" variable, or modify it to
-    point to your own custom webapp directory. Copy the "struts-documention.war"
-    and "struts-example.war" files into that webapp directory, and start the UBS
-    (read documentation distributed with UBS for information on how to start it
-    if necessary). Your webapps are now accessible from the following URL:
-    <p class="center"> http://localhost/&lt;PLUGIN&gt;/SaServletEngine.class/struts-example/<br />
-      http://localhost/&lt;PLUGIN&gt;/SaServletEngine.class/struts-documentation/
-    </p>
-  </li>
-
-  <li> Note: "&lt;PLUGIN&gt;" represents the plugin you are using for your specific
-    webserver. For Apache on Windows, it might be "cgi-bin/SaCGI.exe", for IIS
-    on Windows, it might be "scripts/SaCGI.exe" or "scripts/ISAPI.dll". Consult
-    the UBS documentation for more information. </li>
-</ul>
-  <hr/>
-  <p>Back to <a href="installation.html#Containers">Installation</a></p>
-</section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/installation-was352-x.xml b/build-legacy/core/xdocs/userGuide/installation-was352-x.xml
deleted file mode 100644
index 095fdad..0000000
--- a/build-legacy/core/xdocs/userGuide/installation-was352-x.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0"?>
-<document url="installation-was352-x.html">
-
-  <properties>
-    <title>The Struts Framework Project - Installation - WebSphere 3.5.2</title>
-  </properties>
-
-  <body>
-<section name="5.2 Installation" href="installation"/>
-<section name="Installing Struts with your servlet container" href="Containers">
-
-<h4 id="was352">WebSphere Application Server 3.5 and the Example Application</h4>
-
-<p>Server: Windows 2000 Server with WebSphere 3.5.3 Advanced</p>
-<ol>
-<li>Start up the adminserver. </li>
-<li>Start up Admin Console. </li>
-<li>Use the Convert War file task to convert the struts-example.war from the
-struts-b1 distrib as-is. </li>
-<li>Convert to the default_server, default servlet engine and standard
-install directory (c:\websphere\appserver\hosts\default_host). </li>
-<li>Create a WEB-INF directory in the servlets dir and copy
-struts-config.xml, database.xml AND web.xml into it (Keep WEB-INF with all
-the TLD's under web - both WEB-INF directories must be present). </li>
-<li>Copy jaxp 1.0.1's (NOT 1.1.1's) jaxp.jar and parser.jar to the servlets
-directory of the strut-example webapp. </li>
-<li>In the servlets directory, open struts.jar with WinZip.  Extract the
-three DTD's (struts-config_1_0.dtd, web-app_2_2.dtd and web-app_2_3.dtd)
-into the servlets directory making sure you use folder names (so the files
-extract to servlets/org/apache/struts/resources). </li>
-<li>Click on struts-example in the Admin Console under Default Server/Default
-Servlet Engine and click the advanced tab on the right hand side of the
-screen. </li>
-<li>Down where it says Default Error Page, enter /ErrorReporter and then
-click Apply. </li>
-<li>Start the Default Server via the Admin Console. You should see a whole
-bunch of ActionServlet messages in the default_host_stdout.log file with no
-exceptions. </li>
-<li>Via a browser accessed the app using
-http://localhost/struts-example/index.jsp. </li>
-<li>If it returns "Application not Available" then go back to the Admin
-Console, right-click on struts-example and select Restart WebApp. </li>
-<li>Once it reports success, go back to the URL above and try again - it
-should work flawlessly. </li>
-</ol>
-<p>
-For whatever reason, some installations do not like XML files that reference
-PUBLIC DTD's - if in looking at the default_host_stdout.log file you see
-errors about invalid public URL references during DTD registrations, or if
-your pages say "cannot find //logon or //saveRegistration (ie. action
-mappings) then do the following:</p>
-<ol>
-<li>Stop Default Server</li>
-<li>Go to servlets\WEB-INF\ and edit web.xml and struts_config.xml.</li>
-<li>In the DOCTYPE declaration, change the word PUBLIC to SYSTEM and
-completely remove the line that reads "-//Sun Microsystems, Inc.//DTD Web
-Application 2.2//EN" from web.xml and remove "-//Apache Software
-Foundation//DTD Struts Configuration 1.0//EN" from struts-config.xml. </li>
-<li>Save these changes and go back to step 10 above.</li>
-</ol>
-<p>Just as a troubleshooting guide - </p>
-<p>If you are getting errors like "Cannot find ActionMappings, etc..." or
-"Cannot find key org.apache.struts.MESSAGE"  then your application is most
-likely still bombing on the struts-config issue that Richard discovered.
-The above steps SHOULD correct that leaving nothing out.  If you are getting
-404 errors about //logon or something not found, then you are still having
-XML config troubles and it is not initializing the Action servlet properly.
-Follow the steps above in regards to DTD's and it should work.</p>
-<p>As a final thought, I obviously haven't gotten to test too much but I don't
-believe that there are ANY coding changes that need to be made to the actual
-struts source.  Everything about getting it to work in WebSphere has been a
-WebSphere configuration issue thus far (and I don't think I'll be having any
-more). </p>
-<p>If changing the DTD's to SYSTEM, do so ONLY AFTER using the Convert a War
-util.  Ant doesn't seem to like it the other way! :)</p>
-  <hr/>
-  <p>Back to <a href="installation.html#Containers">Installation</a></p>
-</section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/installation-was352.xml b/build-legacy/core/xdocs/userGuide/installation-was352.xml
deleted file mode 100644
index 532f092..0000000
--- a/build-legacy/core/xdocs/userGuide/installation-was352.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0"?>
-<document url="installation-was352.html">
-
-  <properties>
-    <title>The Struts Framework Project - Installation - WebSphere 3.5.2</title>
-  </properties>
-
-  <body>
-<section name="5.2 Installation" href="installation"/>
-<section name="Installing Struts with your servlet container" href="Containers">
-
-<h4 id="was352">WebSphere Application Server 3.5 FixPack 2</h4>
-
-<ul>
-<li>In the steps below, <code>$WAS_HOME</code> refers to the directory in which you
-  have installed WebSphere Application Server, and <code>$STRUTS_HOME</code> is the
-  directory in which you unpacked the Struts binary distribution.</li>
-
-<li>WebSphere before 3.5.2 did not support JSP 1.1 and Servlet 2.2, which
-  made it difficult to get Struts functioning without massive code changes.
-  Please upgrade to 3.5.2 (3.5 with FixPack 2)  before attempting to use
-  Struts. See <a href="http://www.ibm.com/software/webservers/appserv/efix.html">http://www.ibm.com/software/webservers/appserv/efix.html</a>
-  for download and install instructions on FixPack 2 for WebSphere 3.5</li>
-
-<li>Warning: Struts will not work with WebSphere 3.5.2 out of the box. Fixes
-  expected to be in WebSphere 3.5.3 (not released at time of writing) should
-  correct this. However, you can successfully get WebSphere 3.5.2 working
-  with Struts.</li>
-
-<li>Make sure the WebSphere Application Server is started. Under Windows
-  NT/2000, it's the "IBM WS AdminServer" service.</li>
-
-<li>Start the WebSphere Administrative Console.</li>
-
-<li>Once it's started, select "Convert a War File" from the tasks toolbar
-  option, or from the Console->Tasks menu. This will cause a "Convert War
-  File" Wizard dialog to appear.</li>
-
-<li>Select a Servlet Engine to host the web application that will result
-  from converting the War file, e.g. "Default Servlet Engine", by expanding
-  the tree control under Nodes. Press the Next button.</li>
-
-<li>Select a Virtual Host to associate the resulting web application with,
-  e.g. "default host". Press the Next button.</li>
-
-<li>Press the Browse button and choose the
-  <code>$STRUTS_HOME/webapps/struts-example.war</code>. Press the Next button</li>
-
-<li>Select a destination directory for the resulting web application, e.g.
-  <code>$WAS_HOME/hosts/default_host</code>. Press the Next button</li>
-
-<li>Enter a "Web Application Web Path", e.g. struts-example, and a "Web
-  Application Name", e.g. struts-example. Press the Finish button.</li>
-
-<li>You should, after a lengthy pause, get a message box with the text
-  Command "convert war file" completed successfully. Press Ok.</li>
-
-<li>You now need to add jaxp.jar and a jaxp compatible parser, e.g.
-  parser.jar from JAXP 1.0.1 to the struts-example web application's
-  servlets directory, e.g.
-  <code>$WAS_HOME/AppServer/hosts/default_host/struts-example/servlets</code></li>
-
-<li>At this point, if WAS 3.5.2 correctly implemented Servlet 2.2, all
-  would be fine. However, WAS 3.5.2  returns null for calls to
-  <code>ServletContext.getResource(String)</code> or
-  <code>ServletContext.getResourceAsStream(String)</code>. This manifests itself as an
-  exception in the application server stdout log, e.g.
-  <code>default_server_stdout.log.</code></li>
-
-<li>Warning: Don't be fooled by the fact that the web application starts
-  successfully from the Admin Console. It actually doesn't. The Admin
-  Console is lying. If you try to access the webapp
-  e.g. <code>http://localhost/struts-example/</code> it will fail.</li>
-
-<li>At this point, you need to patch the Struts source. There are three
-  places <code>getResourceAsStream</code> is called:</li></ul>
- <pre>
-    ResourceTag.doStartTag()
-    ActionServlet.initMapping()
-    PropertyMessageResources.loadLocale(String)
-</pre>
-  <p>of these, <code>ActionServlet</code> is the most important.</p>
-
-<ul><li>Change the source from</li></ul>
-<pre>
-    // Acquire an input stream to our configuration resource
-    InputStream input = getServletContext().getResourceAsStream(config);
-</pre>
-<p>to</p>
-<pre>
-    // Acquire an input stream to our configuration resource
-    InputStream input = new
-      java.io.FileInputStream(getServletContext().getRealPath(config));
- </pre>
-<ul><li>  Make similar changes to the other classes if necessary.</li>
-
-<li>Recompile ActionServlet and copy the <code>.class</code> file to <br/>
-
-<code>$WAS_HOME/AppServer/hosts/default_host/struts-example/servlets/<br/>
-org/apache/struts/action/ActionServlet.class</code></li>
-
-<li>Another bug with WAS 3.5.2's classloaders is that Class.getResource()
-  wont load a resource from a jar, so you must copy<br/>
-  <code>$STRUTS_HOME/lib/struts-config_1_0.dtd</code> <br/>
-  to <br/>
-  <code>$WAS_HOME/AppServer/hosts/default_host/struts-example/servlets/org/apache/struts/resources/struts-config_1_0.dtd</code><br/>
-  or be connected to the Internet to fetch the dtd from the Jakarta web site.</li>
-
-<li>Start your webapp in the Admin Console</li>
-
-<li>Test the example application by loading the following URL in your
-  browser of choice: <a href="http://localhost/struts-example/">http://localhost/struts-example/" >http://localhost/struts-example/</a></li>
-</ul>
-  <hr/>
-  <p>Back to <a href="installation.html#Containers">Installation</a></p>
-</section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/installation-wls5.xml b/build-legacy/core/xdocs/userGuide/installation-wls5.xml
deleted file mode 100644
index 98218c2..0000000
--- a/build-legacy/core/xdocs/userGuide/installation-wls5.xml
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0"?>
-<document url="installation-wls5.html">
-
-  <properties>
-    <title>The Struts Framework Project - Installation - Weblogic 5.1 sp8</title>
-  </properties>
-
-  <body>
-<section name="5.2 Installation" href="installation"/>
-<section name="Installing Struts with your servlet container" href="Containers">
-
-<h4 id="wls5">Weblogic 5.1 (service pack 8)</h4>
-<ul>
-  <li>Obtain and install the Xerces XML parser (problems have been reported with
-    the Sun reference implementation). Put xerces.jar in your WebLogic system
-    path.</li>
-  <li>Obtain and unpack the Struts binary distribution (this procedure assumes
-    it was extracted to <code>c:\jakarta-struts</code>).</li>
-  <li>Add an entry to weblogic.properties for each of the Struts web applications
-    that you would like to configure. For example, to make the struts-example
-    application available, add the following line to weblogic.properties:<br/>
-    <code>weblogic.httpd.webApp.strutsexample=<br/>
-    c:/jakarta-struts/webapps/struts-example.war</code></li>
-  <li>You do not need to include struts.jar or any of the application specific
-    classes in the WebLogic classpath, since this will be done automatically (unless
-    deploying an unpacked web archive- see below).</li>
-  <li>Start WebLogic server and point your web browser to the struts application.
-    For example, to connect to the example application added in step 3:<br/>
-    <code>http://localhost:7001/strutsexample</code></li>
-  <li>This example application depends on the Struts specific resource file ApplicationResources.properties
-    to be present on the classpath. However, WebLogic only extracts *.class files
-    from the archive so this file will not be found, resulting in an error the
-    first time it is needed- something similar to: javax.servlet.ServletException:
-    runtime failure in custom tag 'message'. Steps 6 &amp; 7 will need to be performed
-    for this application, and any other that relies on ApplicationResources.properties.</li>
-  <li>Extract ApplicationResources.properties from the *.war file, and manually
-    copy it to the respective package in the _tmp_war_ directory WebLogic created
-    for this application. Again referring to the struts-example application, this
-    would be:<br/>
-    <code>c:\jakarta-struts\webapps\WEB-INF\_tmp_war_strutsexample</code></li>
-  <li>Restart WebLogic. You will now be able to run the application:<br/>
-    <code>http://localhost:7001/strutsexample</code></li>
-</ul>
-<p>The above steps should be followed for applications deployed as *.war files.
-  For unpacked web applications, configuration involves adding both <code>struts.jar</code>
-  and <code>/WEB-INF/classes</code> to the WebLogic classpath. For this reason,
-  I would suggest deploying applications as war files to WebLogic. However, the
-  same example application can be successfully deployed in extracted format by
-  modifying weblogic.properties (assuming the war was extracted to directory webapps/struts-example):</p>
-<p><code>weblogic.httpd.webApp.strutsexample=<br/>
-  c:/jakarta-struts/webapps/struts-example/</code></p>
-<p>And starting WebLogic with the updated WebLogic classpath. For example:</p>
-<p><code>c:\jdk1.3\bin\java -ms16m -mx64m<br/>
-  -classpath c:\weblogic\lib\weblogic510sp8boot.jar;</code></p>
-  <hr/>
-  <h4>Additional Recommendations</h4>
-  <ul>
-  <li>Servlet and JSP-Reloading should be turned off. First, you pay a performance
-    penalty. Depending on the number of JSPs, the number of requests and the
-    configured checking interval, the server will slow down. Second, with JSP- and
-    Servlet reloading, one opens the door for various Weblogic classloader problems,
-    that are difficult to diagnose, difficult to handle and often lead to lost
-    HTTP-sessions.</li>
-  <li>Set the name of the <code>sessionid</code> to <code>JSESSIONID</code>, if cookies are used for session
-    tracking and to jsessionid, if sessions are URL-based. (There are additional
-    problems related to URL-based sessions, caused from BEA's way to encode the session
-    id (J2EE-incompatible) as query-param. Especially &lt;bean:include&gt; will not work with
-    URL-based sessions yet. However, using the correct session name solves at least some
-    problems.)</li>
-  <li>Configure the JSP-Servlet registration in <code>weblogic.properties</code> for
-    maximum J2EE-compliance and/or for maximum performance.</li></ul>
-  <p>The JSP-Servlet supports some initialization parameters that can be customized to get
-    best performance, maximum compliance or (as shown below) easier debugging:</p>
-<pre>
-  weblogic.httpd.initArgs.*.jsp=\
-       pageCheckSeconds=-1,\
-        setEmptyStrings=false,\
-         compileCommand=./_jspCompiler_.cmd,\
-             workingDir=/weblogic/myserver/tmp_classfiles,\
-          keepgenerated=true,\
-                  debug=true,\
-                verbose=true
-</pre>
-<p>In the above example, the batch file (<code>_jspCompiler_.cmd</code>) invokes jikes
-   which results dramatically reduced startup times (jikes is about three times faster
-   than javac.) The batchfile contains only a single line:</p>
-
-<pre>@jikes -g -nowarn %*</pre>
-
-<p>The next configuration could be used when all tests have been done and speed is the
-major concern ...</p>
-
-<pre>
-  weblogic.httpd.initArgs.*.jsp=\
-       pageCheckSeconds=-1,\
-        setEmptyStrings=false,\
-         compileCommand=./_jspCompiler_.cmd,\
-             workingDir=/weblogic/myserver/tmp_classfiles,\
-          keepgenerated=false,\
-                  debug=false,\
-                verbose=false
-</pre>
-
-<p>... together with ...</p>
-
-<pre>@jikes -O -nowarn %*</pre>
-
-<p>Weblogic supports similar settings through <code>&lt;context-params&gt;</code> in <code>web.xml</code>
-(Please read the latest documentation at the BEA website for details.)</p>
-<p>For additional issues, see also <a
-href="http://www.mail-archive.com/struts-dev@jakarta.apache.org/msg00284.html">More
-fixes for WLS 5.1 SP8</a> from the Struts Developer mailing list</p>
-<hr/>
-  <p>Back to <a href="installation.html#Containers">Installation</a></p>
-</section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/installation.xml b/build-legacy/core/xdocs/userGuide/installation.xml
deleted file mode 100644
index f4bf856..0000000
--- a/build-legacy/core/xdocs/userGuide/installation.xml
+++ /dev/null
@@ -1,388 +0,0 @@
-<?xml version="1.0"?>
-<document url="installation.html">
-
-  <properties>
-    <title>The Struts Framework Project - Installation (1.1)</title>
-  </properties>
-
-  <body>
-  <section name="6.2 Installation" href="installation"/>
-  <section name="Prerequisite Software" href="Prerequisites">
-
-  <p>The Struts binary distribution needs three other software packages installed to
-  operate. You may already have these installed on your system. To build Struts from
-  source you may need to acquire and install several others. The complete list is as
-  follows:</p>
-
-  <ul>
-  <li><strong>Java Development Kit</strong> - You <strong>must</strong> download and install
-      a Java2 (version 1.2 or later) Java Development Kit implementation for
-      your operating system platform.
-      A good starting point for locating Java Development Kit distributions is
-      <a href="http://java.sun.com/j2se">http://java.sun.com/j2se</a>.
-      To build Struts, Java 1.4.2 or later is suggested. </li>
-
-  <li><strong>Servlet Container</strong> - You <strong>must</strong> download and install a
-      servlet container that is compatible with the Servlet API Specification,
-      version 2.2 or later, and the JavaServer Pages (JSP) Specification,
-      version 1.1 or later.  One popular choice is to download Apache's
-      <a href="http://jakarta.apache.org/tomcat">Tomcat</a> (version 3.1
-      or later required, version 3.3 or later recommended).</li>
-
-  <li><strong>XML Parser</strong> - Struts <strong>requires</strong> the presence of an XML
-      parser that is compatible with the Java API for XML Parsing (JAXP)
-      specification, 1.1 or later. This is bundled with J2SE 1.4 and later.
-      (For earlier versions of Java, the easiest way to obtain JAXP is
-      probably by downloading the Web Services Developers Kit
-      (1.1 or later!). See the <a href="http://java.sun.com/xml/jaxp/faq.html#jaxp-ri-latest">
-      Sun JAXP FAQ</a> for more information.)
-      In Struts-based web applications, you may replace the reference
-      implementation classes with any other JAXP compliant parser, such as
-      <a href="http://xml.apache.org/xerces-j">Xerces</a>.  See detailed
-      instructions related to the parser in the instructions for
-      <a href="#Building">building</a> and <a href="#Installing">installing</a>
-      Struts, below.</li>
-
-  <li><strong>Ant Build System</strong> - If you are building Struts from the
-      source distribution, you must download and install version 1.5.4 (or later)
-      of the <a href="http://jakarta.apache.org/ant">Ant</a> build system.
-      This package is also strongly recommended for use in developing your
-      own web applications based on Struts.
-      <ul>
-      <li>Make sure that the "ant" and "ant.bat" scripts are executable, by
-          adding the $ANT_HOME/bin directory to your PATH environment
-          variable.</li>
-      </ul></li>
-
-  <li><strong>Servlet API Classes</strong> - In order to compile Struts itself,
-      or applications that use Struts, you will need a <code>servlet.jar</code>
-      file containing the Servlet and JSP API classes.  Most servlet containers
-      include this JAR file.  Otherwise, you can get the Servlet API classes
-      distribution from
-      <a href="http://jakarta.apache.org/builds/jakarta-servletapi">here</a>.
-      </li>
-
-  <li><strong>JDBC 2.0 Optional Package Classes</strong> - Struts supports
-      an optional implementation of <code>javax.sql.DataSource</code>, so it
-      requires the API classes to be compiled.  They can be downloaded from
-      <a href="http://java.sun.com/products/jdbc/download.html">http://java.sun.com/products/jdbc/download.html</a>.</li>
-
-  <li>
-      <strong>Jakarta Commons Packages</strong> - Struts utilizes several
-      packages from the <a href="http://jakarta.apache.org/commons/">Jakarta
-      Commons Project</a>.
-      These are the packages which must be available if you wish to
-      build Struts from source:
-      <ul>
-      <li><em>Beanutils</em> (Version 1.6.1 or later)</li>
-      <li><em>Collections</em> (Version 2.1 or later)</li>
-      <li><em>Digester</em> (Version 1.5 or later)</li>
-      <li><em>FileUpload</em> (Version 1.0 or later)</li>
-      <li><em>Lang</em> (Version 1.0.1 or later)</li>
-      <li><em>Logging</em> (Version 1.0.3 or later when it is available)</li>
-      <li><em>Struts-Legacy</em> (Version 1.0 or later)</li>
-      <li><em>Validator</em> (Version 1.0.2 or later) </li>
-      </ul>
-      For your convenience, the requisite JARs are provided as a single
-      download under the <code>lib</code> sub-directory with each release
-      and beta distribution.
-      Please note that the minimum requirements may change between releases
-      and betas, and some JARs may need to be updated to use the latest
-      Nightly Build.
-  </li>
-
-  <li><strong>Jakarta ORO</strong> -
-  <a href="http://jakarta.apache.org/oro/index.html">Apache Jakarta ORO</a>
-  version 2.0.6 (or later) is  required to build Struts from source.</li>
-
-  <li><strong>Xalan XSLT Processor</strong> - If you are building Struts from
-      the source distribution, you will need a version of Xalan to perform
-      XSLT transformations. If you are using the JAXP/1.1 XML parser, you
-      should use the version of <code>xalan.jar</code> shipped with it.
-      Otherwise, download and install version 1.2 of Xalan from
-      <a href="http://xml.apache.org/xalan">here</a>.
-  </li>
-
-  <li><strong>Cactus Testing</strong> - If you plan on testing the Struts applications
-      in this distribution, you must download and install version 1.3
-      of the <a href="http://jakarta.apache.org/cactus">Cactus</a> test framework.
-      This package is also recommended for use in developing your
-      own unit tests for your web applications based on Struts.
-  </li>
-
-  </ul>
-
-  </section>
-
-  <section name="Install A Struts Binary Distribution" href="Installing">
-
-    <p>First, download a binary distribution of Struts by following the
-    instructions <a href="../acquiring.html">here</a>.  Then, make sure
-    you have downloaded and installed the
-    <a href="#Prerequisites">prerequisite</a> software packages described
-    above.</p>
-
-    <p>Unpack the Struts binary distribution into a convenient directory.
-    (If you <a href="#Building">build Struts from the source distribution</a>,
-    the result of the build will already be an unpacked binary distribution
-    for you). The distribution consists of the following contents:</p>
-
-    <ul>
-    <li><strong>lib/commons-*.jar</strong> - These JAR files contain packages
-        from the Jakarta Commons project that are utilized within Struts
-        itself.  When you assemble a Struts-based application, you will need
-        to copy these files to the <code>WEB-INF/lib</code> directory.</li>
-    <li><strong>lib/jdbc2_0-stdext.jar</strong> - The JDBC 2.0 Optional Package
-        API classes.  You will need to copy this file to your
-        <code>WEB-INF/lib</code> directory if you are utilizing the data
-        sources support provided by Struts.</li>
-    <li><strong>lib/struts.jar</strong> - This JAR file contains all of the
-        Java classes included in Struts.  It should be copied into the
-        <code>WEB-INF/lib</code> directory of your web application.
-        <em>WARNING</em> - If you are going to be hosting multiple Struts
-        based applications on the same servlet container, you will be tempted
-        to place the <code>struts.jar</code> file into the shared repository
-        supported by your container.  Be advised that this will like cause you
-        to encounter ClassNotFoundException problems unless <em>all</em> of
-        your application classes are stored in the shared repository.</li>
-    <li><strong>lib/struts-*.tld</strong> - These are the "tag library
-        descriptor" files that describe the custom tags in the various Struts
-        tag libraries. They should be copied into the <code>WEB-INF</code>
-        directory of your web application. (Servlet 2.3 can omit this step
-        if the <a href="configuration.html#dd_config_taglib_23">standard uri</a>
-        is referenced.)</li>
-    <li><strong>webapps/struts-blank.war</strong> - This is a simple "web
-        application archive" file containing a basic starting point for
-        building your own Struts-based applications.</li>
-    <li><strong>webapps/struts-documentation.war</strong> - This is a
-        "web application archive" file containing all of the Struts
-        documentation found on the
-        <a href="http://jakarta.apache.org/struts">Struts web site</a>
-        (including these pages).  You can install this web application
-        on any servlet container compatible with Servlet API 2.2 or later.</li>
-    <li><strong>webapps/struts-example.war</strong> - This is an example
-        web application that uses a large percentage of Struts features.
-        You can install this web application on any servlet container
-        compatible with the Servlet 2.2 (or later) and JSP 1.1 (or later)
-        specifications.  If an XML parser is not made available to web
-        applications by your container, you will need to add one to the
-        WEB-INF/lib directory of this web application.</li>
-    <li><strong>webapps/struts-exercise-taglib.war</strong> - This web
-        application contains test pages for the various custom tags supported
-        by Struts.  It is primarily of use to developers who are enhancing the
-        Struts custom tag libraries, but may also be useful as simple examples
-        of the usage of various Struts tags.</li>
-    <li><strong>webapps/struts-upload.war</strong> - This web application
-        is a quick example of uploading files using the Struts framework.
-    </li>
-    <li><strong>webapps/struts-validator.war</strong> - This web application
-        is an example of using the validator framework, using both the
-        server-side and optional client-side validation.
-    </li>
-        <li><strong>webapps/tiles-documentation.war</strong> - This web
-        application documents how to use tiles, and was developed using tiles.</li>
-    </ul>
-
-    <p>To use Struts in your own application, you will need to follow
-    these steps:</p>
-    <ul>
-    <li>Copy the files <code>lib/commons-*.jar</code> from the Struts
-        distribution into the <code>WEB-INF/lib</code> directory of your
-        web application.</li>
-    <li>Copy the file <code>lib/struts.jar</code> from the Struts distribution
-        into the <code>WEB-INF/lib</code> directory of your web application.
-        </li>
-    <li>Copy the all of the files that match <code>lib/struts-*.tld</code>
-        from the Struts distribution into the <code>WEB-INF</code> directory
-        of your web application.</li>
-    <li>Modify the <code>WEB-INF/web.xml</code> file for your web application
-        to include a <code>&lt;servlet&gt;</code> element to define the
-        controller servlet, and a <code>&lt;servlet-mapping&gt;</code> element
-        to establish which request URIs are mapped to this servlet. Use the
-        <code>WEB-INF/web.xml</code> file from the Struts example application
-        for a detailed example of the required syntax.</li>
-    <li>Modify the <code>WEB-INF/web.xml</code> file of your web application
-        to include the following tag library declarations (Servlet 2.3 can omit
-        this step if the <a href="configuration.html#dd_config_taglib_23">standard uri</a>
-        is referenced):</li>
-    </ul>
-
-<pre>&lt;taglib&gt;
-  &lt;taglib-uri&gt;/WEB-INF/struts-bean.tld&lt;/taglib-uri&gt;
-  &lt;taglib-location&gt;/WEB-INF/struts-bean.tld&lt;/taglib-location&gt;
-&lt;/taglib&gt;
-
-&lt;taglib&gt;
-  &lt;taglib-uri&gt;/WEB-INF/struts-html.tld&lt;/taglib-uri&gt;
-  &lt;taglib-location&gt;/WEB-INF/struts-html.tld&lt;/taglib-location&gt;
-&lt;/taglib&gt;
-
-&lt;taglib&gt;
-  &lt;taglib-uri&gt;/WEB-INF/struts-logic.tld&lt;/taglib-uri&gt;
-  &lt;taglib-location&gt;/WEB-INF/struts-logic.tld&lt;/taglib-location&gt;
-&lt;/taglib&gt;
-</pre>
-
-    <ul>
-    <li>Create a file <code>WEB-INF/struts-config.xml</code> that defines the
-        action mappings and other characteristics of your specific application.
-        You can use the <code>struts-config.xml</code> file from the Struts
-        example application for a detailed example of the required syntax.</li>
-    <li>At the top of each JSP page that will use the Struts custom tags,
-        add line(s) declaring the Struts custom tag libraries used on
-        this particular page, like this:</li>
-    </ul>
-
-<pre>&lt;%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %&gt;
-&lt;%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %&gt;
-&lt;%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %&gt;
-</pre>
-
-    <ul>
-    <li>When compiling the Java classes that comprise your application, be sure
-        to include the <code>struts.jar</code> and
-        <code>commons-*.jar</code> files (copied earlier) on the
-        CLASSPATH that is submitted to the compiler.</li>
-    </ul>
-</section> <section name="Installing Struts With Your Servlet Container" href="Containers">
-
-<p>For most containers, you need only to: </p>
-<ul>
-  <li>Copy the WAR files in your Struts <code>/webapp</code> directory to your
-    containers <code>webapps</code> directory. </li>
-  <li>In some cases, you may need to restart your container if it is running.</li>
-</ul>
-
-<h4>Running Struts Applications Under A Security Manager</h4>
-
-<p>Many application servers execute web applications under the control of a
-Java security manager, with restricted permissions on what classes in the web
-application can do.  If you utilize form beans with mapped properties, you may
-encounter security exceptions unless you add the following permission to the
-set of permissions granted to your Struts application's codebase:</p>
-<pre>
-  permission java.lang.RuntimePermission "accessDeclaredMembers";
-</pre>
-
-<p>Consult the documentation on your application server for more information
-about how to configure additional security manager permissions.</p>
-
-<h4>Installing Struts on Various Containers</h4>
-<ul>
-  <li>Bluestone Universal Business Server 7.2 - <a href="installation-ubs72.html">Additional
-    steps required.</a></li>
-  <li>Borland Application Server 4.5 -No additional
-    steps required.</li>
-  <li>iPlanet Application Server - Service Pack 2 is recommended. Note that the database
-  object in the Struts-Example application is not compatible with this container.</li>
-  <li>iPlanet Web Server - <a href="installation-ip.html">Additional steps required.</a></li>
-  <li>iPortal Application Server - <a href="installation-ipas.html">Additional steps required.</a></li>
-  <li>Jetty - <a href="installation-jetty.html">Additional steps required.</a></li>
-  <li>JRun - <a href="installation-jr30.html">Additional steps required.</a></li>
-  <li>Novell ExteNd Application Server 4.0+ -
-      <a href="installation-novell.html">Additional steps required.</a></li>
-  <li>Orion Application Server - <a href="installation-oas.html">Additional steps
-    required.</a></li>
-  <li>Resin 1.2+ "standalone" - No additional steps required.</li>
-  <li>RexIP - No additional steps required.</li>
-  <li>SilverStream 3.7.1 and later - <a href="installation-sas.html">Additional steps required.</a></li>
-  <li>Tomcat 3.1 and prior - Not recommended. Use Tomcat 3.2.1 or later.</li>
-  <li>Tomcat 3.2.1 with Apache - <a href="installation-tc.html">Additional steps
-    required.</a></li>
-  <li>Tomcat 3.2.1+ "standalone" - No additional steps required.</li>
-  <li>Tomcat 4.0 - No additional steps required.</li>
-  <li>Weblogic 5.1 sp8 - <a href="installation-wls5.html">Additional steps required.</a></li>
-  <li>WebLogic 6.0+ - No additional steps required.</li>
-  <li>WebSphere - <a href="installation-was352.html">Additional steps required.</a></li>
-  <li>WebSphere - <a href="installation-was352-x.html">Steps for the Example Application.</a></li></ul>
-</section>
-
-<section name="Building Struts From Source" href="Building">
-
-    <p>First, download a source distribution of Struts by following the
-    instructions <a href="../acquiring.html">here</a>.  Then, make sure
-    you have downloaded and installed <strong>all</strong> of the
-    <a href="#Prerequisites">prerequisite</a> software packages described
-    above.</p>
-
-    <p>To build Struts, you will need to customize the build process to the
-    details of your development environment as follows:</p>
-    <ul>
-    <li>The Struts source distribution uses a file named
-        <code>build.properties</code> (in the top-level directory of the
-        distribution) to identify the location of external components
-        that Struts depends on.</li>
-    <li>There is no <code>build.properties</code> file included with the
-        source distribution.  However, there is an example file named
-        <code>build.properties.example</code> that you can copy to
-        <code>build.properties</code> and then customize.</li>
-    <li>The properties you must configure in <code>build.properties</code> are:
-        <ul>
-        <li><strong>catalina.home</strong> - Pathname to the directory of your
-            binary distribution of Tomcat 4.0 (required only if you wish to
-            use the <code>deploy.catalina</code> target).</li>
-        <li><strong>commons-beanutils.jar</strong> - Pathname of the BeanUtils
-            package JAR file from the Jakarta Commons project.</li>
-        <li><strong>commons-collections.jar</strong> - Pathname of the
-            Collections package JAR file from the Jakarta Commons project.</li>
-        <li><strong>commons-digester.jar</strong> - Pathname of the
-            Digester package JAR file from the Jakarta Commons project.</li>
-        <li><strong>commons-fileupload.jar</strong> - Pathname of the
-            Fileupload package JAR file from the Jakarta Commons project.</li>
-        <li><strong>commons-lang.jar</strong> - Pathname of the
-            Lang package JAR file from the Jakarta Commons project.</li>
-        <li><strong>commons-logging.jar</strong> - Pathname of the
-            Logging package JAR file from the Jakarta Commons project.</li>
-        <li><strong>commons-validator.jar</strong> - Pathname of the
-            Validator package JAR file from the Jakarta Commons project.</li>
-        <li><strong>servletapi.home</strong> - Pathname to the directory of
-            your binary distribution of the Servlet API classes.</li>
-        <li><strong>tomcat.home</strong> - Pathname to the directory of your
-            binary distribution of Tomcat 3.2 (required only if you wish to
-            use the <code>deploy.tomcat</code> target).</li>
-        <li><strong>xerces.home</strong> - Pathname to the directory of your
-            binary distribution of the Xerces parser, version 1.2 or 1.3
-            (required only if you wish to use the <code>deploy.catalina</code>
-            target).</li>
-        </ul></li>
-
-
-   <li>If you are a Struts developer with write access to the Subversion repository,
-        be sure that you do <strong>NOT</strong> check in a copy of the
-        <code>build.properties</code> file, since it will be different for
-        each individual developer.</li>
-    </ul>
-
-    <p>To build a "distribution" version of Struts, first change your current
-    directory to the directory in which you have unpacked the Struts
-    source distribution, and (if necessary) create or customize the
-    <code>build.properties</code> file as described above.  Then, type:</p>
-<pre>
-        ant dist
-</pre>
-
-    <p>This command will create a binary distribution of Struts, in a
-    directory named <code>dist</code> (relative to where you
-    are compiling from).  This directory contains an exact replica of the
-    files included in a binary distribution of Struts, as described
-    in the <a href="#Installing">preceding section</a>.</p>
-
-    <p>IMPORTANT NOTE: The <code>struts.jar</code>, as well as the JAR files
-    from the Jakarta Commons project, must be in your classpath when
-    compiling Struts. The <code>build.xml</code> provided does this
-    automatically.  If you use your development machine to test Struts
-    application locally, be sure that the <code>struts.jar</code> is
-    <strong>NOT</strong> on your classpath when your container is running.
-    </p>
-
-  </section>
-
-<section>
-    <p class="right">
-    Next: <a href="../faqs/index.html">FAQs and HowTos</a>
-    </p>
-</section>
-
-  
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/introduction.xml b/build-legacy/core/xdocs/userGuide/introduction.xml
deleted file mode 100644
index f4af403..0000000
--- a/build-legacy/core/xdocs/userGuide/introduction.xml
+++ /dev/null
@@ -1,425 +0,0 @@
-<?xml version="1.0"?>
-<document url="introduction.html">
-
-  <properties>
-    <title>The Struts User's Guide - Introduction</title>
-  </properties>
-
-  <body>
-
-  <section name="1. Introduction" href="introduction"/>
-
-      <section name="1.1 Forward into the Past! (or a brief history of Struts)" href="history">
-
-        <p>
-          When Java servlets were first invented, many programmers quickly realized that they were a
-          Good Thing. They were faster and more powerful that standard CGI, portable, and infinitely
-          extensible.
-        </p>
-
-        <p>
-          But writing HTML to send to the browser in endless <code>println()</code> statements was tiresome and
-          problematic. The answer to that was 
-          <a href="http://java.sun.com/products/jsp/product.html">JavaServer Pages</a>, 
-          which turned 
-          <a href="http://java.sun.com/products/jsp/product.html">Servlet</a> writing inside-out.
-          Now developers could easily mix HTML with Java code, and have all the advantages of servlets.
-          The sky was the limit!
-        </p>
-
-        <p>
-          Java web applications quickly became "JSP-centric". This in-and-of itself was not a Bad
-          Thing, but it did little to resolve flow control issues and other problems endemic to web
-          applications.
-        </p>
-
-        <p>Another model was clearly needed ...</p>
-
-        <p>
-          Many clever developers realized that JavaServer Pages AND servlets could be used <strong>
-          together</strong> to deploy web applications. The servlets could help with the control-flow, and the
-          JSPs could focus on the nasty business of writing HTML. In due course, using JSPs and servlets
-          together became known as 
-          <a href="http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html">Model 2</a> 
-          (meaning, presumably, that using JSPs alone was Model 1).
-        </p>
-
-        <p>
-          Of course, there is nothing new under the Sun ... and many have been quick to point out that
-          JSP's Model 2 follows the classic 
-          <a href="http://java.sun.com/blueprints/patterns/j2ee_patterns/model_view_controller/">Model-View-Controller</a> 
-          design pattern abstracted from the venerable 
-          <a href="http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html">Smalltalk MVC framework</a>. 
-          Java Web developers now tend to use the terms Model 2 and MVC interchangeably. In this guide, we use 
-          the MVC paradigm to describe the Struts architecture, which might be best termed a Model 2/MVC 
-          design.
-        </p>
-
-        <p>
-          The Struts project was launched in May 2000 by Craig R. McClanahan to provide a standard MVC
-          framework to the Java community. In July 2001, Struts 1.0 was released, and IOHO, Java 
-          Model 2 development will never be quite the same.
-        </p>
-      
-      </section>
-      
-      <section name="1.2 The Model-View-Controller ('MVC') Design Pattern" href="mvc">
-      
-        <p>
-          In the MVC design pattern, application flow is mediated by a
-          central Controller. The Controller delegates requests - in our
-          case, HTTP requests - to an appropriate handler. The handlers
-          are tied to a Model, and each handler acts as an adapter
-          between the request and the Model. The Model represents, or
-          encapsulates, an application's business logic or
-          state. Control is usually then forwarded back through the
-          Controller to the appropriate View. The forwarding can be
-          determined by consulting a set of mappings, usually loaded
-          from a database or configuration file. This provides a loose
-          coupling between the View and Model, which can make 
-          applications significantly easier to create and maintain.
-        </p>
-
-      </section>
-      
-    <section name="1.2.1 The Model: System State and Business Logic JavaBeans" href="modelConcepts">
-      
-      <p>
-        The <em>Model</em> portion of an MVC-based system can be often be divided into
-        two major subsystems -- the <strong>internal state</strong> of the system 
-        and the <strong>actions</strong> that can be taken to change that state.
-      </p>
-
-       <p>In grammatical terms, we might think about
-        state information as <strong>nouns</strong> (things) and actions as <strong>verbs</strong>
-        (changes to the state of those things).
-      </p>
-        
-      <p>
-        Many applications represent the internal state of the
-        system as a set of one or more JavaBeans. The bean properties represent
-        the details of the system' state.  Depending on your application's complexity,
-        these beans may be self contained (and know how to persist their own state),
-        or they may be facades that know how to retrieve the system's state from another 
-        component. This component may be a database, a search engine, an Entity Enterprise 
-        JavaBean, a LDAP server, or something else entirely.
-      </p>
-        
-      <p>
-        Large-scale applications will often represent the set of possible
-        business operations as methods that can be called on the bean or beans 
-        maintaining the state information.  For example, you might have a shopping
-        cart bean, stored in session scope for each current user, with properties
-        that represent the current set of items that the user has decided to
-        purchase. This bean might also have a <code>checkOut()</code> method
-        that authorizes the user's credit card and sends the order to the
-        warehouse to be picked and shipped. Other systems will represent the
-        available operations separately, perhaps as Session Enterprise JavaBeans
-        (Session EJBs).
-      </p>
-        
-      <p>
-        In a smaller scale application, on the other hand, the available
-        operations might be embedded within the <code>Action</code> classes that are
-        part of the Struts control layer. This can be useful when the logic is very
-        simple or where reuse of the business logic in other environments is not
-        contemplated.
-      </p>
-  
-      <p>
-        The Struts framework architecture is flexible enough to support most any 
-        approach to accessing the Model, but we <strong>strongly</strong> recommend that you 
-        separate the business logic ("how it's done") from the role that 
-        <code>Action</code> classes play ("what to do"). 'nuff said.
-      </p>    
-  
-      <p>
-        For more about adapting your application's Model to Struts, see the
-        <a href="building_model.html">Building Model Components</a> chapter.
-      </p>
-
-   </section>
-
-    <section name="1.2.2 The View: JSP Pages and Presentation Components" href="presentationConcepts">     
-
-      <p>
-        The <em>View</em> portion of a Struts-based application is most often 
-        constructed using JavaServer Pages (JSP) technology.  JSP pages can
-        contain static HTML (or XML) text called "template text", plus the
-        ability to insert dynamic content based on the interpretation (at page
-        request time) of special action tags.  The JSP environment includes a
-        set of standard action tags, such as <code>&lt;jsp:useBean&gt;</code>
-        whose purpose is described in the <a href="http://java.sun.com/products/jsp/download.html">JavaServer Pages Specification</a>.  
-        In addition to the built-in actions, there is a standard facility to 
-        define your own tags, which are organized into "custom tag libraries."
-      </p>
-          
-      <p>
-        Struts includes a set of custom tag libraries that facilitate
-        creating user interfaces that are fully internationalized, and that
-        interact gracefully with <code>ActionForm</code> beans that are part
-        of the <em>Model</em> portion of the system.  
-      </p>
-
-      <p>
-        For more about the Struts taglibs and using presentation pages 
-        with the framework, see the 
-        "<a href="building_view.html">Building View Components</a>" chapter. 
-        Additional documentation regarding the taglibs is also available in 
-        the Developer Guides (see menu).
-      </p>
-    </section>
-    
-    <section name="1.2.3 The Controller: ActionServlet and ActionMapping" href="controllerConcepts">
-      
-      <p>
-        The <em>Controller</em> portion of the application is focused on receiving
-        requests from the client (typically a user running a web browser), deciding
-        what business logic function is to be performed, and then delegating
-        responsibility for producing the next phase of the user interface to
-        an appropriate View component.  In Struts, the primary component of the
-        Controller is a servlet of class <code>ActionServlet</code>. This servlet
-        is configured by defining a set of <code>ActionMappings</code>. 
-        An ActionMapping defines a <code>path</code> that is matched against the 
-        request URI of the incoming request, and usually specifies the
-        fully qualified class name of an Action class. All Actions
-        are subclassed from <code>org.apache.struts.action.Action</code>. Actions 
-        encapsulate the business logic, interpret the outcome, and ultimately dispatch
-        control to the appropriate View component to create the response.
-      </p>
-        
-      <p>
-        Struts also supports the ability to use <code>ActionMapping</code>
-        classes that have additional properties beyond the standard ones required
-        to operate the framework. This allows you to store additional information
-        specific to your application, but still utilize the remaining features of
-        the framework. In addition, Struts lets you define logical "names" to which
-        control should be forwarded so that an action method can ask for the
-        "Main Menu" page (for example), without knowing what the actual name of the
-        corresponding JSP page is.  These features greatly assist you in separating
-        the control logic (what to do) with the view logic (how it's rendered).
-      </p>
-
-      <p>
-        For more about the Struts control layer, see the
-        <a href="building_controller.html">Building Controller Components</a> chapter.
-      </p>
-
-      </section>
-      
-      <section name="1.3 Struts Control Flow" href="flow">
-      
-        <p>
-          The Struts framework provides several components that make up the <strong>Control</strong> 
-          layer of a MVC-style application. These include a controller servlet, 
-          developer-defined request handlers, and several supporting objects.
-        </p>
-
-        <p>
-          The Struts custom tag libraries provide direct support for the <strong>View</strong> layer 
-          of a MVC application. Some of these access the control-layer objects. 
-          Others are generic tags found convenient when writing applications. Other 
-          taglibs, including 
-          <a href="http://java.sun.com/products/jsp/jstl/index.html">JSTL</a>, 
-          can also be used with Struts. Other presentation technologies, like 
-          <a href="http://jakarta.apache.org/velocity/index.html">Velocity Templates</a> and 
-          <a href="http://www.w3.org/TR/xslt">XSLT</a>
-          can also be used with Struts.
-        </p>
-
-        <p>
-          The <strong>Model</strong> layer in a MVC application is often project-specific. Struts is 
-          designed to make it easy to access the business-end of your application, 
-          but leaves that part of the programming to other products, like 
-          <a href="http://java.sun.com/products/jdbc/index.html">JDBC</a>, 
-          <a href="http://java.sun.com/products/ejb/index.html">Enterprise Java Beans</a>, 
-          <a href="http://jakarta.apache.org/ojb/">Object Relational Bridge</a>, or 
-          <a href="http://netmeme.org/simper/">Simper</a>, 
-          to name a few.
-         </p>
-
-        <p>
-         Let's step through how this all fits together.
-        </p>
-
-        <p>
-          When initialized, the controller parses a configuration
-          file (<code>struts-config.xml</code>) and uses it to deploy other control layer objects. 
-          Together, these objects form the <strong>Struts Configuration</strong>. The Struts Configuration 
-          defines (among other things) the 
-          <a href="../api/org/apache/struts/action/ActionMappings.html">ActionMappings</a>
-          [<code>org.apache.struts.action.ActionMappings</code>] for an application. 
-        </p>
-
-        <p>
-          The Struts controller servlet consults the ActionMappings as it routes HTTP 
-          requests to other components in the framework. Requests may be forwarded to JavaServer Pages or 
-          <a href="../api/org/apache/struts/action/Action.html">Action</a> 
-          [<code>org.apache.struts.action.Action</code>] subclasses provided by the
-          Struts developer. Often, a request is first forwarded to an Action and then to a JSP 
-          (or other presentation page). The mappings help the controller turn HTTP requests into application 
-          actions.
-        </p>
-        
-        <p>
-        An individual 
-        <a href="../api/org/apache/struts/action/ActionMapping.html">ActionMapping</a>
-        [<code>org.apache.struts.action.ActionMapping</code>] 
-        will usually contain a number of properties including:</p>
-        <ul>
-          <li>a <strong>request path</strong> (or "URI"),</li>
-          <li>the <strong>object type</strong> (Action subclass) to act upon the request, and</li>
-          <li>other properties as needed. </li>
-        </ul>
-        <p>
-          The Action object can handle the request and respond to the client (usually a Web 
-          browser) or indicate that control should be forwarded elsewhere. For example, if 
-          a login succeeds, a login action may wish to forward the request onto the 
-          mainMenu page.
-        </p>
-      
-        <p>
-          Action objects have access to the application's controller servlet, and so have access
-          to that servlet's methods. When forwarding control, an Action object can indirectly
-          forward one or more shared objects, including 
-          <a href="http://java.sun.com/products/javabeans/">JavaBeans</a>, by placing them in one
-          of the standard contexts shared by Java Servlets.
-        </p>
-        
-        <p>
-          For example, an Action object can create a shopping cart bean, add an item to the
-          cart, place the bean in the session context, and then forward control to
-          another mapping. That mapping may use a JavaServer Page to display the contents of the user's cart.
-          Since each client has their own session, they will each also have their own
-          shopping cart. </p>
-        <p>
-          In a Struts application, most of the business logic can be
-          represented using JavaBeans. An Action can call the properties of a JavaBean 
-          without knowing how it actually works. This encapsulates the business logic, 
-          so that the Action can focus on error handling and where to forward control.
-        </p>
-        
-        <p>
-          JavaBeans can also be used to manage input forms. A key problem in designing
-          Web applications is retaining and validating what a user has entered between
-          requests. With Struts, you can define your own set of input bean classes, by
-          subclassing 
-          <a href="../api/org/apache/struts/action/ActionForm.html">ActionForm</a>
-          [<code>org.apache.struts.action.ActionForm</code>]. The ActionForm class makes it
-          easy to store <strong>and validate</strong> the data for your application's input forms. 
-          The ActionForm bean is automatically saved in one of the standard, shared context 
-          collections, so that it can be used by other objects, like an Action object or 
-          another JSP.
-        </p>
-        
-        <p>
-          The form bean can be used by a JSP to collect data from the user ... by an
-          Action object to validate the user-entered data ... and then by the JSP again to
-          re-populate the form fields. In the case of validation errors, Struts has a
-          shared mechanism for raising and displaying error messages.
-        </p>
-        
-        <p>
-          Another element of the Struts Configuration are the 
-          <a href="../api/org/apache/struts/action/ActionFormBeans.html">ActionFormBeans</a>
-          [<code>org.apache.struts.action.ActionFormBeans</code>].
-          This is a collection of 
-          <a href="../api/org/apache/struts/action/ActionFormBean.html">descriptor objects</a>
-          that are used to create instances of the ActionForm objects at runtime. 
-          When a mapping needs an ActionForm, the servlet looks up the form-bean descriptor by name and uses 
-          it to create an ActionForm instance of the specified type.
-        </p>
-         <p>    
-          Here is the sequence of events that occur when a request calls for an mapping that uses an ActionForm:
-        </p>
-         
-        <ul>
-        <li>The controller servlet either retrieves or creates the ActionForm bean instance.</li>
-        <li>The controller servlet passes the bean to the Action object.</li>
-        <li>If the request is being used to submit an input page, the Action object 
-        can examine the data. If necessary, the data can be sent back to the input 
-        form along with a list of messages to display on the page. Otherwise the data can 
-        be passed along to the business tier.</li>
-        <li>If the request is being used to create an input page, the Action object can 
-        populate the bean with any data that the input page might need. </li>
-        </ul>
-        
-        <p>
-          The Struts framework includes custom tags that can automatically populate
-          fields from a JavaBean. All most JavaServer Pages really need to know
-          about the rest of the framework is the field names to use and where to submit
-          the form. 
-        </p>
-        <p>
-          Other Struts tags can automatically output messages queued by an Action 
-          or ActionForm and simply need to be integrated into the page's markup. 
-          The messages are designed for
-          <a href="http://developer.java.sun.com/developer/technicalArticles/Intl/IntlIntro/">localization</a> 
-          and will render the best available message for a user's locale.
-        </p>
-        
-        <p>
-          The Struts framework and its custom tag libraries were designed from the ground-up 
-          to support the internationalization features built into the Java platform. All the field labels
-          and messages can be retrieved from a 
-          <a href="../api/org/apache/struts/util/MessageResources.html">message resource</a>.
-          To provide messages for another language, simply add another file to the resource bundle.
-        </p>
-        
-        <p>
-          Internationalism aside, other benefits to the message resources approach are consistent labeling 
-          between forms, and the ability to review all labels and messages from a central 
-          location.
-        </p>
-        
-        <p>
-          For the simplest applications, an Action object may sometimes handle the business logic
-          associated with a request. <strong>However, in most cases, an Action object should 
-          invoke another object, usually a JavaBean, to perform the actual business logic.</strong> 
-          This lets the Action focus on error handling and control flow, rather than 
-          business logic. To allow  reuse on other platforms, business-logic JavaBeans should not refer to any Web 
-          application objects. The Action object should translate needed details from the 
-          HTTP request and pass those along to the business-logic beans as regular Java 
-          variables.
-        </p>
-          
-        <p>
-          In a database application, for example: 
-        </p>
-
-        <ul>
-         <li>A business-logic bean will connect to and query the database,</li>
-         <li>The business-logic bean returns the result to the Action,</li>
-         <li>The Action stores the result in a form bean in the request,</li>
-         <li>The JavaServer Page displays the result in a HTML form.</li>
-         </ul>
-
-         <p>Neither the Action nor the JSP need to know (or care) from where 
-         the result comes. They just need to know how to package and display it.
-         </p>
-        
-        <p>
-          <a href="index.html">Other chapters</a> in this document cover the 
-          various Struts components in greater detail. The Struts release also 
-          includes several Developer Guides covering various aspects of the 
-          frameworks, along with sample applications, the standard Javadoc API, 
-          and, of course, the complete source code!
-         </p>
-         
-         <p>
-          Struts is distributed under the Apache Software Foundation license. The code 
-          is copyrighted, but is free to use in any application. See the 
-          <a href="http://www.apache.org/LICENSE-1.1">ASF license</a> for specifics. 
-         </p>
-          
-</section>
-
-<section>
-    <p class="right">
-    Next: <a href="building_model.html">Building Model Components</a>
-    </p>
-</section>
-      
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/preface.xml b/build-legacy/core/xdocs/userGuide/preface.xml
deleted file mode 100644
index 0eaa52e..0000000
--- a/build-legacy/core/xdocs/userGuide/preface.xml
+++ /dev/null
@@ -1,858 +0,0 @@
-<?xml version="1.0"?>
-<document url="preface.html">
-
-  <properties>
-    <title>The Struts User's Guide - Preface: Core Technologies</title>
-  </properties>
-
-  <body>
-
-  <section name="0. Preface: Core Technologies"/>
-
-  <section name="0.1 The Usual Suspects" href="suspects">
-
-    <p>
-      This User Guide is written for active web developers and assumes a working
-      knowledge about how Java web applications are built. Before getting started, you should
-      understand the basics of several core technologies:
-    </p>
-
-    <ul>
-      <li><a href="#http">HTTP, HTML, and User Agents</a></li>
-      <li><a href="#cycle">The HTTP Request/Response Cycle</a></li>
-      <li><a href="#java">The Java Language and Application Frameworks</a></li>
-      <li><a href="#javabeans">JavaBeans</a></li>
-      <li><a href="#resources">Properties Files and  ResourceBundles</a></li>
-      <li><a href="#servlets">Java Servlets</a></li>
-      <li><a href="#jsp">JavaServer Pages and JSP Tag Libraries</a></li>
-      <li><a href="#xml">Extensible Markup Language</a></li>
-    </ul>
-
-    <p>
-    This chapter briefly defines each of these technologies but does not describe them in detail.
-    For your convenience, links to further information are provided if you would like to learn more about a technology.
-    </p>
-
-    <p id="JavaWebServicesTutorial">If you are familiar with Java, but not these technologies,
-    the best overall starting point is
-    <a href="http://java.sun.com/webservices/docs/1.0/tutorial/index.html"><strong>The Java Web Services Tutorial</strong></a>.
-    This document is also available for download in
-    <a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/JavaWSTutorial.pdf">PDF</a> format.
-    </p>
-
-    <p>If you've created web applications for other platforms, you may be able to follow along
-    and visit the other references as needed. The core technologies used by Struts are
-    also used by most other Java web development products, so the background information will be
-    useful in any Java project.
-    </p>
-
-    <p id="jt">If you are not familiar with the Java language generally,
-    then the best starting point is
-    <a href="http://java.sun.com/docs/books/tutorial/index.html"><strong>The Java Tutorial</strong></a>.
-    This overlaps with the Java Web Services Tutorial in some places, but the two work well together.
-    </p>
-
-      <p>
-          For more about building Java application in general, see the
-          <a href="http://developer.java.sun.com/developer/onlineTraining/new2java/divelog/part1/toc.jsp">New to
-          Java</a> tutorial.
-      </p>
-
-    </section>
-
-    <section name="0.2 HTTP, HTML and User Agents" href="http">
-
-    <p>The World Wide Web was built over the Hypertext Transfer Protocol
-    (<a href="http://www.ietf.org/rfc/rfc2616.txt?number=2616">HTTP</a>) and the Hypertext Markup Language
-    (<a href="http://www.w3.org/MarkUp/">HTML</a>). A User Agent, like a web browser, uses HTTP to request
-     a HTML document. The browser then formats and displays the document to its user. HTTP is used to
-    transport more than HTML, but HTML is the lingua franca of the Web and web applications. </p>
-
-    <p>While building web applications, some Java developers will write their own HTML. Others leave that responsibility to the
-    page designers.</p>
-
-    <p>For more about HTTP, HTML, and User Agents, see:</p>
-
-    <ul>
-    <li><a href="http://www.w3.org/MarkUp/Guide/"><strong>Getting started with HTML</strong></a> by Dave Raggett</li>
-    <li><a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/HTTP.html#63796">
-    <strong>HTTP Overview</strong></a> in the Java Web Services Tutorial.</li>
-    <li><a href="http://www.rfc-editor.org/rfc/rfc2616.txt"><strong>HTTP/1.1
-        </strong></a> Specification</li>
-    <li><a href="http://www.rfc-editor.org/rfc/rfc2617.txt"><strong>HTTP
-        Basic and Digest Authentication</strong></a> Specification</li>
-    <li><a href="http://www.rfc-editor.org/rfc/rfc2109.txt"><strong>State
-        Management Mechanism</strong></a> Specification (Cookies)</li>
-    </ul>
-    </section>
-
-    <section name="0.3 The HTTP Request/Response cycle" href="cycle">
-
-    <p>A very important part of HTTP for the web developer is the request/response cycle. To use HTTP
-    you have to make a request. A HTTP server, like a web server, is then obliged to respond. When you
-    build your web application, you design it to react to a HTTP request by returning a HTTP response.
-    Frameworks like Struts abstract much of these nuts and bolts, but it is important to understand
-    what is happening behind the scenes. </p>
-
-    <p>If you are not familiar with the HTTP request/response cycle, we <strong>strongly</strong> recommend the
-    <a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/HTTP.html#63796">
-    HTTP Overview</a> in the Java Web Services Tutorial.
-    </p>
-
-    </section>
-
-    <section name="0.4 The Java Language and Application Frameworks" href="java">
-
-    <p>Struts is written in the popular and versatile
-    <a href="http://java.sun.com/docs/books/jls/first_edition/html/index.html">Java programming language</a>.
-    Java is an object-orientated language, and Struts makes good use of many
-    object-orientated techniques.  In addition, Java natively supports the
-    concept of <em>threads</em>, which allows more than one task to be
-    performed at the same time.  A good understanding of Java, and especially
-    object-orientated programming (OOP) and threading, will help
-    you get the most out of Struts and this User Guide. </p>
-
-    <p>For more about Java and threads, see </p>
-
-    <ul>
-    <li><a href="http://java.sun.com/docs/books/tutorial/java/index.html"><strong>Learning the Java Language</strong></a> in the Java Tutorial</li>
-    <li><a href="http://java.sun.com/docs/books/tutorial/essential/threads/index.html">
-        <strong>Threads: Doing Two or More Tasks At Once</strong></a> in the Java Language
-        Tutorial</li>
-    </ul>
-
-    <p>Even if you have worked with Java and OOP before, it can also help to be aware of the
-    programming challenges specific to creating and using application frameworks. For more about application
-    frameworks, see the classic white papers</p>
-
-    <ul>
-    <li><a href="http://www.laputan.org/drc/drc.html"><strong>Designing Reusable Classes</strong></a> by Ralph E. Johnson &amp; Brian Foote</li>
-    <li><a href="http://www.cs.wustl.edu/~schmidt/CACM-frameworks.html"><strong>Object-Oriented Application Frameworks</strong></a>
-    by Mohamed Fayad and Douglas C. Schmidt</li>
-    </ul>
-
-    <p>These papers can be especially helpful if you are
-    <a href="http://www.waferproject.org/index.html">fact-finding or reviewing</a>
-    server-side
-    <a href="http://directory.google.com/Top/Computers/Programming/Languages/Java/Server-Side/Libraries_and_Frameworks/">frameworks</a>.
-    </p>
-
-    </section>
-
-    <section name="0.5 JavaBeans" href="javabeans">
-
-    <p>Like many Java applications, most of the Struts objects are designed as
-    <a href="http://java.sun.com/products/javabeans/">JavaBeans</a>. Following the JavaBean design patterns makes
-    the Struts classes easier to use -- both by Java developers and by Java development tools. </p>
-
-    <p>Although JavaBeans were first created for visual elements, these object design patterns have been found to
-    be useful as the basis for any reusable component, like those used by the Struts framework.</p>
-
-    <p>For more about JavaBeans, see:</p>
-
-    <ul>
-    <li><a href="http://java.sun.com/products/javabeans/docs/"><strong>The
-        JavaBeans Component Architecture Documentation</strong></a> page at
-        <code>java.sun.com</code>, including a link to download the
-        <a href="http://java.sun.com/products/javabeans/docs/spec.html">
-        JavaBeans 1.01 Specification</a></li>
-    <li><a href="http://java.sun.com/docs/books/tutorial/javabeans/index.html">
-        <strong>The JavaBean Trail</strong></a> in the Java Tutorial</li>
-    <li><a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/JSPBeans.html">
-        <strong>JavaBeans Components in JSP Pages</strong></a> in the Java Web Services Tutorial
-        </li>
-    </ul>
-
-    </section>
-
-    <section name="0.5.1 Reflection and Introspection" href="reflection">
-
-    <p>
-    Reflection is the process of determining which member fields and methods are available on an object.
-    Introspection is a specialized form of reflection used  by the JavaBean API.
-    Using Introspection, we can determine which methods of a JavaBean are intended to be accessed by other objects.
-    (The getters and the  setters, for example.)
-    </p>
-
-    <p>
-    The Struts framework uses Introspection to convert HTTP parameters into JavaBean properties and to populate HTML fields from JavaBean properties.
-    This technique makes it easy to "roundtrip" properties between HTML forms and JavaBeans.
-    </p>
-
-    <p>
-    For more about Reflection and Introspection, see
-    </p>
-
-    <ul>
-    <li>
-    <a href="http://java.sun.com/docs/books/tutorial/reflect/">The Reflection Trail</a>
-    </li>
-    <li>
-    <a href="http://java.sun.com/products/javabeans/docs/spec.html">Chapter 8 of the JavaBeans API Specification</a>
-    </li>
-    </ul>
-
-    </section>
-
-    <section name="0.5.2 Maps" href="Maps">
-
-    <p>
-    JavaBeans store data as properties and may act on that data through other methods.
-    JavaBeans are flexible and powerful objects but are not the only object that programmers use to store data.
-    Another popular object is the Map [<code>java.util.Map</code>].
-    A Map is a simple collection of name and value pairs.
-    Maps are often used "behind the scenes" as a flexible way to store dynamic data.
-    </p>
-
-    </section>
-
-    <section name="0.5.3 DynaBeans" href="dynabeans">
-
-    <p>
-    DynaBeans combine the extensibility of JavaBeans with the flexibility of a Map.
-    Defining even the simplest JavaBean requires defining a new class and coding a field and two methods for each property.
-    The properties of a DynaBean can be configured via an XML descriptor.
-    The virtual properties of a DynaBean can't be called by standard Java methods,
-    but work well with components that rely on reflection and introspection.
-    </p>
-
-    <p>
-    In a Struts application, you can use DynaBeans to describe your HTML forms.
-    This strategy can avoid creating a formal JavaBean subclass to store a few simple properties.
-    </p>
-
-    <p>
-    For more about DynaBeans, see
-    </p>
-
-    <ul>
-    <li>
-    The Commons BeanUtils
-    <a href="http://jakarta.apache.org/commons/beanutils/api/org/apache/commons/beanutils/package-summary.html#package_description">
-    Package Description</a> and <a href="http://jakarta.apache.org/commons/beanutils/api/index.html">Javadocs</a>.
-    </li>
-    </ul>
-
-    </section>
-
-    <section name="0.6 Properties Files and ResourceBundles" href="resources">
-
-    <p>Java applications, including web applications, are often configured using
-    <a href="http://java.sun.com/j2se/1.4.1/docs/api/java/util/Properties.html">Properties</a>
-    files. Properties files are the basis for the
-    <a href="http://java.sun.com/j2se/1.4.1/docs/api/java/util/ResourceBundle.html">ResourceBundles</a> that Struts uses to provide message resources
-    to an application. </p>
-
-    <p>For more about Properties files, see: </p>
-
-    <ul>
-    <li><a href="http://java.sun.com/docs/books/tutorial/essential/attributes/properties.html">
-    <strong>Using Properties to Manage Program Attributes</strong></a> in The Java Tutorial</li>
-    </ul>
-
-    <p>Java ResourceBundles use one or more Properties files to provide internationalized messages
-    to users based their
-    <a href="http://java.sun.com/j2se/1.4.1/docs/api/java/util/Locale.html">Locale</a>.
-    Support for localizing an application was built into Struts from the ground-up.</p>
-
-    <p>For more about localization and ResourceBundles, see </p>
-
-    <ul>
-    <li><a href="http://java.sun.com/docs/books/tutorial/i18n/resbundle/concept.html"><strong>About the ResourceBundle Class</strong></a>
-    in the Java Tutorial</li>
-    </ul>
-
-    </section>
-
-    <section name="0.7 Java Servlets" href="servlets">
-    <p>
-    Since Java is an object-orientated language, the
-    <a href="http://java.sun.com/products/servlet/">Java Servlet</a>
-    platform strives to cast HTTP into an object-orientated form.
-    This strategy makes it easier for Java developers to concentrate on what they need their application to do --
-    rather than the mechanics of HTTP.
-    </p>
-
-    <p>
-    HTTP provides a standard mechanism for extending servers called the Common Gateway Interface, or CGI.
-    The server can pass a request to a CGI-aware program, and the program will pass back a response.
-    Likewise, a Java-aware server can pass a request to a servlet container.
-    The container can fulfill the request or it can pass the request back to the HTTP server.
-    The container decides whether it can handle the request by checking its list of servlets.
-    If there is a servlet registered for the request, the container passes the request to the servlet.
-    </p>
-
-    <p>
-    When a request comes in, the container checks to see if there is a servlet registered for that request.
-    If there is a match,
-    the request is given to the servlet.
-    If not, the request is returned to the HTTP server.
-    </p>
-
-    <p>
-    It's the container's job to manages the servlet lifecycle.
-    The container creates the servlets, invokes the servlets, and ultimately disposes the servlets.
-    </p>
-
-    <p>
-    A servlet is generally a subclass of <code>javax.servlet.http.HttpServlet</code>.
-    A servlet must implement four methods, which are invoked by the container as needed:
-    </p>
-
-      <ul>
-      <li><strong>public void init(ServletConfig config)</strong> - Called by the
-          servlet container when the servlet instance is first created, and
-          before any request is processed.</li>
-      <li><strong>public void doGet(HttpServletRequest request,
-          HttpServletResponse response)</strong> - Called to process a
-          specific request received using the HTTP <code>GET</code> protocol,
-          which generates a corresponding dynamic response.</li>
-      <li><strong>public void doPost(HttpServletRequest request,
-          HttpServletResponse response)</strong> - Called to process a
-          specific request received using the HTTP <code>POST</code> protocol,
-          which generates a corresponding dynamic response.</li>
-      <li><strong>public void destroy()</strong> - Called by the servlet
-          container when it takes this servlet instance out of service,
-          such as when a web application is being undeployed or when the
-          entire container is being shut down.</li>
-      </ul>
-
-    <p>
-    Struts provides a ready-to-use servlet for your application [<code>org.apache.struts.action.ActionServlet</code>].
-    As a Struts developer, you can then just write objects that the Struts ActionServlet calls when needed.
-    But it is still helpful to understand the basics of what servlets are,
-    and the role they play in a Java web application.
-    </p>
-
-    <p>
-    For more about Java Servlets, see:
-    </p>
-
-    <ul>
-    <li><a href="http://java.sun.com/products/servlet/"><strong>The
-        Java Servlet Technology</strong></a> page at
-        <code>java.sun.com</code></li>
-    <li><a href="http://java.sun.com/products/servlet/download.html"><strong>The
-        Servlet 2.2 and 2.3 Specifications</strong></a> download page at
-        <code>java.sun.com</code></li>
-    <li><a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/Servlets.html">
-        <strong>Java Servlet Technology</strong></a> in the Java Web Services Tutorial.</li>
-    <li><a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/WebApp.html">
-        <strong>Web Applications</strong></a> in the Java Web Services Tutorial.</li>
-    </ul>
-
-    </section>
-
-    <section name="0.7.1 Servlets and threads" href="threads">
-
-    <p>
-    To boost performance, the container can multi-thread servlets.
-    Only one instance of a particular servlet is created,
-    and each request for that servlet passes through the same object.
-    This strategy helps the container make the best use of available resources.
-    The tradeoff is that the servlet's <code>doGet()</code> and <code>doPost()</code> methods must be programmed in a <em>thread-safe</em> manner.
-    </p>
-
-    <p>
-    For more about servlets and thread-safety, see:
-    </p>
-
-    <ul>
-    <li>
-    <a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/Servlets5.html#64386">Controlling Concurrent Access to Shared Resources</a> in Java Web Services Tutorial.
-    </li>
-    </ul>
-
-    </section>
-
-      <section name="0.7.2 Servlet Context" href="context">
-
-      <p>The <em>ServletContext</em> interface [<code>javax.servlet.ServletContext</code>] defines a servlet's view of
-      the web application within which the servlet is running.  It is
-      accessible in a servlet via the <code>getServletConfig()</code> method,
-      and in a JSP page as the <code>application</code> implicit variable.
-      Servlet contexts provide several APIs that are very useful in building
-      Struts based web applications:</p>
-      <ul>
-      <li><em>Access To Web Application Resources</em> - A servlet can
-          access static resource files within the web application using the
-          <code>getResource()</code> and <code>getResourceAsStream()</code>
-          methods.</li>
-      <li><em>Servlet Context Attributes</em> - The context makes available
-          a storage place for Java objects, identified by string-valued keys.
-          These attributes are global to the entire web application, and may
-          be accessed by a servlet using the <code>getAttribute()</code>,
-          <code>getAttributeNames()</code>, <code>removeAttribute()</code>, and
-          <code>setAttribute()</code> methods.  From a JSP page, servlet
-          context attributes are also known as "application scope beans".
-          </li>
-      </ul>
-
-    <p>
-    For more about the servlet context, see:
-    </p>
-
-    <ul>
-    <li>
-    <a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/Servlets10.html#64724">Accessing the Web Context</a> in Java Web Services Tutorial.
-    </li>
-    </ul>
-
-      </section>
-
-      <section name="0.7.3 Servlet Request" href="request">
-
-      <p>Each request processed by a servlet is represented by a Java
-      interface, normally a <code>HttpServletRequest</code>
-      [<code>javax.servlet.http.HttpServletRequest</code>].
-      The request interface provides an object-oriented mechanism to access
-      all of the information that was included in the underlying HTTP request,
-      including:</p>
-      <ul>
-      <li><em>Cookies</em> - The set of cookies included with this request
-          are available via the <code>getCookies()</code> method.</li>
-      <li><em>Headers</em> - HTTP headers that were included with
-          the request are accessible by name. You can enumerate the names
-          of all included headers.</li>
-      <li><em>Parameters</em> - Request parameters, including those from
-          the query string portion of the URL and from the embedded content
-          of the request (POST only) are available by name.</li>
-      <li><em>Request Characteristics</em> - Many other characteristics
-          of the incoming HTTP request, such as the method used (normally
-          GET or POST) the protocol scheme used ("http" or "https"), and
-          similar values.</li>
-      <li><em>Request URI Information</em> - The original request URI
-          being processed is available via <code>getRequestURI()</code>.
-          In addition, the constituent parts into which the servlet container
-          parses the request URI (contextPath, servletPath, and pathInfo) are
-          available separately.</li>
-      <li><em>User Information</em> - If you are using
-          <a href="#security">Container Managed Security</a>, you can ask for
-          the username of the authenticated user, retrieve a
-          <code>Principal</code> object representing the current user, and
-          whether the current user is authorized for a specified role.</li>
-      </ul>
-
-      <p>In addition, servlet requests support <em>request attributes</em>
-      (from JSP, these are "request scope beans"), analogous to the servlet
-      context attributes described above. Request attributes are often used
-      to communicate state information from a business logic class that
-      generates it to a view component (such as a JSP page) that will use
-      the information to produce the corresponding response.</p>
-
-      <p>The servlet container guarantees that a particular request will
-      be processed by a servlet on a single thread. Therefore, you do not
-      generally have to worry about the thread safety of your access to
-      request properties and attributes.</p>
-
-    <p>
-    For more about the servlet request, see:
-    </p>
-
-    <ul>
-    <li>
-    <a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/Servlets7.html#64433">Getting Information from Requests</a> in Java Web Services Tutorial.
-    </li>
-    </ul>
-
-      </section>
-
-      <section name="0.7.4 Servlet Response" href="response">
-
-      <p>The primary purpose of a servlet is to process an incoming
-      <a href="#request">Servlet Request</a> [<code>javax.servlet.http.HttpServletRequest</code>]
-      and convert it into a
-      corresponding response. This is performed by calling appropriate
-      methods on the servlet response [<code>javax.servlet.http.HttpServletResponse</code>]
-      interface. Available methods let you:</p>
-      <ul>
-      <li><em>Set Headers</em> - You can set HTTP headers that will be
-          included in the response.  The most important header is the
-          <code>Content-Type</code> header, which tells your client what
-          kind of information is included in the body of this response.
-          This is typically set to <code>text/html</code> for an HTML page,
-          or <code>text/xml</code> for an XML document.</li>
-      <li><em>Set Cookies</em> - You can add cookies to the current
-          response.</li>
-      <li><em>Send Error Responses</em> - You can send an HTTP error status
-          (instead of a usual page of content) using
-          <code>sendError()</code>.</li>
-      <li><em>Redirect To Another Resource</em> - You can use the
-          <code>sendRedirect()</code> method to redirect the client to
-          some other URL that you specify.</li>
-      </ul>
-
-      <p>An important principle in using the servlet response APIs is that
-      any methods you call to manipulate headers or cookies
-      <strong>MUST</strong> be performed before the first buffer-full of
-      content has been flushed to the client. The reason for this restriction
-      is that such information is transmitted at the beginning of the HTTP
-      response, so trying things like adding a header after the headers have
-      already been sent will not be effective.</p>
-
-      <p>
-      When you are using presentation pages in a Model 2 application,
-      you will not generally use the servlet response APIs directly.
-      In the case of JavaServerPages, the JSP page compiler
-      in your servlet container will convert your page into a servlet.
-      The JSP servlet renders the response, interspersing dynamic
-      information where you have interposed JSP custom tags.
-      </p>
-
-      <p>
-      Other presentation systems, like Velocity Tools for Struts,
-      may delegate rendering the response to a specialized servlet,
-      but the same pattern holds true.
-      You create a template,
-      and the dynamic response is generated automatically from the template.
-      </p>
-
-    <p>
-    For more about the servlet response, see:
-    </p>
-
-    <ul>
-    <li>
-    <a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/Servlets7.html#64531">Constructing Responses</a> in Java Web Services Tutorial.
-    </li>
-    </ul>
-
-      </section>
-
-      <section name="0.7.5 Filtering" href="filter">
-
-      <p>If you are using a servlet container based on version
-      <strong>2.3</strong> or later of the Servlet Specification (such as
-      Tomcat 4.x), you can take advantage of the new Filter APIs
-      [<code>javax.servlet.Filter</code>] that
-      let you compose a set of components that will process a request or
-      response. Filters are aggregated into a chain in which each filter
-      has a chance to process the request and response before and after
-      it is processed by subsequent filters (and the servlet that is ultimately
-      called).</p>
-
-      <p>
-          The Struts 1.x series (versions 1.0, 1.1, and so forth) require only version 2.2 or later of the Servlet
-          Specification to be implemented by your servlet container, so Struts does not itself utilize Filters
-          at this time.
-          The next generation of Struts (the 2.x series) will be based on Servlet 2.3 or later.
-          It is likely that the Struts 2.x release series will utilize filters.
-      </p>
-
-      <p>
-      For more about filters, see:
-      </p>
-
-    <ul>
-    <li>
-    <a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/Servlets8.html#64572">Filtering Requests and Responses</a>
-    </li>
-    </ul>
-
-      </section>
-
-      <section name="0.7.6 Sessions" href="session">
-
-      <p>One of the key characteristics of HTTP is that it is
-      <em>stateless</em>. In other words, there is nothing built in to
-      HTTP that identifies a subsequent request from the same user as being
-      related to a previous request from that user. This makes building an
-      application that wants to engage in a conversation with the user over
-      several requests to be somewhat difficult.</p>
-
-      <p>To alleviate this difficulty, the servlet API provides a programmatic
-      concept called a <em>session</em>, represented as an object that
-      implements the <code>javax.servlet.http.HttpSession</code> interface.
-      The servlet container will use one of two techniques (cookies or
-      URL rewriting) to ensure that the next request from the same user will
-      include the <em>session id</em> for this session, so that state
-      information saved in the session can be associated with multiple
-      requests. This state information is stored in <em>session
-      attributes</em> (in JSP, they are known as "session scope beans").</p>
-
-      <p>To avoid occupying resources forever when a user fails to complete
-      an interaction, sessions have a configurable <em>timeout interval</em>.
-      If the time gap between two requests exceeds this interval, the session
-      will be timed out, and all session attributes removed. You define a
-      default session timeout in your web application deployment descriptor,
-      and you can dynamically change it for a particular session by calling
-      the <code>setMaxInactiveInterval()</code> method.</p>
-
-      <p>Unlike requests, you need to be concerned about thread safety on
-      your session attributes (the methods these beans provide, not the
-      <code>getAttribute()</code> and <code>setAttribute()</code> methods
-      of the session itself). It is surprisingly easy for there to be
-      multiple simultaneous requests from the same user, which will therefore
-      access the same session.</p>
-
-      <p>Another important consideration is that session attributes occupy
-      memory in your server <em>in between</em> requests. This can have
-      an impact on the number of simultaneous users that your application can
-      support. If your application requirements include very large numbers of
-      simultaneous users, you will likely want to minimize your use of
-      session attributes, in an effort to control the overall amount of memory
-      required to support your application.</p>
-
-      <p>
-      For more about sessions, see:
-      </p>
-      <ul>
-        <li>
-        <a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/Servlets11.html#64744">Maintaining Client State</a> in Java Web Services Tutorial
-        </li>
-        <li>
-        <a href="http://java.sun.com/products/servlet/2.1/api/javax.servlet.http.HttpSession.html"><code>javax.servlet.http.HttpSession</code></a>
-        </li>
-      </ul>
-
-      </section>
-
-      <section name="0.7.7 Dispatching Requests" href="dispatch">
-
-      <p>
-      The Java Servlet specification extends the HTTP request/response cycle by allowing the request to be dispatched,
-      or forwarded, between resources.
-      Struts uses this feature to pass a request through specialized components,
-      each handling one aspect of the response.
-      In the normal course, a request may pass through a controller object, a model object,
-      and finally to a view object as part of a single request/response cycle.
-      </p>
-
-      </section>
-
-      <section name="0.7.8 Web Applications" href="webapp">
-
-      <p>
-      Just as a HTTP server can be used to host several distinct web sites,
-      a servlet container can be used to host more than one web application.
-      The Java servlet platform provides a well-defined mechanism for organizing and deploying web applications.
-      Each application runs in its own namespace so that they can be developed and deployed separately.
-      A web application can be assembled into a Web Application Archive, or WAR file.
-      The single WAR can be uploaded to the server and automatically deployed.
-      </p>
-
-    <p>
-    For more about web applications, see:
-    </p>
-    <ul>
-    <li>
-        <a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/WebApp.html#76431">Web Applications</a> in Java Web Services Tutorial
-    </li>
-    </ul>
-
-      </section>
-
-      <section name="0.7.9 Web application deployment descriptor (web.xml)" href="events">
-
-      <p>
-      Most aspects of an application's lifecycle are configured through an XML document called the Web application deployment descriptor.
-      The schema of the descriptor, or web.xml, is given by the Java servlet specification.
-      </p>
-
-      <p>
-      For more about the web.xml and application lifecycle events, see:
-      </p>
-      <ul>
-      <li>
-      <a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/WebApp2.html#64550">Web Application Life Cycle</a> in Java Web Services Tutorial
-      </li>
-      </ul>
-
-      </section>
-
-    <section name="0.7.10 Security" href="security">
-
-    <p>
-    One detail that can be configured in the Web application deployment descriptor is container-managed security.
-    Declarative security can be used to protect requests for URIs that match given patterns.
-    Pragmatic security can be used to fine-tune security make authorization decisions based on the time of day,
-    the parameters of a call, or the internal state of a Web component.
-    It can also be used to restrict authentication based on information in a database.
-    </p>
-
-      <p>For more information about container-managed security, see:</p>
-      <ul>
-      <li><a href="http://java.sun.com/webservices/docs/1.2/tutorial/doc/index.html">
-          Web Application Security (Chapter 24)</a> in the Java Web Services Tutorial
-      </li>
-      </ul>
-
-    </section>
-
-    <section name="0.8 JavaServer Pages, JSP Tag Libraries, and Java Server Faces" href="jsp">
-    <p><a href="http://java.sun.com/products/jsp/product.html">JavaServer Pages</a> (JSPs) are
-    "inside-out servlets" that make it easier to create and maintain dynamic web pages. Instead
-    of putting what you want to write to the HTTP response inside of a Java <code>print</code>
-    statement, everything in a JavaServer Page is written to the response, <strong>except</strong> what is
-    placed within special Java statements.</p>
-
-    <p>With <strong>JavaServer Pages</strong> you can start by writing the page in standard HTML and then add the
-    dynamic features using statements in the Java language or by using
-    <a href="http://java.sun.com/products/jsp/taglibraries.html">JSP tags</a>.
-    The Struts distribution includes several JSP tags that make it easy to access the framework's
-    features from a JavaServer Page.</p>
-
-    <p>For more about JavaServerPages and Custom JSP Tag Libraries see  </p>
-
-    <ul>
-    <li><a href="http://java.sun.com/products/jsp/"><strong>The
-        JavaServer Pages Technology</strong></a> page at
-        <code>java.sun.com</code></li>
-    <li><a href="http://java.sun.com/products/jsp/download.html"><strong>The
-        JSP 1.1 and 1.2 Specifications</strong></a> download page at
-        <code>java.sun.com</code></li>
-    <li><a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/JSPIntro.html"><strong>JavaServer Pages Technology</strong></a> in the Java Web Services Tutorial</li>
-    <li><a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/JSPTags.html"><strong>Custom Tags in JSP Pages</strong></a> in the Java Web Services Tutorial</li>
-    </ul>
-
-    <p>Many times, JSP tags work hand-in-hand with JavaBeans. The application sends a JavaBean to
-    the JSP, and the JSP tag uses the bean to customize the page for the instant user. For more, see
-    <a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/JSPBeans.html">JavaBeans Components in JSP Pages</a>
-    in the Java Web Services Tutorial.</p>
-
-    <p>Struts also works well with the new
-    <a href="http://java.sun.com/products/jsp/jstl"><strong>JavaServer Pages Standard Tag Library</strong></a>
-    (JSTL) and taglibs from other sources, like
-    <a href="http://jsptags.com/">JSP Tags</a> and
-    <a href="http://jakarta.apache.org/taglibs/index.html">Jakarta Taglibs</a>.
-    </p>
-
-    <p>
-        One of the contributed libraries available for Struts is <strong>Struts-EL</strong>.
-        This taglib is specifically designed to work well with JSTL.
-        In particular, it uses the same "expression language" engine for evaluating tag attribute values as JSTL.
-        This is in contrast to the original Struts tag library, which can only use "rtexprvalue"s (runtime scriptlet
-        expressions) for dynamic attribute values.
-    </p>
-
-    <p>There are also toolkits available that make Struts easy to use with
-    <a href="http://www.openroad.ca/opencode/">XSLT</a> and
-    <a href="http://jakarta.apache.org/velocity/index.html">Velocity Templates</a>.
-    </p>
-
-        <p>
-            The newest star on the Java horizon is <strong>Java Server Faces</strong>.
-            <a href="http://java.sun.com/j2ee/javaserverfaces/">JavaServer Faces technology</a> simplifies building
-            user interfaces for JavaServer applications, both for the web and for the desktop.
-            The JSF specification is still under development, although an early-release reference implementation is
-            available through the <a href="http://java.sun.com/webservices/download.html">Java Web Services Developer
-            Pack</a>.
-            Likewise, an early-release JavaServer Faces taglib for Struts,
-            <a href="http://archive.apache.org/dist/jakarta/struts/old/release/struts-faces/"><strong>Struts-Faces</strong></a>, is
-            also in early release and available through the nightly build.
-       </p>
-
-        <p>
-            Java Server Faces is very compatible with Struts.
-            Additional Struts/JSF integration tools are sure to appear as the specification is finalized and comes into
-            widespread use.
-        </p>
-
-        <p>For more about JSTL and JavaServer Faces see  </p>
-
-       <ul>
-           <li>
-               <a href="http://today.java.net/pub/a/today/2003/10/07/jstl1.html">Practical JSTL, Part 1</a> by Sue Spielman
-           </li>
-           <li>
-               <a href="http://www.jsfcentral.com"><strong>JSF Central</strong></a> - JavaServer Faces resources.
-            </li><li>
-               <a href="http://www.jamesholmes.com/JavaServerFaces/"><strong>JavaServer Faces Resources</strong></a> - James Holmes dot Com.
-           </li>
-       </ul>
-
-    </section>
-
-    <section name="0.9 Extensible Markup Language (XML)" href="xml">
-
-    <p>The features provided by the Struts framework relies on a number of objects that are
-    usually deployed using a configuration file written in
-    <a href="http://www.w3.org/XML/">Extensible Markup Language</a>. XML is also used to
-    configure Java web applications; so, this is yet another familiar approach.
-    </p>
-
-    <p>For more about XML configuration files and Java web applications, see</p>
-
-    <ul>
-    <li>
-        <a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/WebApp4.html#64678">Configuring Web
-        Applications</a> in the Java Web Services Tutorial</li>
-    </ul>
-
-    <p>
-        For more about how XML is used with Java applications generally, see
-        <a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/JAXPIntro.html">Java API for XML Processing</a>
-        in the Java Web Services Tutorial.
-        While the framework makes good use of this API internally, it is not something most Struts developers would use
-        when writing their own applications.
-    </p>
-
-    </section>
-
-        <section name="0.9.1 Descriptors" href="descriptors">
-
-        <p>
-        When Java applications use XML configuration files,
-        the elements are most often used as <em>descriptors</em>.
-        The application does not use the XML elements directly.
-        The elements are used to create and configure (or deploy) Java objects.
-        </p>
-
-        <p>
-        The Java Servlet platform uses an XML configuration file to deploy servlets (among other things).
-        Likewise, Struts uses an XML configuration file to deploy objects used by the framework.
-        </p>
-
-    </section>
-
-    <section name="0.10 Other layers" href="layers">
-
-    <p>
-      Struts provides the control layer for a web application. Developers can use this layer with
-      other standard technologies to provide the data access and presentation layers. Some
-      popular Data access technologies include:
-    </p>
-
-        <ul>
-            <li><a href="http://java.sun.com/products/ejb/index.html">Enterprise Java Beans</a></li>
-            <li><a href="http://sourceforge.net/projects/hibernate">Hibernate</a></li>
-            <li><a href="http://sourceforge.net/projects/ibatisdb">iBATIS</a></li>
-            <li><a href="http://java.sun.com/products/jdbc/index.html">JDBC</a></li>
-            <li><a href="http://db.apache.org/ojb/">Object Relational Bridge</a></li>
-        </ul>
-
-    <p>
-      Presentation layer technologies include:
-    </p>
-
-        <ul>
-        <li><a href="http://java.sun.com/products/jsp">JavaServer Pages</a></li>
-        <li><a href="http://jakarta.apache.org/velocity/index.html">Velocity Templates</a></li>
-        <li><a href="http://www.w3.org/TR/xslt">XSL Transformations </a></li>
-        </ul>
-
-    </section>
-
-    <section name="0.11 JAAS" href="jaas">
-
-    <p>
-        While Struts can work with any approach to user authentication and authorization, Struts 1.1 and later offers
-        direct support for the standard Java Authentication and Authorization Service (JAAS).
-        You can now specify security roles on an action-by-action basis.
-    </p>
-
-    <p>For more about JAAS, see the <a href="http://java.sun.com/products/jaas/index-14.html">Javasoft product page</a>
-    and the <a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/WebAppSecurity.html">
-    Web Application Security</a> chapter of the
-    <a href="http://java.sun.com/webservices/docs/1.0/tutorial/index.html">Java Web Services Tutorial</a>.</p>
-
-</section>
-
-<section>
-    <p class="right">
-    Next: <a href="introduction.html">Introduction</a>
-    </p>
-</section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/project.xml b/build-legacy/core/xdocs/userGuide/project.xml
deleted file mode 100644
index 9abbcce..0000000
--- a/build-legacy/core/xdocs/userGuide/project.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<project name="Struts User's Guide"
-         href="http://jakarta.apache.org/struts/userGuide"
-        image="../images/struts.gif"
-      authors="false">
-
-    <title>Getting Started</title>
-    
-    <menu name="User Guide">
-      <item 
-        name="Table of Contents"     
-        href="index.html"/>
-      <item 
-        name="Preface"               
-        href="preface.html"/>
-      <item 
-        name="Introduction"          
-        href="introduction.html"/>
-      <item 
-        name="Model Components"      
-        href="building_model.html"/>
-      <item 
-        name="View Components"       
-        href="building_view.html"/>
-      <item 
-        name="Controller Components" 
-        href="building_controller.html"/>
-      <item 
-        name="Configuration"         
-        href="configuration.html"/>
-      <item 
-        name="Release Notes"         
-        href="release-notes.html"/>
-      <item 
-        name="Installation"          
-        href="installation.html"/>
-    </menu>
-
-    <menu name="Developer Guides">
-        <item 
-            name="Bean Tags"
-            href="dev_bean.html"/>
-        <item 
-            name="HTML Tags"
-            href="dev_html.html"/>
-        <item 
-            name="Logic Tags"
-            href="dev_logic.html"/>
-        <item 
-            name="Nested Tags"
-            href="dev_nested.html"/>
-        <item 
-            name="Tiles Tags"
-            href="dev_tiles.html"/>
-        <item 
-            name="Utilities"
-            href="dev_util.html"/>
-        <item 
-            name="Validator"
-            href="dev_validator.html"/>
-    </menu>
-
-    <menu name="Quick Links">
-        <item 
-            name="Welcome"                 
-            href="../index.html"/>
-        <item
-            name="User and Developer Guides *" 
-            href="index.html"/>
-        <item 
-            name="FAQs and HowTos"         
-            href="../faqs/index.html"/>
-    </menu>
-
-</project>
diff --git a/build-legacy/core/xdocs/userGuide/release-notes-1.0-b1.xml b/build-legacy/core/xdocs/userGuide/release-notes-1.0-b1.xml
deleted file mode 100644
index 6b87f4b..0000000
--- a/build-legacy/core/xdocs/userGuide/release-notes-1.0-b1.xml
+++ /dev/null
@@ -1,431 +0,0 @@
-<?xml version="1.0"?>
-<document url="release-notes-1.0-b1.html">
-
-  <properties>
-    <title>Struts Release Notes (Version 1.0-beta-1)</title>
-  </properties>
-
-  <body>
-
-  <section name="Introduction" href="Introduction">
-
-  <p>This document contains the release notes for
-  <strong>Version 1.0-beta-1</strong> of the Struts Framework.
-  The following sections cover
-  <a href="#New">New Features</a> and <a href="#Changes">Changes</a> since
-  the <strong>Version 0.5</strong> of Struts was made available.</p>
-
-  <p>One global new feature to take note of is that Struts 1.0 requires
-  a Java2 (JDK 1.2 or later) platform on which to run.</p>
-
-  </section>
-
-
-  <section name="What's New?" href="New">
-
-  <p>The following major new features have been added to the controller
-  servlet and associated classes
-  (package <code>org.apache.struts.action</code>):</p>
-  <ul>
-  <li>A new configuration file format, including the
-      <a href="../../dtds/struts-config_1_0.dtd">Document Type Definition (DTD)</a>
-      it is based on, is available for configuring the Struts controller
-      servlet.  Support for the previous format is still present, but will
-      be phased out by the 1.0 release.</li>
-  <li>If enabled by setting the <code>locale</code> servlet initialization
-      parameter to <code>true</code>, the controller servlet will now calculate
-      a Locale for this user (based on the Locale returned by the servlet
-      container, or by the HTTP headers included with the request)
-      and store it in the user's session, unless the application
-      has stored one there already.</li>
-  <li>Application <code>Action</code> instances now have lifecycle support.
-      The controller servlet will call <code>setServlet()</code> with a
-      non-null argument when the instance is first created, and call it with
-      a <code>null</code> argument when the instance is being shut down.</li>
-  <li>The collection of "standard" Struts actions (in package
-      <code>org.apache.struts.actions</code>) is kicked off with a set of
-      simple actions that allow on-the-fly changes in the form bean, forward,
-      and mapping definitions registered with the controller servlet.  These
-      actions would normally be configured behind security constraints to
-      prevent interference with the operation of your application but can be
-      very useful during development.</li>
-  <li>A new representation of error messages (<code>ActionError</code> and
-      <code>ActionErrors</code>) has been created that allows errors to be
-      associated with individual fields, and stores parameter replacement
-      values along with the messages keys.</li>
-  <li>The <code>ActionForm</code> interface has been converted to a base class,
-      with default implementations of some useful functionality.  In addition,
-      the new class provides two <code>validate()</code> methods that take
-      the current mapping and current request as arguments, in order to provide
-      access to more context information than just the properties of this
-      particular form bean.</li>
-  <li>The new <code>ActionForm</code> class also provides two
-      <code>reset()</code> methods that take the current mapping and current
-      request as arguments, in order to provide access to more context
-      information (particularly important on multi-page forms so that the form
-      bean knows which properties to reset).  Among other things, use of the
-      <code>reset()</code> methods can prevent problems with checkbox fields
-      -- simply reset boolean fields to <code>false</code> and they will be
-      set to <code>true</code> (during auto-population of the form bean
-      properties) only if the checkbox was actually checked.</li>
-  <li>All servlet context attributes created by the Struts controller servlet
-      itself (but not the Struts Example application) now implement
-      <code>java.io.Serializable</code>.</li>
-  <li>The <code>Action</code> class now includes support for "transactional
-      tokens", so that you can detect cases where the user submitted a form,
-      then went back and resubmitted the form again.</li>
-  </ul>
-
-  <p>The following major new features have been added to the
-  <em>struts-bean</em> custom tag library (package
-  <code>org.apache.struts.taglib.bean</code>):</p>
-  <ul>
-  <li>A new custom tag, <code>&lt;bean:page&gt;</code>, is available
-      to expose key items from the page context associated with the current
-      page as scripting variables, and as page-scope beans.  For example,
-      you can use the following sequence to render the server information
-      string returned by our servlet context:
-      <pre>
-      &lt;bean:page id="app" property="application"/&gt;
-      &lt;bean:write name="app" property="serverInfo"/&gt;
-      </pre></li>
-  <li>A new custom tag, <code>&lt;bean:struts&gt;</code>, is available
-      to expose internal Struts configuration objects (form bean, forward,
-      and mapping definitions) as scripting variables and page-scope beans.
-      For example, you can use the following sequence to render the actual
-      context-relative path of an <code>ActionForward</code> object:
-      <pre>
-      &lt;bean:struts id="link" forward="success"/&gt;
-      &lt;bean:write name="link" property="path"/&gt;
-      </pre></li>
-  <li>All of the tags in this library that accept a <code>name</code>
-      attribute referring to a JSP bean now also accept an optional
-      <code>scope</code> attribute to define the scope in which to search
-      for that bean.  If not specified, all scopes are searched.</li>
-  <li>The <code>&lt;bean:size&gt;</code> tag will create a bean that stores
-      the number of elements of an array, Collection, or Map.</li>
-  </ul>
-
-  <p>The <em>struts-html</em> custom tag library has been created (package
-  <code>org.apache.struts.taglib.html</code>), based on the old tags that
-  were related to HTML form presentation.  The following differences from
-  the old tags are notable:</p>
-  <ul>
-  <li>You must now reference the "struts-html.tld" TLD to access these
-      tags.</li>
-  <li>All attribute names matching JavaScript event handlers are now all
-      lower case (onClick --&gt; onclick) to conform to XHTML.</li>
-  <li>The <code>options1</code> tag has been eliminated since Struts is now
-      based on Java2.</li>
-  <li>All tag implementation classes have had their <code>final</code>
-      modifiers removed, and <code>private</code> instance variables
-      changed to <code>protected</code>.  This makes it possible to easily
-      subclass these tags to provide specialized functionality.</li>
-  <li>The <code>&lt;html:link&gt;</code> tag has been enhanced to support
-      a new <code>page</code> attribute that allows you to use
-      context-relative URIs in a portable manner.</li>
-  <li>A new <code>&lt;html:html&gt;</code> tag has been created that
-      renders an HTML <code>&lt;html&gt;</code> element with appropriate
-      <code>lang</code> and <code>xml:lang</code> attributes, based on the
-      locale stored for the user's session (if there is one).</li>
-  <li>A new <code>&lt;rewrite&gt;</code> tag has been created that
-      renders a request URI, possibly encoded with a session identifier,
-      based on exactly the same rules used by the <code>&lt;link&gt;</code>
-      tag that generates hyperlinks.  These constants can be useful when
-      you are creating JavaScript code that needs to be aware of Struts
-      addressing concepts.</li>
-  <li>The <code>options</code> tag now supports a new <code>collection</code> attribute,
-      which can be used to specify a collection whose beans have properties
-      that return the value (to be returned to the server) and the label (to
-      be displayed to the user) from a single collection.  The previous
-      support for processing parallel collections is still available.</li>
-  <li>The <code>form</code> tag has been enhanced to look up the name of the
-      form bean, it's Java class, and the scope in which the bean should be
-      created or accessed, from the corresponding action mapping entry in the
-      "struts-config.xml" file, if the <code>name</code>, <code>scope</code>,
-      and <code>type</code> attributes are not specified.  This removes the
-      need to make changes in two places when these values are changed.</li>
-  <li>A new <code>&lt;image&gt;</code> tag has been added, to create
-      HTML input tags of type "image".</li>
-<li>The <code>form</code> tag has been enhanced to read its configuration from 
-      a corresponding action mapping entry in the "struts-config.xml" file, 
-      if the <code>name</code>, <code>scope</code>, and <code>type</code> 
-      attributes are not specified. It can look up the name of the
-      form bean, its Java class, the scope in which the bean should be
-      created or accessed, plus the path to which the form should be
-      submitted. This removes the need to make changes in two places when these 
-      values are changed. It works for cases where the controller servlet is 
-      extension mapped or path mapped.</li>
-  <li>The <code>&lt;html:img&gt;</code> tag has been added, to render an HTML
-      <code>&lt;img&gt;</code> tag.</li>
-  </ul>
-
-  <p>A new package of Actions and associated classes for handling file uploads
-  has been created (package <code>org.apache.struts.upload</code>):</p>
-  <ul>
-  <li>The basic package of file upload handling actions has been created.</li>
-  <li>An example application illustrating the use of the new features
-      has been added (<code>webapps/struts-upload.war</code>).</li>
-  </ul>
-
-  <p>The following major new features have been added to the utility classes
-  library (package <code>org.apache.struts.util</code>):</p>
-  <ul>
-  <li>Initial implementation of a JDBC data source that implements the
-      <code>javax.sql.DataSource</code> interface from the JDBC 2.0 Standard
-      Extensions API.  This implementation may be configured based on new
-      extensions to the Struts configuration file DTD, and the configured
-      data sources / connection pools are made available to application
-      components as a servlet context attribute (i.e. an application scope
-      bean).</li>
-  <li>The previous implementation of <code>MessageResources</code>, which was
-      ultimately based on <code>java.util.ResourceBundle</code>, has been
-      completely replaced and re-implemented.  The primary features of the
-      new implementation are:
-      <ul>
-      <li>All components stored as servlet context attributes now implement
-          the <code>java.io.Serializable</code> interface, to better integrate
-          with application servers that prefer this.</li>
-      <li>The <code>MessageResources</code> and <code>MessageResourcesFactory</code>
-          classes have been abstracted so that you can easily create your
-          own implementations that derive their message strings from resources
-          other than property files.</li>
-      </ul></li>
-  <li>Property gets and sets made through <code>PropertyUtils</code> can now
-      use a new syntax for indexed and nested properties.</li>
-  <li>Conversion to and from numeric types now support a configurable default
-      value to use when conversion fails.</li>
-  </ul>
-
-  <p>The following major new features have been added to the
-  <em>Struts Example Application</em>:</p>
-  <ul>
-  <li>The form beans used in the example application now use request scope
-      rather than session scope.  This is the preferred approach for single
-      page forms that contain <em>all</em> of your relevant properties,
-      because there is no need to maintain such form beans across requests.
-      Note that the action classes have been coded so that they work with
-      either request scope or session scope beans.</li>
-  <li>The Struts Example Application has been updated to utilize the new
-      (separated) custom tag libraries, rather than the old combined one,
-      as well as the latest features of the tags being used.</li>
-  <li>A "Walking Tour of the Struts Example Application" has been added, to
-      highlight features for newcomers to Struts.</li>
-  </ul>
-
-  <p>The following major new documentation updates have been added to
-  Struts:</p>
-  <ul>
-  <li>All documentation is generated from XML input files, using a standard
-      stylesheet to create a common look and feel.</li>
-  <li>Developer Guides for the Java classes in the
-      <code>org.apache.struts.digester</code> and
-      <code>org.apache.struts.util</code> packages.</li>
-  <li>Developer Guides for the following Struts custom tag libraries have
-      been added:  <code>struts-bean</code>, <code>struts-html</code>,
-      <code>struts-logic</code>, and <code>struts-template</code>.</li>
-  <li>The Struts Users Guide has been brought up to date with respect to
-      all of the changes since Struts 0.5, and separated into multiple
-      HTML pages for easy reading.</li>
-  <li>Installation information has been updated to include platform-specific
-      notes, issues, and workarounds.</li>
-  <li>A new resources page now points at external information and resources
-      related to Struts.</li>
-  <li>A new example application, <code>struts-blank</code>, is included as a
-      quick starting point for new application development.</li>
-  </ul>
-
-  </section>
-
-
-  <section name="Changes and Bug Fixes" href="Changes">
-
-  <p>The following changes and bug fixes to the controller servlet and
-  associated classes (package <code>org.apache.struts.action</code>) have
-  occurred:</p>
-  <ul>
-  <li>The <code>ActionMapping</code> interface has been converted to a base
-      class instead, to reduce the impact of future enhancements.  Anyone who
-      has extended the <code>ActionMappingBase</code> convenience base class
-      (which has been deprecated) should extend <code>ActionMapping</code>
-      instead.</li>
-  <li>In conjunction with the new configuration file format mentioned above,
-      the properties of <code>ActionMapping</code> have been substantially
-      updated.  See the
-      <a href="../../api/org/apache/struts/action/ActionMapping.html">API
-      Documentation</a> for more information</li>
-  <li>The <code>Action</code> interface has been converted to a base class
-      instead, to reduce the impact of future enhancements.  Anyone who has
-      extended the <code>ActionBase</code> convenience base class (which
-      has been deprecated) should extend <code>Action</code> instead.</li>
-  <li>In conjunction with the above change, the <code>servlet</code>
-      argument has been removed from the parameter list for the
-      <code>perform()</code> method, because it is now redundant -- the
-      associated servlet is set via the <code>setServlet()</code> method
-      when the <code>Action</code> instance is first created.</li>
-  <li>Responsibility for creating <code>Action</code> instances has been moved
-      from <code>ActionMapping</code> to the controller servlet, so that
-      instance lifecycle management can be performed.  As a side effect of this
-      change, if you had two actions that used the same Action class name,
-      there will now be only one (shared) instance of the Action class,
-      rather than two.</li>
-  <li>New <code>log(String, int)</code> method that logs the associated message
-      only if you have configured the debugging detail level for the servlet to
-      an equal or higher value.</li>
-  <li>In <code>ActionServlet</code>, the functionality to populate form bean
-      parameters from a request, and the functionality to validate the form
-      bean's contents, has been separated into two methods that can be
-      overridden individually if required.</li>
-  <li>The <code>ActionServlet</code> functionality to call the
-      <code>validate()</code> method of a form bean is skipped if the user
-      pressed the Cancel key (i.e. the submit button created by the
-      <code>&lt;html:cancel&gt;</code> custom tag), or if the selected
-      mapping does not define an input form to return control to.</li>
-  <li>The controller servlet may now be used as the target of a
-      <code>RequestDispatcher.include()</code> or
-      <code>&lt;jsp:include/&gt;</code> call.  Previously, it would mistakenly
-      use the original request URI, rather than the included path, to calculate
-      which action class to execute.</li>
-  <li>The <code>ActionMappings.getUnknown()</code> method now takes the current
-      request as an parameter, so that context-sensitive decisions can be
-      made.</li>
-  <li>When the controller servlet processes an <code>ActionForward</code> that
-      has the <code>redirect</code> property set, it now performs URL rewriting
-      to maintain session state even if cookies are not being used.</li>
-  <li>The <code>ActionErrors</code> class now includes a method that will
-      return an Iterator over the error messages related to a particular
-      input field.</li>
-  </ul>
-
-  <p>The following changes and bug fixes to the Digester module
-  (package <code>org.apache.struts.digester</code>) have occurred:</p>
-  <ul>
-  <li>The <code>Digester.resolveEntity()</code> method has been enhanced
-      to correctly handle local URIs so that it works with resources loaded via
-      <code>Class.getResource()</code>.</li>
-  <li>The input source handed to the Digester is now closed, even if a
-      parsing exception is throw.</li>
-  </ul>
-
-  <p>The following changes and bug fixes to the <em>struts-bean</em> custom
-  tag library (package <code>org.apache.struts.taglib.bean</code>) have
-  occurred:</p>
-  <ul>
-  <li>By default, the <code>&lt;bean:write&gt;</code> tag will filter output
-      for characters sensitive to HTML.  You can turn this off by adding a
-      <code>filter="false"</code> attribute.</li>
-  <li>When performing a <code>&lt;bean:include&gt;</code> in a page that is
-      part of a session, pass the session identifier along on the generated
-      request so that it will be part of the same session.</li>
-  <li>The <code>&lt;bean:define&gt;</code> tag can now create
-      beans directly from the <code>value</code> attribute, if desired.</li>
-  <li>The <code>&lt;bean:define&gt;</code> tag now accepts an optional
-      <code>toScope</code> attribute, to declare which scope the new bean
-      should be created in.  The default remains <code>page</code> scope.</li>
-  <li>Default values can now be specified on <code>&lt;bean:cookie&gt;</code>,
-      <code>&lt;bean:header&gt;</code>, and
-      <code>&lt;bean:parameter&gt;</code> tags, which are used when the
-      corresponding value is not present in the current request.</li>
-  </ul>
-
-  <p>The following changes and bug fixes to the <em>struts-html</em> custom
-  tag library (package <code>org.apache.struts.taglib.html</code>) have
-  occurred:</p>
-  <ul>
-  <li><strong>WARNING</strong> - When the Struts 0.5 tag library was originally
-      split into separate libraries, this library was named
-      <em>struts-form</em>, to reflect the fact that the majority of tags
-      related to creating input forms.  It has been renamed to
-      <em>struts-html</em> to reflect the fact that all of the tags in this
-      library are relevant only when building HTML-based user interfaces.</li>
-  <li>The <code>&lt;html:html&gt;</code> tag now supports a
-      <code>locale="true"</code> attribute that requests the same Locale
-      negotiation (based on the presence of an <code>Accept-Language</code>
-      header) that is performed by the controller servlet.</li>
-  <li>The <code>&lt;html:link&gt;</code> tag now supports the ability to add
-      a single request parameter (based on a bean property) in addition to the
-      ability to add request parameters from a Map.</li>
-  <li>The <code>&lt;html:errors&gt;</code> tag lets you select only the error
-      messages related to a particular input field, or all errors.</li>
-  <li>The <code>&lt;html:password&gt;</code> tag now optionally redisplays
-      the previous value of the input field.</li>
-  <li>The value returned by a <code>&lt;html:multibox&gt;</code> tag can now
-      be specified in the body of the tag, as well as via the
-      <code>value</code> attribute.</li>
-  </ul>
-
-  <p>The following changes and bug fixes to the <em>struts-logic</em>
-  custom tag library (package <code>org.apache.struts.taglib.logic</code>)
-  have occurred:</p>
-  <ul>
-  <li>The <code>&lt;logic:present&gt;</code> and
-      <code>&lt;logic:notPresent&gt;</code> tags now accept a <code>role</code>
-      attribute that allows you to detect whether the currently authenticated
-      user does, or does not, possess a particular security role.</li>
-  </ul>
-
-  <p>The following changes and bug fixes to the <em>struts-template</em>
-  custom tag library (package <code>org.apache.struts.taglib.template</code>)
-  have occurred:</p>
-  <ul>
-  <li>The <code>&lt;template:put&gt;</code> tag now accepts a
-      <code>direct</code> attribute that causes the content being put to be
-      rendered directly, rather than being included.</li>
-  </ul>
-
-  <p>The following changes and bug fixes to the Utilities package
-  (package <code>org.apache.struts.util</code>) have occurred:</p>
-  <ul>
-  <li>Fixed <code>PropertyUtils.getPropertyType()</code> to correctly return
-      the underlying element type even if there was a non-indexed property
-      getter method.</li>
-  <li>Added a missing "return" statement to
-      <code>PropertyUtils.setIndexedProperty()</code>.</li>
-  <li>Functionality in <code>BeanUtils</code> that previously duplicated
-      functionality that was earlier moved to <code>PropertyUtils</code>
-      has been removed.</li>
-  <li>Fixed <code>PropertyUtils.copyProperties()</code> to skip cases where
-      the origin bean has a getter method but the destination bean does not
-      have a setter method.</li>
-  <li>Added <code>BeanUtils.cloneBean()</code> to create a new instance of
-      an existing bean, and copy all known properties, even if the bean class
-      does not implement <code>Cloneable</code>.</li>
-  <li>The <code>BeanUtils</code> class has been refactored so that it, and
-      the associated <code>ConvertUtils</code> and <code>PropertyUtils</code>
-      classes, can easily be used without having to have the servlet API
-      classes available on the classpath.</li>
-  <li>Property introspection is now smarter, so that you can access public
-      methods declared in an implemented interface, even if the class itself
-      is not public.</li>
-  </ul>
-
-  <p>The following changes and bug fixes to the Struts Example Application
-  (package <code>org.apache.struts.example</code> and the corresponding web
-  components) have occurred:</p>
-  <ul>
-  <li>Used the <code>reset()</code> methods defined by the
-      <code>ActionForm</code> interface to reset form bean properties to
-      default values.  This is particularly important to make boolean
-      properties (represented visually by checkboxes) work correctly.</li>
-  <li>Eliminate the special-case handling of null String values in the
-      form beans.  Such handling is not necessary because the custom tags
-      correctly deal with null String values.</li>
-  <li>Use the <code>PropertyUtils.copyProperties()</code> method to initially
-      populate form beans from underlying data objects, and to update date
-      objects when a transaction is successfully completed.  Note that using
-      this approach dramatically lessens an action class's dependence on the
-      specific properties of the form bean and corresponding data object
-      in many use cases.</li>
-  <li>Added an <code>autoConnect</code> boolean property to the Subscription
-      data object, primarily to illustrate that representing a boolean
-      property with a checkbox now works correctly if you set the property
-      to <code>false</code> in the <code>reset()</code> method of your
-      form beans.</li>
-  </ul>
-
-  </section>
-
-  </body>
-
-</document>
-
diff --git a/build-legacy/core/xdocs/userGuide/release-notes-1.0-b2.xml b/build-legacy/core/xdocs/userGuide/release-notes-1.0-b2.xml
deleted file mode 100644
index f7f4d79..0000000
--- a/build-legacy/core/xdocs/userGuide/release-notes-1.0-b2.xml
+++ /dev/null
@@ -1,333 +0,0 @@
-<?xml version="1.0"?>
-<document url="release-notes-1.0-b2.html">
-
-  <properties>
-    <title>Struts Release Notes (Version 1.0-beta-2)</title>
-  </properties>
-
-  <body>
-
-  <section name="Introduction" href="Introduction">
-
-    <p>This document contains the release notes for
-    <strong>Version 1.0-beta-2</strong> of the Struts Framework,
-    and covers changes that have taken place since
-    <a href="release-notes-1.0-b1.html">Version 1.0-beta-1</a>
-    was released.  The following sections cover
-    <a href="#New">New Features</a> and <a href="#Changes">Changes</a>
-    to Struts.</p>
-
-  </section>
-
-
-  <section name="What's Included?" href="Included">
-
-    <p>The binary distribution of this release includes the following
-    files relevant to Struts 1.0:</p>
-    <ul>
-    <li><code>INSTALL</code> - Brief installation instructions.  See
-        the <code>Struts Documentation Application</code>, or online at
-        <a href="http://jakarta.apache.org/struts/">http://jakarta.apache.org/struts/</a>
-        for more information.</li>
-    <li><code>LICENSE</code> - The Apache Software Foundation license that
-        defines the terms under which you can use Struts (and other software
-        licensed by Apache).</li>
-    <li><code>README</code> - A brief introduction to Struts.</li>
-    <li><code>lib/</code> - Directory containing files you will need in
-        your own applications.  The individual files of interest are:
-        <ul>
-        <li><code>struts.jar</code> - JAR file that contains the compiled
-            Java classes for both version 0.5 and 1.0 of Struts.  You must
-            place this file in the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts-xxxxx.tld</code> - The tag library descriptor files
-            for the Struts 1.0 tag libraries (bean, html, logic, and
-            template).  You must place these files in the <code>/WEB-INF</code>
-            directory of your web application, and reference them with
-            appropriate <code>&lt;taglib&gt;</code> directives in your
-            web.xml file.  <strong>NOTE</strong> - The struts-form.tld
-            file is deprecated; you should use the struts-html.tld file
-            instead.</li>
-        <li><code>jdbc2_0-stdext.jar</code> - The JDBC 2.0 Optional Package
-            API classes (package <code>javax.sql</code>).  You will need to
-            include this file in the <code>/WEB-INF/lib</code> directory
-            of your application, if it is not already made visible to web
-            applications by your servlet container.</li>
-        <li><code>struts-config_1_0.dtd</code> - The document type descriptor
-            (DTD) for the Struts configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>.  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>web-app_2_2.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.2 specification.
-            This copy is for reference purposes only.</li>
-        <li><code>web-app_2_3.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.3 specification.
-            This copy is for reference purposes only.</li>
-        </ul></li>
-    <li><code>webapps/</code> - Web Application Archive (WAR) files for the
-        web applications that are included with Struts.</li>
-    </ul>
-
-    <p>For backwards compatibility only, the binary distribution also
-    includes the following files that conform to the Struts 0.5 milestone
-    release APIs.  Usage of these files and APIs is deprecated, and they
-    will be removed from releases after Struts 1.0:</p>
-    <ul>
-    <li><code>lib/</code> - Directory containing files you will need in
-        your own applications.  The individual files of interest are:
-        <ul>
-        <li><code>struts.jar</code> - JAR file that contains the compiled
-            Java classes for both version 0.5 and 1.0 of Struts.  You must
-            place this file in the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts.tld</code> - The tag library descriptor file for
-            the 0.5 version of the Struts tags.  You must place this file
-            in the <code>/WEB-INF</code> directory of your web application,
-            and reference it with appropriate <code>&lt;taglib&gt;</code>
-            directives in your web.xml file.</li>
-        </ul></li>
-    </ul>
-
-  </section>
-
-
-  <section name="What's New?" href="New">
-
-    <p><strong>DEPRECATIONS</strong> - The entire custom tag library
-    that is documented in <code>struts.tld</code> has been deprecated.
-    These tags correspond to the Struts 0.5 functionality that is also
-    deprecated, and have been replaced (and considerably enhanced) in
-    the various individual tag libraries.</p>
-
-    <p>The build procedure for compiling the Struts source distribution
-    has been revised, and now depends on having <strong>Ant 1.2</strong>
-    (or later) installed, with the <code>$ANT_HOME/bin</code> directory
-    on your path.  Further information can be found in the
-    <a href="installation.html">Installation</a> documentation.</p>
-
-    <p>The following new features have been added to the basic controller
-    framework (package <code>org.apache.struts.action</code>):</p>
-    <ul>
-    <li>You can now specify that an <code>&lt;action&gt;</code> element should
-        invoke an existing servlet or JSP page resource, rather than calling an
-        <code>Action</code> class, by using the <code>include</code> attribute
-        rather than the <code>type</code> attribute.  The standard form bean
-        processing provided by the controller is still performed first, if you
-        have configured it, so the included resource can benefit from this
-        processing if it wishes to.</li>
-    <li>The <code>initDataSources()</code> method can now throw a
-        <code>ServletException</code> to report that an initialization error
-        has occurred.  Previously, such errors were logged but otherwise
-        ignored.</li>
-    <li>It is now possible to integrate business logic that is already
-        encapsulated as a servlet or JSP page, via use of two new standard
-        actions:  <code>org.apache.struts.actions.ForwardAction</code> and
-        <code>org.apache.struts.actions.IncludeAction</code>.  These actions
-        let you take advantage of the standard processing performed by the
-        controller servlet (including form bean population and calling the
-        <code>validate()</code> method), but not have to write Java code to
-        perform (or wrap) the required business logic.</li>
-    <li>A wrapper class has been added around the standard
-        <code>HttpServletRequest</code> for handling multipart requests as
-        identically as possible to standard requests, including processing
-        request parameters, populating form beans, transaction tokens, and
-        checking for cancellations.</li>
-    </ul>
-
-    <p>The following new features have been added to the utility classes
-    (package <code>org.apache.struts.util</code>):</p>
-    <ul>
-    <li><code>PropertyUtils</code> can now correctly locate public methods
-        defined in a nested interface that is implemented by a bean.</li>
-    <li><code>PropertyUtils</code> methods now throw
-        <code>IllegalArgumentException</code> when you pass a null
-        <code>bean</code> reference or property <code>name</code>.</li>
-    <li><strong>DEPRECATIONS</strong> - The following classes have been
-        deprecated in their entirety, because they will be replaced by
-        corresponding classes (with identical functionality) from the
-        <a href="http://jakarta.apache.org/commons">Jakarta Commons Project</a>
-        at some point after Struts 1.0 final release.  The only change that
-        will ultimately be required in user code is to change the package
-        names on the <code>import</code> clauses:
-        <ul>
-        <li><code>org.apache.struts.util.FastArrayList</code></li>
-        <li><code>org.apache.struts.util.FastHashMap</code></li>
-        <li><code>org.apache.struts.util.FastTreeMap</code></li>
-        <li><code>org.apache.struts.util.BeanUtils</code></li>
-        <li><code>org.apache.struts.util.ConvertUtils</code></li>
-        <li><code>org.apache.struts.util.PropertyUtils</code></li>
-        </ul></li>
-    </ul>
-
-
-    <p>The following new features have been added to the
-    <em>struts-html</em> custom tag library (package
-    <code>org.apache.struts.taglib.html</code>):</p>
-    <ul>
-    <li>The <code>&lt;html:link&gt;</code> tag now accepts an optional
-        <code>anchor</code> attribute, to allow the inclusion of a
-        (possibly calculated) anchor ("#xxx") in the generated hyperlink.</li>
-    <li>The <code>&lt;html:base&gt;</code> tag now accepts an optional
-        <code>target</code> attribute.</li>
-    <li>The <code>&lt;html:image&gt;</code> tag now accepts an optional
-        <code>border</code> attribute, to define the border with around
-        this image.</li>
-    <li>You can now request that the <code>&lt;html:link&gt;</code> tag
-        include any current transaction control token in the generated
-        hyperlink, by specifying the <code>transaction</code> attribute
-        with a value of <code>true</code>.</li>
-    <li>The <code>&lt;html:options&gt;</code> tag now supports Enumeration
-        for the <code>collection</code> property.</li>
-    <li>The <code>&lt;html:form&gt;</code> tag now creates attributes for
-        the tag itself, and the form bean, in request scope instead of
-        page scope.  Among other benefits, this allows you to nest the
-        fields of a form inside a separate page that is accessed via a
-        template or a <code>&lt;jsp:include&gt;</code> tag.</li>
-    <li>The <code>styleId</code> attribute has been added to all of the
-        tags where the corresponding <code>id</code> tag is relevant, to
-        identify a specific tag for the purposes of stylesheet references.</li>
-    <li>The <code>&lt;html:file&gt;</code> tag now supports the
-        <code>size</code> attribute to set the size of the file list
-        field.</li>
-    </ul>
-
-    <p>The following new features have been added to the
-    <em>struts-logic</em> custom tag library (package
-    <code>org.apache.struts.taglib.logic</code>):</p>
-    <ul>
-    <li>The <code>&lt;logic:iterate&gt;</code> tag now supports Enumeration
-        for the <code>collection</code> property.</li>
-    <li>The <code>&lt;logic:iterate&gt;</code> tag now exposes the current
-        iteration index to nested tags, through a call to the
-        <code>getIndex()</code> method.</li>
-    </ul>
-
-    <p>The following new features have been added to the
-    <em>struts-template</em> custom tag library (package
-    <code>org.apache.struts.taglib.template</code>):</p>
-    <ul>
-    <li>Attribute getter methods have been added to all of the custom
-        tag implementation classes to facilitate reuse.</li>
-    <li>The <code>&lt;template:get&gt;</code> tag now has an optional
-        "flush" attribute that causes the response to be committed prior
-        to performing the include, if set to "true".  This allows working
-        around problems on broken servlet containers.</li>
-    </ul>
-
-    <p>The following new features have been added to the Struts Documentation
-    application (and corresponding contents on the Struts web site):</p>
-    <ul>
-    <li>Platform specific installation notes for a wide variety of application
-        server and servlet container environments have been accumulated and
-        published.</li>
-    </ul>
-
-  </section>
-
-
-  <section name="Changes and Bug Fixes" href="Changes">
-
-    <p>The following changes and bug fixes have occurred in the basic
-    controller framework (package <code>org.apache.struts.action</code>):</p>
-    <ul>
-    <li><code>DiskMultipartRequestHandler</code> now tries to retrieve the
-    temporary directory provided by the servlet container before all other
-    possible temporary directories.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the utilities
-    (package <code>org.apache.struts.util</code>):</p>
-    <ul>
-    <li>The <code>computeURL()</code> method now returns a
-        <code>MalformedURLException</code> if a URL cannot be created.
-        Previously, this case returned <code>null</code> with no error
-        message, making some problems difficult to track down.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-html</em> custom tag library (package
-    <code>org.apache.struts.taglib.html</code>):</p>
-    <ul>
-    <li>The <code>&lt;html:image&gt;</code> tag now correctly generates a
-        closing double quote on the <code>name</code> attribute.</li>
-    <li>The <code>&lt;html:form&gt;</code> tag now generates a hyperlink
-        that includes any query parameters that were included in the original
-        hyperlink value.</li>
-    <li>The <code>&lt;html:link&gt;</code> tag now correctly places any
-        specified anchor ("#xxx") in the generated hyperlink.</li>
-    <li>The JavaScript code generated to implement the <code>focus</code>
-        attribute of the <code>&lt;html:form&gt;</code> tag now works even
-        when you use nested or indexed property expressions.  Previously,
-        this would generate an invalid JavaScript reference to the field.</li>
-    <li>The <code>&lt;html:checkbox&gt;</code> tag now conforms to its
-        documentation, and sends the specified <code>value</code> to the
-        server if this checkbox is checked at submit time.  In addition, a
-        default value of <code>on</code> is sent if no value attribute is
-        specified.</li>
-    <li>The hyperlinks created by the <code>&lt;html:link&gt;</code> and
-        <code>&lt;html:redirect&gt;</code> tags now properly omit the port
-        number if it is the default port for the current request scheme (80
-        for http, or 443 for https).  Among other things, this corrects
-        session management behavior on the standard port numbers.</li>
-    <li>The <code>focus</code> attribute of the <code>&lt;html:form&gt;</code>
-        tag now works when the corresponding input field is a radio button,
-        or is otherwise indexed.</li>
-    <li>The <code>disabled</code> and <code>readonly</code> attributes have
-        been added to all HTML-rendering tags where they are relevant.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-logic</em> custom tag library (package
-    <code>org.apache.struts.taglib.logic</code>):</p>
-    <ul>
-    <li>Hyperlink processing in the <code>&lt;logic:forward&gt;</code>
-        tag is now identical to that performed by the Struts Controller
-        Servlet when it processes an <code>ActionForward</code> that is
-        returned by an <code>Action</code>.</li>
-    </ul>
-
-    <p>The following changes and bug fixes to the Struts Documentation
-    application (and corresponding contents on the Struts web site) have
-    occurred:</p>
-    <ul>
-    <li>The Java types of collections (and arrays) over which the
-        <code>&lt;logic:iterate&gt;</code> tag can run are now documented.</li>
-    <li>The <code>&lt;bean:define&gt;</code> documentation now mentions the
-        JSP 1.1 Specification restriction on using more than one
-        <code>id</code> attribute with the same value in the same page.</li>
-    </ul>
-
-    <p>The following changes and bug fixes to the Struts Example Application
-    have occurred:</p>
-    <ul>
-    <li>The Java source code of these applications is now included in the
-        corresponding WAR files, in subdirectory <code>WEB-INF/src</code>.</li>
-    <li>Excessive filter() calls in <code>LinkSubscriptionTag</code>
-        have been eliminated.</li>
-    <li>Calls to the deprecated <code>BeanUtils.filter()</code> have been
-        replaced by calls to <code>ResponseUtils.filter()</code>.</li>
-    <li>Removed any attempt to save the pseudo-database at application
-        shutdown, because there is no portable mechanism to accomplish
-        this task.</li>
-    </ul>
-
-    <p>The following changes and bug fixes to the Struts Template Example
-    Application have occurred:</p>
-    <ul>
-    <li>Refactored the example pages to eliminate the creation of redundant
-        <code>&lt;html&gt;</code>, <code>&lt;head&gt;</code>, and
-        <code>&lt;body&gt;</code> tags.</li>
-    <li>If <code>&lt;template:get&gt;</code> or
-        <code>&lt;template:insert&gt;</code> throws an exception, do not
-        overwrite any "real" exception that has already been saved.</li>
-    <li>The text of the various pages in the example has been updated so
-        that they are not identical.</li>
-    </ul> 
-
-  </section>
-
-
-  </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/release-notes-1.0-b3.xml b/build-legacy/core/xdocs/userGuide/release-notes-1.0-b3.xml
deleted file mode 100644
index b98a132..0000000
--- a/build-legacy/core/xdocs/userGuide/release-notes-1.0-b3.xml
+++ /dev/null
@@ -1,259 +0,0 @@
-<?xml version="1.0"?>
-<document url="release-notes-1.0-b3.html">
-
-  <properties>
-    <title>Struts Release Notes (Version 1.0-beta-3)</title>
-  </properties>
-
-  <body>
-
-  <section name="Introduction" href="Introduction">
-
-    <p>This document contains the release notes for
-    <strong>Version 1.0-beta-3</strong> of the Struts Framework,
-    and covers changes that have taken place since
-    <a href="release-notes-1.0-b2.html">Version 1.0-beta-2</a>
-    was released.  The following sections cover
-    <a href="#New">New Features</a> and <a href="#Changes">Changes</a>
-    to Struts.</p>
-
-  </section>
-
-
-  <section name="What's Included?" href="Included">
-
-    <p>The binary distribution of this release includes the following
-    files relevant to Struts 1.0:</p>
-    <ul>
-    <li><code>INSTALL</code> - Brief installation instructions.  See
-        the <code>Struts Documentation Application</code>, or online at
-        <a href="http://jakarta.apache.org/struts/">http://jakarta.apache.org/struts/</a>
-        for more information.</li>
-    <li><code>LICENSE</code> - The Apache Software Foundation license that
-        defines the terms under which you can use Struts (and other software
-        licensed by Apache).</li>
-    <li><code>README</code> - A brief introduction to Struts.</li>
-    <li><code>lib/</code> - Directory containing files you will need in
-        your own applications.  The individual files of interest are:
-        <ul>
-        <li><code>struts.jar</code> - JAR file that contains the compiled
-            Java classes for both version 0.5 and 1.0 of Struts.  You must
-            place this file in the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts-xxxxx.tld</code> - The tag library descriptor files
-            for the Struts 1.0 tag libraries (bean, html, logic, and
-            template).  You must place these files in the <code>/WEB-INF</code>
-            directory of your web application, and reference them with
-            appropriate <code>&lt;taglib&gt;</code> directives in your
-            web.xml file.  <strong>NOTE</strong> - The struts-form.tld
-            file is deprecated; you should use the struts-html.tld file
-            instead.</li>
-        <li><code>jdbc2_0-stdext.jar</code> - The JDBC 2.0 Optional Package
-            API classes (package <code>javax.sql</code>).  You will need to
-            include this file in the <code>/WEB-INF/lib</code> directory
-            of your application, if it is not already made visible to web
-            applications by your servlet container.</li>
-        <li><code>struts-config_1_0.dtd</code> - The document type descriptor
-            (DTD) for the Struts configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>.  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>web-app_2_2.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.2 specification.
-            This copy is for reference purposes only.</li>
-        <li><code>web-app_2_3.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.3 specification.
-            This copy is for reference purposes only.</li>
-        </ul></li>
-    <li><code>webapps/</code> - Web Application Archive (WAR) files for the
-        web applications that are included with Struts.</li>
-    </ul>
-
-    <p>For backwards compatibility only, the binary distribution also
-    includes the following files that conform to the Struts 0.5 milestone
-    release APIs.  Usage of these files and APIs is deprecated, and they
-    will be removed from releases after Struts 1.0:</p>
-    <ul>
-    <li><code>lib/</code> - Directory containing files you will need in
-        your own applications.  The individual files of interest are:
-        <ul>
-        <li><code>struts.jar</code> - JAR file that contains the compiled
-            Java classes for both version 0.5 and 1.0 of Struts.  You must
-            place this file in the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts.tld</code> - The tag library descriptor file for
-            the 0.5 version of the Struts tags.  You must place this file
-            in the <code>/WEB-INF</code> directory of your web application,
-            and reference it with appropriate <code>&lt;taglib&gt;</code>
-            directives in your web.xml file.</li>
-        </ul></li>
-    </ul>
-
-  </section>
-
-
-  <section name="What's New?" href="New">
-
-    <p><strong>DEPRECATIONS</strong> - The entire custom tag library
-    that is documented in <code>struts.tld</code> has been deprecated.
-    These tags correspond to the Struts 0.5 functionality that is also
-    deprecated, and have been replaced (and considerably enhanced) in
-    the various individual tag libraries.</p>
-
-    <p><strong>DEPRECATIONS</strong> - The entire custom tag library
-    that is documented in <code>struts-form.tld</code> has been deprecated
-    because this library has been renamed <code>struts-html.tld</code>
-    instead.</p>
-
-    <p><strong>DEPRECATIONS</strong> - Several classes in the
-    <code>org.apache.struts.util</code> package have been marked as
-    deprecated in their entirety, because they will be replaced by
-    versions from the Jakarta Commons project once those packages are
-    released.  These deprecated classes will <strong>not</strong> be
-    removed until a release after Struts 1.1.  In general, the only
-    change required inside user code using these classes will be to
-    update the <code>import</code> statement.  The following classes
-    are involved:</p>
-    <ul>
-    <li>ArrayStack</li>
-    <li>BeanUtils</li>
-    <li>ConvertUtils</li>
-    <li>FastArrayList</li>
-    <li>FastHashMap</li>
-    <li>FastTreeMap</li>
-    <li>GenericConnection</li>
-    <li>GenericDataSource</li>
-    <li>PropertyUtils</li>
-    </ul>
-
-    <p>The following new features have been added to the basic controller
-    framework (package <code>org.apache.struts.action</code>):</p>
-
-    <p>The following new features have been added to the utility classes
-    (package <code>org.apache.struts.util</code>):</p>
-    <ul>
-    <li><code>GenericDataSource</code> can now be configured with a "ping"
-        type command (via the <code>pingCommand</code> and
-        <code>pingQuery</code> properties) that will be executed before
-        returning a connection from <code>getConnection()</code>.  This
-        can be used to detect stale connections due to timeouts or a
-        database server restart.  If the ping command fails, the corresponding
-        connection will be thrown away, and a new one allocated.</li>
-    </ul>
-
-
-    <p>The following new features have been added to the
-    <em>struts-html</em> custom tag library (package
-    <code>org.apache.struts.taglib.html</code>):</p>
-    <ul>
-    <li>It is now possible to use any object in the values and labels
-        collections for the <code>&lt;html:options&gt;</code> tag.</li>
-    <li>Added the missing <code>tabindex</code> attribute to the
-        <code>&lt;html:radio&gt;</code> tag.</li>
-    <li>On the <code>&lt;html:img&gt;</code>, <code>&lt;html:link&gt;</code>,
-        and <code>&lt;html:rewrite&gt;</code> tags, you can now specify
-        arbitrary object values in the <code>Map</code> used to include
-        dynamic request attributes, as long as the <code>toString()</code>
-        method renders the values appropriately.</li>
-    <li>In all cases where "minimized" attributes were being generated
-        (<code>checked</code>, <code>disabled</code>, <code>multiple</code>,
-        <code>readonly</code>, and <code>selected</code>), the generated
-        attribute has a value (such as <code>selected="true"</code>) for
-        XML syntax compatibility.</li>
-    </ul>
-
-    <p>The following new features have been added to the
-    <em>struts-logic</em> custom tag library (package
-    <code>org.apache.struts.taglib.logic</code>):</p>
-
-    <p>The following new features have been added to the
-    <em>struts-template</em> custom tag library (package
-    <code>org.apache.struts.taglib.template</code>):</p>
-
-    <p>The following new features have been added to the Struts Documentation
-    application (and corresponding contents on the Struts web site):</p>
-
-
-  </section>
-
-
-  <section name="Changes and Bug Fixes" href="Changes">
-
-    <p>The following changes and bug fixes have occurred in the configuration
-    files related to Struts:</p>
-    <ul>
-    <li>The DTD for <code>struts-config.xml</code> files had an incorrect
-        ENTITY declaration for the <code>Location</code> element.</li>
-    <li>The DTD for version 2.3 web application deployment descriptors has
-        been updated to the most recent (Proposed Final Draft 2) version.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the basic
-    controller framework (package <code>org.apache.struts.action</code>):</p>
-
-
-    <p>The following changes and bug fixes have occurred in the utilities
-    (package <code>org.apache.struts.util</code>):</p>
-    <ul>
-    <li>The <code>FastArrayMap()</code>, <code>FastHashMap()</code>, and
-        <code>FastTreeMap()</code> classes not correctly implement the
-        <code>clone()</code>, <code>equals()</code>, and
-        <code>hashCode()</code> methods consistent with the requirements
-        of the Java standard Collections APIs.</li>
-    <li><code>PropertyUtils</code> can now access public methods defined
-        in nested interfaces.</li>
-    <li>A misleading error message returned by <code>BeanUtils</code>
-        has been corrected.</li>
-    <li>Work around a problem compiling the <code>FastXxxxx</code> classes
-        with the VAJ compiler, because the superclass already includes a
-        private class named <code>Iterator</code>.</li>
-    <li>Remove a JDK 1.3 dependency that prevented compiling
-        <code>BeanUtils</code> under JDK 1.2.</li>
-    <li>Generate "&amp;amp;" instead of "&amp;" in query strings that
-        contain more than one name/value pair.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-html</em> custom tag library (package
-    <code>org.apache.struts.taglib.html</code>):</p>
-    <ul>
-    <li>Restore the ability of the <code>&lt;html:button&gt;</code> tag to
-        retrieve the button text from the nested body content (so that it
-        can be easily internationalized).</li>
-    <li>If the property name used in the <code>labelProperty</code>
-        attribute of an <code>&lt;html:options&gt;</code> tag is invalid,
-        report the correct property name in the error message.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-logic</em> custom tag library (package
-    <code>org.apache.struts.taglib.logic</code>):</p>
-
-
-    <p>The following changes and bug fixes to the Struts Documentation
-    application (and corresponding contents on the Struts web site) have
-    occurred:</p>
-    <ul>
-    <li>Fix a reference to an old Struts 0.5 tag in one of the User's Guide
-        examples.</li>
-    <li>Fix the stylesheet used to transform XML into HTML documentation so
-        that nested <code>&lt;body&gt;</code> tags are not created.</li>
-    <li>The DTD for Struts configuration files has been refined to highlight
-        the fact that you should use <code>&lt;set-property&gt;</code>
-        elements to configure your data source implementation.</li>
-    </ul>
-
-    <p>The following changes and bug fixes to the Struts Example Application
-    have occurred:</p>
-
-
-    <p>The following changes and bug fixes to the Struts Template Example
-    Application have occurred:</p>
-
-
-  </section>
-
-
-  </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/release-notes-1.0.1.xml b/build-legacy/core/xdocs/userGuide/release-notes-1.0.1.xml
deleted file mode 100644
index 08b1a70..0000000
--- a/build-legacy/core/xdocs/userGuide/release-notes-1.0.1.xml
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0"?>
-<document url="release-notes-1.0.1.html">
-
-  <properties>
-    <title>Struts Release Notes (Version 1.0.1)</title>
-  </properties>
-
-  <body>
-
-  <section name="Introduction" href="Introduction">
-
-    <p>This document contains the release notes for
-    <strong>Version 1.0.1 </strong> of the Struts Framework,
-    and covers changes that have taken place since
-    <a href="release-notes-1.0.html">Version 1.0</a>
-    was released.  The following sections cover
-    <a href="#New">New Features</a> and <a href="#Changes">Changes</a>
-    to Struts.</p>
-
-    <p>This version covers bug-fixes only; no new functionality.</p>
-
-  </section>
-
-
-  <section name="What's Included?" href="Included">
-
-    <p>The binary distribution of this release includes the following
-    files relevant to Struts 1.0.1:</p>
-    <ul>
-    <li><code>INSTALL</code> - Brief installation instructions.  See
-        the <code>Struts Documentation Application</code>, or online at
-        <a href="http://jakarta.apache.org/struts/">http://jakarta.apache.org/struts/</a>
-        for more information.</li>
-    <li><code>LICENSE</code> - The Apache Software Foundation license that
-        defines the terms under which you can use Struts (and other software
-        licensed by Apache).</li>
-    <li><code>README</code> - A brief introduction to Struts.</li>
-    <li><code>lib/</code> - Directory containing files you will need in
-        your own applications.  The individual files of interest are:
-        <ul>
-        <li><code>struts.jar</code> - JAR file that contains the compiled
-            Java classes for version 1.0 of Struts.  You must
-            place this file in the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts-xxxxx.tld</code> - The tag library descriptor files
-            for the Struts 1.0.1 tag libraries (bean, html, logic, and
-            template).  You must place these files in the <code>/WEB-INF</code>
-            directory of your web application, and reference them with
-            appropriate <code>&lt;taglib&gt;</code> directives in your
-            web.xml file.</li>
-        <li><code>jdbc2_0-stdext.jar</code> - The JDBC 2.0 Optional Package
-            API classes (package <code>javax.sql</code>).  You will need to
-            include this file in the <code>/WEB-INF/lib</code> directory
-            of your application, if it is not already made visible to web
-            applications by your servlet container.</li>
-        <li><code>struts-config_1_0.dtd</code> - The document type descriptor
-            (DTD) for the Struts configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>.  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>web-app_2_2.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.2 specification.
-            This copy is for reference purposes only.</li>
-        <li><code>web-app_2_3.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.3 specification.
-            This copy is for reference purposes only.</li>
-        </ul>
-        </li>
-        <li><code>webapps/</code> - Web Application Archive (WAR) files for the
-            web applications that are included with Struts.</li>
-    </ul>
-
-    <p>The struts 0.5 milestone API release is no longer supported,
-       and has been removed as of Struts 1.1.</p>
-
-  </section>
-
-
-  <section name="What's New?" href="New">
-
-
-    <p>The following new features have been added to the basic controller
-    framework (package <code>org.apache.struts.action</code>):</p>
-
-    <p>The following new features have been added to the utility classes
-    (package <code>org.apache.struts.util</code>):</p>
-    <ul>
-    <li>LocalStrings: Correct message regarding replaceable parameter so that it does not append an extraneous character.</li>
-    <li>MessageResources: Escape any single quote characters that are included in the specified message string.</li>
-    <li>Allow a transaction token to be the only parameter in computeParameters().</li>
-    <li>Change RequestUtils to encode ampersands when building a query string.</li>
-    </ul>
-
-    <p>The following new features have been added to the
-    <em>struts-html</em> custom tag library (package
-    <code>org.apache.struts.taglib.html</code>):</p>
-
-    <p>The following new features have been added to the
-    <em>struts-logic</em> custom tag library (package
-    <code>org.apache.struts.taglib.logic</code>):</p>
-
-    <p>The following new features have been added to the
-    <em>struts-template</em> custom tag library (package
-    <code>org.apache.struts.taglib.template</code>):</p>
-
-    <p>The following new features have been added to the Struts Documentation
-    application (and corresponding contents on the Struts web site):</p>
-
-  </section>
-
-
-  <section name="Changes and Bug Fixes" href="Changes">
-
-    <p>The following changes and bug fixes have occurred in the configuration
-    files related to Struts:</p>
-
-    <p>The following changes and bug fixes have occurred in the basic
-    controller framework (package <code>org.apache.struts.action</code>):</p>
-    <ul>
-    <li>Modify ActionForm class to use ActionServletWrapper rather than expose ActionServlet.</li>
-    <li>Add ActionServletWrapper class. Used by ActionForm to prevent the Public String properties of ActionServlet from being changed via a query string.</li>
-    <li>Unconditionally pass the selected mapping as a request attribute under key Action.MAPPING_KEY, even if no form bean is specified.</li>
-    <li>Avoid a NullPointerException in corner cases caused by failed initialization of ActionServlet.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the file upload
-    package (package <code>org.apache.struts.upload</code>):</p>
-    <ul>
-    <li>Fixed lost byte problem in BufferedMultipartInputStream</li>
-    <li>Fixed ArrayIndexOutOfBoundsException situations</li>
-    <li>Better reporting for premature closing of input streams while reading multipart requests.</li>
-    <li>Additional fix for file corruption problem with uploads and new line characters.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the utilities
-    (package <code>org.apache.struts.util</code>):</p>
-    <ul>
-    <li>Modify RequestUtils class to use ActionServletWrapper rather than expose ActionServlet.</li>
-    <li><code>ConvertUtils.convertCharacter()</code> will now detect empty strings and return the default value.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-bean</em> custom tag library (package
-    <code>org.apache.struts.taglib.bean</code>):</p>
-    <ul>
-    <li>Correct the generated scripting variable type when the &lt;bean:cookie&gt;, &lt;bean:header&gt;, or &lt;bean:parameter&gt; tag is used with the "multiple" attribute.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-html</em> custom tag library (package
-    <code>org.apache.struts.taglib.html</code>):</p>
-    <ul>
-    <li>Fixed FormTag to exclude query string when identifying action mapping name.</li>
-    <li>Correct MultiboxTagdoAfterBody() to return SKIP_BODY instead of SKIP_PAGE.</li>
-    <li>Added the 'align' attribute to the &lt;html:image&gt; tag.</li>
-    <li>On the Options tag, if the property specified by the "property" attribute returns null, it now throws an error message that indicates what the real problem is, rather than causing an NPE.</li>
-    <li>Added 'style' and 'styleClass' attributes for &lt;html:option&gt; and &lt;html:options&gt; tags.</li>
-    <li>Correctly URLEncode the query string parameter value on ImgTag, even if there is only a single parameter.</li>
-    </ul>
-
-
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-logic</em> custom tag library (package
-    <code>org.apache.struts.taglib.logic</code>):</p>
-    <ul>
-    <li>The <code>&lt;html:errors&gt;</code> when the property tag is
-    specified, errors are no longer printed if the specified property
-    has no errors. Previously errors were always printed! Future
-    enhancements would include additional attributes to always turn
-    off the header or footer. </li>
-    </ul>
-
-    <p>The following changes and bug fixes to the Struts Documentation
-    application (and corresponding contents on the Struts web site) have
-    occurred:</p>
-    <ul>
-    <li>Add installation notes for Jetty.</li>
-    <li>In the Tag Developers Guide, add more detail regarding file upload requirements.</li>
-    <li>In the Introduction, added references to basic background material.</li>
-    <li>In Building View Components, clarify that additional i18n support may be provided by the browser, and is outside the scope of the framework.</li>
-    <li>In Building Controller Components, document 'validating' init-param, add defaults for various parameters, clarify that some web.xml settings are not Struts-specific.</li>
-    <li>Correct the example page in the User's Guide (Building View Components) to reflect current practice.</li>
-    <li>Revised installation instructions for SilverStream and Resin.</li>
-    </ul>
-
-    <p>The following changes and bug fixes to the Struts Example Application
-    have occurred:</p>
-    <ul>
-    <li>Remove references to saving database data from "tour" document, since this functionality was removed.</li>
-    </ul>
-
-    <p>The following changes and bug fixes to the Struts Template Example
-    Application have occurred:</p>
-
-
-    <p>The following changes and bug fixes to the Struts Exercise Taglib Example
-    Application have occurred:</p>
-    <ul>
-    <li>Added test case for &lt;html:select> using &lt;html:options> based on a collection
-  saved in the page context.</li>
-    </ul> 
-
-  </section>
-
-
-  </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/release-notes-1.0.2.xml b/build-legacy/core/xdocs/userGuide/release-notes-1.0.2.xml
deleted file mode 100644
index 75bee86..0000000
--- a/build-legacy/core/xdocs/userGuide/release-notes-1.0.2.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0"?>
-<document url="release-notes-1.0.2.html">
-
-  <properties>
-    <title>Struts Release Notes (Version 1.0.2)</title>
-  </properties>
-
-  <body>
-
-  <section name="Introduction" href="Introduction">
-
-    <p>This document contains the release notes for
-    <strong>Version 1.0.2</strong> of the Struts Framework,
-    and covers changes that have taken place since
-    <a href="release-notes-1.0.1.html">Version 1.0.1</a>
-    was released.  The following sections cover
-    <a href="#New">New Features</a> and <a href="#Changes">Changes</a>
-    to Struts.</p>
-
-    <p>This version covers bug-fixes only; no new functionality.</p>
-
-  </section>
-
-
-  <section name="What's Included?" href="Included">
-
-    <p>The binary distribution of this release includes the following
-    files relevant to Struts 1.0.2:</p>
-    <ul>
-    <li><code>INSTALL</code> - Brief installation instructions.  See
-        the <code>Struts Documentation Application</code>, or online at
-        <a href="http://jakarta.apache.org/struts/">http://jakarta.apache.org/struts/</a>
-        for more information.</li>
-    <li><code>LICENSE</code> - The Apache Software Foundation license that
-        defines the terms under which you can use Struts (and other software
-        licensed by Apache).</li>
-    <li><code>README</code> - A brief introduction to Struts.</li>
-    <li><code>lib/</code> - Directory containing files you will need in
-        your own applications.  The individual files of interest are:
-        <ul>
-        <li><code>struts.jar</code> - JAR file that contains the compiled
-            Java classes for version 1.0.2 of Struts.  You must
-            place this file in the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts-xxxxx.tld</code> - The tag library descriptor files
-            for the Struts 1.0.2 tag libraries (bean, html, logic, and
-            template).  You must place these files in the <code>/WEB-INF</code>
-            directory of your web application, and reference them with
-            appropriate <code>&lt;taglib&gt;</code> directives in your
-            web.xml file.</li>
-        <li><code>jdbc2_0-stdext.jar</code> - The JDBC 2.0 Optional Package
-            API classes (package <code>javax.sql</code>).  You will need to
-            include this file in the <code>/WEB-INF/lib</code> directory
-            of your application, if it is not already made visible to web
-            applications by your servlet container.</li>
-        <li><code>struts-config_1_0.dtd</code> - The document type descriptor
-            (DTD) for the Struts configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>.  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>web-app_2_2.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.2 specification.
-            This copy is for reference purposes only.</li>
-        <li><code>web-app_2_3.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.3 specification.
-            This copy is for reference purposes only.</li>
-        </ul>
-        </li>
-        <li><code>webapps/</code> - Web Application Archive (WAR) files for the
-            web applications that are included with Struts.</li>
-    </ul>
-
-    <p>The struts 0.5 milestone API release is no longer supported,
-       and will be removed as of Struts 1.1.</p>
-
-  </section>
-
-
-  <section name="What's New?" href="New">
-
-    <p>No new features have been added in this release.</p>
-
-  </section>
-
-
-  <section name="Changes and Bug Fixes" href="Changes">
-
-    <p>The following changes and bug fixes have occurred in the basic
-    controller framework (package <code>org.apache.struts.action</code>):</p>
-    <ul>
-    <li>The <code>ActionForm.getMultipartRequestHandler()</code> method is now
-        public rather than protected, to restore compatibility with the Tiles
-        extension.</li>
-    </ul>
-
-  </section>
-
-
-  </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/release-notes-1.0.xml b/build-legacy/core/xdocs/userGuide/release-notes-1.0.xml
deleted file mode 100644
index f7be64a..0000000
--- a/build-legacy/core/xdocs/userGuide/release-notes-1.0.xml
+++ /dev/null
@@ -1,283 +0,0 @@
-<?xml version="1.0"?>
-<document url="release-notes-1.0.html">
-
-  <properties>
-    <title>Struts Release Notes (Version 1.0)</title>
-  </properties>
-
-  <body>
-
-  <section name="Introduction" href="Introduction">
-
-    <p>This document contains the release notes for
-    <strong>Version 1.0</strong> of the Struts Framework,
-    and covers changes that have taken place since
-    <a href="release-notes-1.0-b3.html">Version 1.0-beta-3</a>
-    was released.  The following sections cover
-    <a href="#New">New Features</a> and <a href="#Changes">Changes</a>
-    to Struts.</p>
-
-  </section>
-
-
-  <section name="What's Included?" href="Included">
-
-    <p>The binary distribution of this release includes the following
-    files relevant to Struts 1.0:</p>
-    <ul>
-    <li><code>INSTALL</code> - Brief installation instructions.  See
-        the <code>Struts Documentation Application</code>, or online at
-        <a href="http://jakarta.apache.org/struts/">http://jakarta.apache.org/struts/</a>
-        for more information.</li>
-    <li><code>LICENSE</code> - The Apache Software Foundation license that
-        defines the terms under which you can use Struts (and other software
-        licensed by Apache).</li>
-    <li><code>README</code> - A brief introduction to Struts.</li>
-    <li><code>lib/</code> - Directory containing files you will need in
-        your own applications.  The individual files of interest are:
-        <ul>
-        <li><code>struts.jar</code> - JAR file that contains the compiled
-            Java classes for both version 0.5 and 1.0 of Struts.  You must
-            place this file in the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts-xxxxx.tld</code> - The tag library descriptor files
-            for the Struts 1.0 tag libraries (bean, html, logic, and
-            template).  You must place these files in the <code>/WEB-INF</code>
-            directory of your web application, and reference them with
-            appropriate <code>&lt;taglib&gt;</code> directives in your
-            web.xml file.  <strong>NOTE</strong> - The struts-form.tld
-            file is deprecated; you should use the struts-html.tld file
-            instead.</li>
-        <li><code>jdbc2_0-stdext.jar</code> - The JDBC 2.0 Optional Package
-            API classes (package <code>javax.sql</code>).  You will need to
-            include this file in the <code>/WEB-INF/lib</code> directory
-            of your application, if it is not already made visible to web
-            applications by your servlet container.</li>
-        <li><code>struts-config_1_0.dtd</code> - The document type descriptor
-            (DTD) for the Struts configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>.  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>web-app_2_2.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.2 specification.
-            This copy is for reference purposes only.</li>
-        <li><code>web-app_2_3.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.3 specification.
-            This copy is for reference purposes only.</li>
-        </ul></li>
-    <li><code>webapps/</code> - Web Application Archive (WAR) files for the
-        web applications that are included with Struts.</li>
-    </ul>
-
-    <p>For backwards compatibility only, the binary distribution also
-    includes the following files that conform to the Struts 0.5 milestone
-    release APIs.  Usage of these files and APIs is deprecated, and they
-    will be removed from releases after Struts 1.0:</p>
-    <ul>
-    <li><code>lib/</code> - Directory containing files you will need in
-        your own applications.  The individual files of interest are:
-        <ul>
-        <li><code>struts.jar</code> - JAR file that contains the compiled
-            Java classes for both version 0.5 and 1.0 of Struts.  You must
-            place this file in the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts.tld</code> - The tag library descriptor file for
-            the 0.5 version of the Struts tags.  You must place this file
-            in the <code>/WEB-INF</code> directory of your web application,
-            and reference it with appropriate <code>&lt;taglib&gt;</code>
-            directives in your web.xml file.</li>
-        </ul></li>
-    </ul>
-
-  </section>
-
-
-  <section name="What's New?" href="New">
-
-    <p><strong>DEPRECATIONS</strong> - The entire custom tag library
-    that is documented in <code>struts.tld</code> has been deprecated.
-    These tags correspond to the Struts 0.5 functionality that is also
-    deprecated, and have been replaced (and considerably enhanced) in
-    the various individual tag libraries.</p>
-
-    <p><strong>DEPRECATIONS</strong> - The entire custom tag library
-    that is documented in <code>struts-form.tld</code> has been deprecated
-    because this library has been renamed <code>struts-html.tld</code>
-    instead.</p>
-
-    <p><strong>DEPRECATIONS</strong> - Several classes in the
-    <code>org.apache.struts.util</code> package have been marked as
-    deprecated in their entirety, because they will be replaced by
-    versions from the Jakarta Commons project once those packages are
-    released.  These deprecated classes will <strong>not</strong> be
-    removed until a release after Struts 1.1.  In general, the only
-    change required inside user code using these classes will be to
-    update the <code>import</code> statement.  The following classes
-    are involved:</p>
-    <ul>
-    <li>ArrayStack</li>
-    <li>BeanUtils</li>
-    <li>ConvertUtils</li>
-    <li>FastArrayList</li>
-    <li>FastHashMap</li>
-    <li>FastTreeMap</li>
-    <li>GenericConnection</li>
-    <li>GenericDataSource</li>
-    <li>PropertyUtils</li>
-    </ul>
-
-    <p>The following new features have been added to the basic controller
-    framework (package <code>org.apache.struts.action</code>):</p>
-
-    <p>The following new features have been added to the utility classes
-    (package <code>org.apache.struts.util</code>):</p>
-
-
-    <p>The following new features have been added to the
-    <em>struts-html</em> custom tag library (package
-    <code>org.apache.struts.taglib.html</code>):</p>
-    <ul>
-    <li>The <code>&lt;html:link&gt;</code> tag now supports the optional
-        <code>title</code> attribute, that causes some browsers to display
-        alternate text when the mouse is hovered over a hyperlink.</li>
-    </ul>
-
-    <p>The following new features have been added to the
-    <em>struts-logic</em> custom tag library (package
-    <code>org.apache.struts.taglib.logic</code>):</p>
-    <ul>
-    <li>The <code>&lt;logic:iterate&gt;</code> tag now supports a new
-        attribute, <code>indexId</code>.  This attribute names a page scope
-        attribute (and corresponding scripting variable) that will be
-        exposed in the nested body of the iteration, which will contain
-        the current loop index as a java.lang.Integer.</li>
-    </ul>
-
-    <p>The following new features have been added to the
-    <em>struts-template</em> custom tag library (package
-    <code>org.apache.struts.taglib.template</code>):</p>
-
-
-    <p>The following new features have been added to the Struts Documentation
-    application (and corresponding contents on the Struts web site):</p>
-
-  </section>
-
-
-  <section name="Changes and Bug Fixes" href="Changes">
-
-    <p>The following changes and bug fixes have occurred in the configuration
-    files related to Struts:</p>
-    <ul>
-    <li>The documentation about configuring a data source element in the
-        <code>struts-config.xml</code> file has been updated to emphasize
-        the use of <code>&lt;set-property&gt;</code> elements nested inside
-        the <code>&lt;data-source&gt;</code> element.  No further additional
-        attributes will be added to the <code>&lt;data-source&gt;</code>
-        element in the DTD to support custom properties of particular
-        data source implementations.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the basic
-    controller framework (package <code>org.apache.struts.action</code>):</p>
-    <ul>
-    <li>Several issues introduced with the internal wrapping of multipart
-        requests have been fixed.</li>
-    <li>The instance variables in the <code>ActionForm</code> base class
-        are now transient, so that <code>ActionForm</code> instances can
-        actually be serialized.  <strong>WARNING</strong> - If you deserialize
-        such an <code>ActionForm</code> instance and attempt to use it within
-        the Struts framework, be sure to call <code>setServlet()</code> (and
-        <code>setMultipartRequestHander()</code> if appropriate) first.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the file upload
-    package (package <code>org.apache.struts.upload</code>):</p>
-    <ul>
-    <li>Fixed a bug that could cause corruption in the uploaded file,
-        by converting sequences of \r\n\n into \r\n\r\n.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the utilities
-    (package <code>org.apache.struts.util</code>):</p>
-    <ul>
-    <li>Corrected a cut-and-paste typo that caused NullPointerException
-        on attempts to use the new <code>pingQuery</code> property that
-        was added in Struts 1.0-b3.</li>
-    <li>Fix operation ordering so that <code>RequestUtils.lookup()</code>
-        will throw a JspException when the specified bean is missing, in
-        accordance with its JavaDoc documentation.</li>
-    <li>Digester calls to <code>Rule.body()</code> methods will now trim
-        leading and trailing whitespace first, consistent with the behavior
-        of other body processing performed within the rules.</li>
-    <li>Correct the calculation of an absolute URL from a context-relative
-        path in <code>RequestUtils.absoluteURL()</code>.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-bean</em> custom tag library (package
-    <code>org.apache.struts.taglib.bean</code>):</p>
-    <ul>
-    <li>The <code>&lt;bean:include&gt;</code> tag will now pass a session
-        identifier on to the included request (assuming that it is part of
-        the same web application), even if the current request is maintaining
-        session identity with cookies.  Previously, this only worked if you
-        were using URL rewriting.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-html</em> custom tag library (package
-    <code>org.apache.struts.taglib.html</code>):</p>
-    <ul>
-    <li>For all tags where Struts generates attributes that are allowed to
-        be minimized in the HTML specification (i.e. checked, disabled,
-        multiple, readonly, and selected), generate attribute values equal
-        to the attribute name, as required by HTML 4.01, section 3.3.4.
-        For example, generate <code>checked="checked"</code> instead of
-        <code>checked="true"</code> for the "checked" attribute.</li>
-    <li>Correctly generate a <code>&lt;a name="my name"&gt;&lt;&gt;</code>
-        element when the <code>linkName</code> attribute is used on the
-        <code>&lt;html:link&gt;</code> tag.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-logic</em> custom tag library (package
-    <code>org.apache.struts.taglib.logic</code>):</p>
-    <ul>
-    <li>Update the processing performed by the
-        <code>&lt;logic:present&gt;</code> and
-        <code>&lt;logic:notPresent&gt;</code> tags to reflect the changed
-        behavior of <code>RequestUtils.lookup()</code>.</li>
-    </ul>
-
-    <p>The following changes and bug fixes to the Struts Documentation
-    application (and corresponding contents on the Struts web site) have
-    occurred:</p>
-    <ul>
-    <li>Links to subscribe and unsubscribe from the STRUTS-DEV and
-        STRUTS-USER mailing lists have been added to the home page.</li>
-    <li>Miscellaneous corrections to typos and hyperlinks.</li>
-    <li>Cleaned up problems in the stylesheets used to create documentation
-        pages that formerly emitted <code>&lt;project&gt;</code> tags in the
-        generated HTML, and generated incorrect references to link colors in
-        the navigation bar.</li>
-    <li>Added a "Who We Are" page to the documentation.</li>
-    </ul>
-
-    <p>The following changes and bug fixes to the Struts Example Application
-    have occurred:</p>
-    <ul>
-    <li>The <code>name</code> and <code>page</code> attributes of the
-        <code>&lt;app:checkLogon&gt;</code> tag now accept runtime
-        expressions.</li>
-    </ul>
-
-    <p>The following changes and bug fixes to the Struts Template Example
-    Application have occurred:</p>
-
-  </section>
-
-
-  </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/release-notes-1.1-b1.xml b/build-legacy/core/xdocs/userGuide/release-notes-1.1-b1.xml
deleted file mode 100644
index cbd4e3e..0000000
--- a/build-legacy/core/xdocs/userGuide/release-notes-1.1-b1.xml
+++ /dev/null
@@ -1,339 +0,0 @@
-<?xml version="1.0"?>
-<document url="release-notes-1.1-b1.html">
-
-  <properties>
-    <title>Struts Release Notes (current nightly build)</title>
-  </properties>
-
-  <body>
-
-  <section name="Introduction" href="Introduction">
-
-    <p>This document contains the release notes for
-    <strong>Version 1.1 Beta 1</strong> of the Struts Framework,
-    and covers changes that have taken place since
-    <a href="release-notes-1.0.1.html">Version 1.0.1</a>
-    was released.  The following sections cover
-    <a href="#New">New Features</a> and <a href="#Changes">Changes</a>
-    to Struts.</p>
-
-  </section>
-
-
-  <section name="What's Included?" href="Included">
-
-    <p>The binary distribution of this release includes the following
-    files relevant to Struts:</p>
-    <ul>
-    <li><code>INSTALL</code> - Brief installation instructions.  See
-        the <code>Struts Documentation Application</code>, or online at
-        <a href="http://jakarta.apache.org/struts/">http://jakarta.apache.org/struts/</a>
-        for more information.</li>
-    <li><code>LICENSE</code> - The Apache Software Foundation license that
-        defines the terms under which you can use Struts (and other software
-        licensed by Apache).</li>
-    <li><code>README</code> - A brief introduction to Struts.</li>
-    <li><code>lib/</code> - Directory containing files you will need in
-        your own applications.  The individual files of interest are:
-        <ul>
-        <li><code>commons-*.jar</code> - Release packages from the
-            <a href="http://jakarta.apache.org/commons/">Jakarta Commons
-            Project</a> that Struts relies on.  You are welcome to use these
-            classes in your own applications.  These JAR files should be
-            copied into the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts.jar</code> - JAR file that contains the compiled
-            Java classes of Struts.  You must
-            place this file in the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts-xxxxx.tld</code> - The tag library descriptor files
-            for the Struts 1.0 tag libraries (bean, html, logic, and
-            template).  You must place these files in the <code>/WEB-INF</code>
-            directory of your web application, and reference them with
-            appropriate <code>&lt;taglib&gt;</code> directives in your
-            web.xml file.  <strong>NOTE</strong> - The struts-form.tld
-            file is deprecated; you should use the struts-html.tld file
-            instead.</li>
-        <li><code>jdbc2_0-stdext.jar</code> - The JDBC 2.0 Optional Package
-            API classes (package <code>javax.sql</code>).  You will need to
-            include this file in the <code>/WEB-INF/lib</code> directory
-            of your application, if it is not already made visible to web
-            applications by your servlet container.</li>
-        <li><code>struts-config_1_1.dtd</code> - The document type descriptor
-            (DTD) for the Struts configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>.  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>web-app_2_2.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.2 specification.
-            This copy is for reference purposes only.</li>
-        <li><code>web-app_2_3.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.3 specification.
-            This copy is for reference purposes only.</li>
-        </ul></li>
-    <li><code>webapps/</code> - Web Application Archive (WAR) files for the
-        web applications that are included with Struts.</li>
-    </ul>
-
-  </section>
-
-
-  <section name="What's New?" href="New">
-
-    <p><strong>DEPRECATIONS</strong>:</p>
-    <ul>
-    <li><code>struts-config.dtd</code> in favor of <code>struts-config_1_1.dtd</code>.</li>
-    </ul>
-
-    <p><strong>COMMONS PACKAGES</strong>:
-    Several components of Struts 1.0 have been found to be useful in
-    general Java development (and not just useful for building Struts-based
-    web applications), and have been migrated into the
-    <a href="http://jakarta.apache.org/commons/">Jakarta Commons Project</a>.
-    As a result, the current development version of Struts has been modified
-    to rely on the Commons packages containing these classes, rather than the
-    Struts internal versions.  In nearly every case, this involved changing
-    only the <code>import</code> statements at the top of your classes.  Any
-    applications that utilize these classes will need to be modified in the
-    same way.  The following Commons packages contain the replacements for the
-    corresponding Struts 1.0 classes:</p>
-    <ul>
-    <li><strong>BeanUtils Package</strong> (org.apache.commons.beanutils) -
-        <code>org.apache.struts.utils.BeanUtils</code>,
-        <code>org.apache.struts.utils.ConvertUtils</code>, and
-        <code>org.apache.struts.utils.PropertyUtils</code>.</li>
-    <li><strong>Collections Package</strong>
-        (org.apache.commons.collections) -
-        <code>org.apache.struts.util.ArrayStack</code>,
-        <code>org.apache.struts.util.FastArrayList</code>,
-        <code>org.apache.struts.util.FastHashMap</code>,
-        <code>org.apache.struts.util.FastTreeMap</code>.</li>
-    <li><strong>Digester Package</strong> -
-        (org.apache.commons.digester) -
-        <code>org.apache.struts.digester.*</code>.</li>
-    </ul>
-
-    <p><strong>XML PARSER PREREQUISITE UPDATED</strong>:  Struts now depends
-    on an XML parser that conforms to the JAXP/1.1 (rather than JAXP/1.0)
-    APIs.  Parser known to work include the JAXP/1.1 reference implementation,
-    and Xerces 1.3.1.</p>
-
-    <p><strong>CONTRIB Directory</strong>:
-    A new directory (<code>contrib</code>) in the CVS source repository has
-    been added to accumulate Struts add-on extensions that are generally
-    useful but have not yet been integrated into the standard code base.</p>
-
-    <ul>
-    <li>ValidatorForm - Client and Server-side validation library.</li>
-    <li>Tiles - Advanced templating library (see Struts-Tiles.war).</li>
-    <li>Service Manager - Add custom services without subclassing controller.</li>
-    </ul>
-
-    <p><strong>UNIT TESTING SUPPORT</strong>:  Support for running unit tests
-    on Struts components and custom tags is being added, utilizing the
-    <a href="http://jakarta.apache.org/cactus/">Jakarta Cactus</a> product.</p>
-
-    <p>The following new features have been added to the basic controller
-    framework (package <code>org.apache.struts.action</code>):</p>
-    <ul>
-    <li>The new <code>ActionMessages</code> class will support a superset of
-        the capabilities of <code>ActionErrors</code>, and will be useful as
-        a collection of general purpose messages, not just errors.</li>
-    </ul>
-
-    <p>The following new features have been added to the utility classes
-    (package <code>org.apache.struts.util</code>):</p>
-    <ul>
-    <li>LocalStrings: Correct message regarding replaceable parameter so that it does not append an extraneous character.</li>
-    <li>Add LabelValueBean class. This defines a collection of name/value pairs that can be used with the &lt;html:options&gt; tag, and elsewhere.</li>
-    <li>MessageResources: Escape any single quote characters that are included in the specified message string.</li>
-    <li>Allow a transaction token to be the only parameter in computeParameters().</li>
-    <li>Change RequestUtils to encode ampersands when building a query string.</li>
-    </ul>
-
-    <p>The following new features have been added to the
-    <em>struts-bean</em> custom tag library (package
-    <code>org.apache.struts.taglib.bean</code>):</p>
-    <ul>
-    <li>Add format, locale and bundle attributes to bean:write to support values formatting according to current
-user locale, format string from attribute or format string from string resources.</li>
-    <li>Correct the generated scripting variable type when the &lt;bean:cookie>, &lt;bean:header>, or &lt;bean:parameter> tag is used with the "multiple" attribute.</li>
-    <li>Added <code>name</code>, <code>property</code>, and
-        <code>scope</code> attributes to the <code>&lt;bean:message&gt;</code>
-        tag, so that the message source key can be obtained dynamically from
-        a bean or bean property.</li>
-    </ul>
-
-    <p>The following new features have been added to the
-    <em>struts-html</em> custom tag library (package
-    <code>org.apache.struts.taglib.html</code>):</p>
-    <ul>
-    <li>On the Options tag, if the property specified by the "property" attribute returns null, it now throws an error message that indicates what the real problem is, rather than causing an NPE.</li>
-    <li>Added 'style' and 'styleClass' attributes for &lt;html:option&gt; and &lt;html:options&gt; tags.</li>
-    <li>Added 'name', 'property' and 'scope' attributes to
-        <code>&lt;bean:message&gt;</code> so that
-        the message resource key can be obtained dynamically from a bean.</li>
-    <li>Added a new <code>&lt;html:messages&gt;</code> tag to iterate through
-        a message collection in the new <code>ActionMessages</code> class.</li>
-    <li><code>ActionForm</code> will now call <code>reset()</code> if it 
-        instantiates the ActionForm bean.</li>
-    <li>Added indexed property to the SubmitTag, SelectTag, LinkTag.java, CheckboxTag, ButtonTag, ImageTag, RadioTag, and TextArea.Tag.</li>
-    </ul>
-
-    <p>The following new features have been added to the
-    <em>struts-logic</em> custom tag library (package
-    <code>org.apache.struts.taglib.logic</code>):</p>
-    <ul>
-    <li>Added <code>&lt;logic:empty&gt;</code> and
-        <code>&lt;logic:notEmpty&gt;</code> tags, which are similar to
-        <code>&lt;logic:present&gt;</code> and
-        <code>&lt;logic:notPresent&gt;</code> except for the treatment of
-        empty strings.</li>
-    </ul>
-
-    <p>The following new features have been added to the
-    <em>struts-template</em> custom tag library (package
-    <code>org.apache.struts.taglib.template</code>):</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p>The following new features have been added to the Struts Documentation
-    application (and corresponding contents on the Struts web site):</p>
-    <ul>
-    <li>Move Tag Library documentation into User's Guide.</li>
-    <li>Added Kickstart FAQ.</li>
-    <li>Added Reference copy of 1.0 JavaDoc.</li>
-    <li>Revised the example page in the User's Guide (Building View Components) to reflect current practice.</li>
-    <li>Revised installation instructions for SilverStream and Resin.</li>
-    </ul>
-
-  </section>
-
-
-  <section name="Changes and Bug Fixes" href="Changes">
-
-    <p>The following changes and bug fixes have occurred in the configuration
-    files related to Struts:</p>
-    <ul>
-    <li>Remove deprecated support for the old (Struts 0.5) configuration file
-  format.</li>
-    </ul>
-    <p>The following changes and bug fixes have occurred in the basic
-    controller framework (package <code>org.apache.struts.action</code>):</p>
-    <ul>
-    <li>Add InvokeAction and CreateActionForm methods to allow direct chaining of Actions.</li>
-    <li>Add ContextHelper to expose framework elements to alternate presentation layers.</li>
-    <li>ActionForms and related classes now use a StringBuffer when responding a toString request in order to conserve resources.</li>
-    <li>Add standard LookupDispatchAction to help select between internationalized buttons.</li>
-    <li>Modify ActionForm class to use ActionServletWrapper rather than expose ActionServlet.</li>
-    <li>Add ActionServletWrapper class. Used by ActionForm to prevent the Public String properties of ActionServlet from being changed via a query string.</li>
-    <li>Unconditionally pass the selected mapping as a request attribute under key Action.MAPPING_KEY, even if no form bean is specified.</li>
-    <li>Avoid a NullPointerException in corner cases caused by failed initialization of ActionServlet.</li>
-    <li>The <code>ActionForm</code> class is now truly serializable, because
-        the two non-serializable instance variables (servlet and
-        multipartRequestHandler) have been made transient.  However, if you
-        actually do serialize and deserialize such instances, it is your
-        responsibility to reset these two properties.</li>
-    <li>Removed deprecated Struts 0.5 methods, and support for the Struts 0.5
-        configuration file format.</li>
-    <li>The initial order a property/key is added in is now maintained by ActionMessages class.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the file upload
-    package (package <code>org.apache.struts.upload</code>):</p>
-    <ul>
-    <li>Correct MultiboxTagdoAfterBody() to return SKIP_BODY instead of SKIP_PAGE.</li>
-    <li>Fixed lost byte problem in BufferedMultipartInputStream</li>
-    <li>Fixed ArrayIndexOutOfBoundsException situations</li>
-    <li>Better reporting for premature closing of input streams while reading
-multipart requests.</li>
-    <li>Additional fix for file corruption problem with uploads and new line characters.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the utilities
-    (package <code>org.apache.struts.util</code>):</p>
-    <ul>
-    <li>Modify RequestUtils class to use ActionServletWrapper rather than expose ActionServlet.</li>
-    <li>Added error message for the getActionErrors and getActionMessages method.</li>
-    <li>Added a getActionErrors and getActionMessages methods to generate the correct corresponding object based on the object retrieved from request scope based on the key passed in.</li>
-    <li>The logic for creating an ActionErrors or ActionMessages object has been moved to a utility method in RequestUtils. The JspException message is also generated in RequestUtils.</li>
-    <li><code>ConvertUtils.convertCharacter()</code> will now detect empty strings and return the default value.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-bean</em> custom tag library (package
-    <code>org.apache.struts.taglib.bean</code>):</p>
-    <ul>
-    <li>The <code>&lt;html:errors&gt;</code> when the property tag is
-    specified, errors are no longer printed if the specified property
-    has no errors. Previously errors were always printed ! Future
-    enhancements would include additional attributes to always turn
-    off the header or footer. </li>
-    <li>Made the remaining helper methods "protected" rather than 
-    "private".</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-html</em> custom tag library (package
-    <code>org.apache.struts.taglib.html</code>):</p>
-    <ul>
-    <li>Fixed FormTag to exclude query string when identifying action mapping name.</li>
-    <li>Added the 'align' attribute to the &lt;html:image> tag.</li>
-    <li>Added indexed attribute to ImageTag, RadioTag, and TextAreaTag.</li>
-    <li>Added MessagesTag.</li>
-    <li>Correctly URLEncode the query string parameter value on ImgTag, even if there is only a single parameter.</li>
-    </ul>
-
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-logic</em> custom tag library (package
-    <code>org.apache.struts.taglib.logic</code>):</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p>The following changes and bug fixes to the Struts Documentation
-    application (and corresponding contents on the Struts web site) have
-    occurred:</p>
-    <ul>
-    <li>In the HTML tag documentation, expand to cover using indexed properties with iterate.</li>
-    <li>Add installation notes for Jetty.</li>
-    <li>In the Tag Developers Guide, add more detail regarding file upload requirements.</li>
-    <li>In the Introduction, added references to basic background material.</li>
-    <li>In Building View Components, clarify that additional i18n support may be provided by the browser, and is outside the scope of the framework.</li>
-    <li>In Building Controller Components, document 'validating' init-param, add defaults for various parameters, clarify that some web.xml settings are not Struts-specific.</li>
-    <li>Reorganized to separate 1.0 material from nightly build material.</li>
-    <li>Expanded Resources section.</li>
-    <li>Various updates regarding other release notes.</li>
-    </ul>
-
-    <p>The following changes and bug fixes to the Struts Example Application
-    have occurred:</p>
-    <ul>
-    <li>Add Russian and Japanese translations of the application resources and set the character set for the example JSP pages to "UTF-8" so that it can display either English or Japanese.</li>
-    <li>Exchange "name" for "attribute" properties for Edit mappings in Struts configuration file.</li>
-    <li>Remove references to saving database data from "tour" document, since this functionality was removed.</li>
-    </ul>
-
-    <p>The following changes and bug fixes to the Struts Template Example
-    Application have occurred:</p>
-    <ul>
-    <li>None.</li>
-    </ul> 
-
-    <p>The following changes and bug fixes to the Struts Exercise Taglib Example
-    Application have occurred:</p>
-    <ul>
-    <li>Added test case for &lt;html:select> using &lt;html:options> based on a collection
-  saved in the page context.</li>
-    </ul> 
-
-    <p>
-            Next: <a href="installation.html">Installation</a>
-    </p>
-
-</section>  
-
-    </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/release-notes-1.1-b2.xml b/build-legacy/core/xdocs/userGuide/release-notes-1.1-b2.xml
deleted file mode 100644
index ca83f12..0000000
--- a/build-legacy/core/xdocs/userGuide/release-notes-1.1-b2.xml
+++ /dev/null
@@ -1,634 +0,0 @@
-<?xml version="1.0"?>
-<document url="release-notes-1.1-b2.html">
-
-  <properties>
-    <title>Struts Release Notes (Version 1.1 Beta 2)</title>
-  </properties>
-
-  <body>
-
-  <section name="Introduction" href="Introduction">
-
-    <p>This document contains the release notes for
-    <strong>Version 1.1 Beta 2</strong> of the Struts Framework,
-    and covers changes that have taken place since
-    <a href="release-notes-1.0.2.html">Version 1.0.2</a>
-    was released.  The following sections cover
-    <a href="#New">New Features</a> and <a href="#Changes">Changes</a>
-    to Struts.</p>
-
-  </section>
-
-
-  <section name="What's Included?" href="Included">
-
-    <p>The binary distribution of this release includes the following
-    files relevant to Struts:</p>
-    <ul>
-    <li><code>INSTALL</code> - Brief installation instructions.  See
-        the <code>Struts Documentation Application</code>, or online at
-        <a href="http://jakarta.apache.org/struts/">http://jakarta.apache.org/struts/</a>
-        for more information.</li>
-    <li><code>LICENSE</code> - The Apache Software Foundation license that
-        defines the terms under which you can use Struts (and other software
-        licensed by Apache).</li>
-    <li><code>README</code> - A brief introduction to Struts.</li>
-    <li><code>lib/</code> - Directory containing files you will need in
-        your own applications.  The individual files of interest are:
-        <ul>
-        <li><code>commons-*.jar</code> - Release packages from the
-            <a href="http://jakarta.apache.org/commons/">Jakarta Commons
-            Project</a> that Struts relies on.  You are welcome to use these
-            classes in your own applications.  These JAR files should be
-            copied into the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts.jar</code> - JAR file that contains the compiled
-            Java classes of Struts.  You must
-            place this file in the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts-xxxxx.tld</code> - The tag library descriptor files
-            for the Struts 1.1 tag libraries (bean, html, logic, and
-            template).  You must place these files in the <code>/WEB-INF</code>
-            directory of your web application, and reference them with
-            appropriate <code>&lt;taglib&gt;</code> directives in your
-            web.xml file.</li>
-        <li><code>jdbc2_0-stdext.jar</code> - The JDBC 2.0 Optional Package
-            API classes (package <code>javax.sql</code>).  You will need to
-            include this file in the <code>/WEB-INF/lib</code> directory
-            of your application, if it is not already made visible to web
-            applications by your servlet container.</li>
-        <li><code>struts-config_1_1.dtd</code> - The document type descriptor
-            (DTD) for the Struts 1.1 configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>.  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>struts-config_1_0.dtd</code> - The document type descriptor
-            (DTD) for the Struts 1.0 configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>.  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>web-app_2_2.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.2 specification.
-            This copy is for reference purposes only.</li>
-        <li><code>web-app_2_3.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.3 specification.
-            This copy is for reference purposes only.</li>
-        </ul></li>
-    <li><code>webapps/</code> - Web Application Archive (WAR) files for the
-        web applications that are included with Struts.</li>
-    </ul>
-
-  </section>
-
-  <section name="What's New?" href="New">
-
-    <p>Following are highlights of the new features. In the next section, we
-    provide links to the JavaDocs for the affected classes.</p>
-
-    <p><strong>New Configuration DTD</strong></p>
-    <p> The Struts Configuration 1.0 DTD has been deprecated in favor of the
-    <code><a href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">struts-config_1_1.dtd</a></code>.
-    In the Struts 1.1 release, existing Struts configuration files can be
-    loaded using either DTD version.
-    </p>
-
-    <p><strong>New Dependencies on Commons packages</strong></p>
-    <p>Several components of Struts 1.0 have been found to be useful in
-    general Java development (and not just useful for building Struts-based
-    web applications), and have been migrated into the
-    <a href="http://jakarta.apache.org/commons/">Jakarta Commons Project</a>.
-    As a result, the current development version of Struts has been modified
-    to rely on the Commons packages containing these classes, rather than the
-    Struts internal versions.  In nearly every case, this involved changing
-    only the <code>import</code> statements at the top of your classes.  Any
-    applications that utilize these classes will need to be modified in the
-    same way.  </p>
-    <p>The following Commons packages contain the replacements for the
-    corresponding Struts 1.0 classes:</p>
-    <ul>
-    <li><strong>BeanUtils Package</strong>
-        [<a href="http://jakarta.apache.org/commons/beanutils.html"><code>org.apache.commons.beanutils</code></a>] -
-        <code>org.apache.struts.utils.BeanUtils</code>,
-        <code>org.apache.struts.utils.ConvertUtils</code>, and
-        <code>org.apache.struts.utils.PropertyUtils</code>.</li>
-    <li><strong>Collections Package</strong>
-        [<a href="http://jakarta.apache.org/commons/collections.html"><code>org.apache.commons.collections</code></a>]  -
-        <code>org.apache.struts.util.ArrayStack</code>,
-        <code>org.apache.struts.util.FastArrayList</code>,
-        <code>org.apache.struts.util.FastHashMap</code>,
-        <code>org.apache.struts.util.FastTreeMap</code>.</li>
-    <li><strong>Digester Package</strong> -
-        [<a href="http://jakarta.apache.org/commons/digester.html"><code>org.apache.commons.digester</code></a>] -
-        <code>org.apache.struts.digester.*</code>.</li>
-    </ul>
-    <p>The following Commons packages are also now used by various components
-    of the Struts framework:</p>
-    <ul>
-    <li><strong>Database Connection Pool Package</strong>
-    [<a href="http://jakarta.apache.org/commons/dbcp.html"><code>org.apache.commons.dbcp</code></a>]</li>
-    <li><strong>FileUpload Package</strong>
-    [<a href="http://cvs.apache.org/viewcvs/jakarta-commons-sandbox/fileupload/"><code>org.apache.commons.fileupload</code></a>]</li>
-    <li><strong>Logging Package</strong>
-    [<a href="http://jakarta.apache.org/commons/logging.html"><code>org.apache.commons.logging</code></a>]</li>
-    <li><strong>Pool Package</strong>
-    [<a href="http://jakarta.apache.org/commons/pool/index.html"><code>org.apache.commons.pool</code></a>]</li>
-    <li><strong>Services Package</strong>
-    [<a href="http://cvs.apache.org/viewcvs/jakarta-commons-sandbox/services/"><code>org.apache.commons.services</code></a>]</li>
-    <li><strong>Validator Package</strong>
-    [<a href="http://cvs.apache.org/viewcvs/jakarta-commons/validator/"><code>org.apache.commons.validator</code></a>]</li>
-    </ul>
-
-
-    <p><strong>NOTE! XML Parser Prerequisite Updated</strong></p>
-
-    <p>Struts now depends on an XML parser that conforms to the JAXP/1.1
-    (rather than JAXP/1.0) APIs. Parsers known to work include the JAXP/1.1
-    reference implementation, and Xerces 1.3.1.</p>
-
-    <p><strong>SOURCE DEVELOPERS NOTE! Ant Prerequisite Updated</strong></p>
-    <p>To build Struts from source Ant 1.4 or later is now required. This
-    does not affect developers that use Struts from the binary distribution.</p>
-
-    <p><strong>Struts Validator Integration</strong></p>
-    <p>The new Commons-Validator is now integrated with Struts and exposed
-    through the new Validator package.</p>
-
-    <p><strong>Tiles - An advanced templating taglib</strong></p>
-    <p>The Tiles JSP assembly framework has been integrated with Struts.</p>
-
-    <p><strong>Nested - An very cool taglib extension</strong></p>
-    <p>The Nested taglib is bundled with Struts and enhances the functionality
-     of the existing Struts tags.</p>
-
-    <p><strong>New Example Applications</strong></p>
-    <p>New example applications for the Validator and Tiles are now part
-    of the Struts distribution.</p>
-
-    <p><strong>New Contrib directory for optional components</strong></p>
-    <p>A new directory (<code>contrib</code>) in the CVS source repository has
-    been added to accumulate Struts add-on extensions that are generally
-    useful but have not yet been integrated into the standard code base.</p>
-
-    <ul>
-    <li>Scaffold - Library of reusable classes for building web applications.</li>
-    <li>Service Manager - Add custom services without subclassing controller.</li>
-    </ul>
-
-    <p>The source for these components is available in the Struts source
-    distribution. Binary distributions may also be made available with the Struts
-    download area. As optional components, these products have their own
-    release cycles.</p>
-
-    <p><strong>Action Package Additions</strong></p>
-    <p>The following new features have been added to the basic controller
-    framework [<code>org.apache.struts.action</code>]:</p>
-    <ul>
-    <li>The ActionServlet now provides support for modular Struts applications and
-    sports several new extension points.</li>
-    <li>The new <code>ActionMessages</code> class will support a superset of
-        the capabilities of <code>ActionErrors</code>, and will be useful as
-        a collection of general purpose messages, not just errors.</li>
-    </ul>
-
-    <p><strong>Upload Package Additions</strong></p>
-    <p>The following new features have been added to the file upload classes
-    [<code>org.apache.struts.upload</code>]:</p>
-    <ul>
-    <li><code>CommonsMultipartRequestHandler:</code> New class that implements
-        file upload using the Jakarta Commons FileUpload package.</li>
-    </ul>
-
-    <p><strong>Util Package Additions</strong></p>
-    <p>The following new features have been added to the utility classes
-    [<code>org.apache.struts.util</code>]:</p>
-    <ul>
-    <li><code>LocalStrings:</code> Correct message regarding replaceable parameter so that it does not append an extraneous character.</li>
-    <li><code>LabelValueBean:</code> New class that defines a collection of name/value pairs that can be used with the &lt;html:options&gt; tag, and elsewhere.</li>
-    <li><code>MessageResources:</code> Escape any single quote characters that are included in the specified message string.</li>
-    <li><code>computeParameters:</code> Allow a transaction token to be the only parameter in .</li>
-    <li><code>RequestUtils:</code> Change to encode ampersands when building a query string.</li>
-    </ul>
-
-    <p><strong>Bean Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-bean</em> custom tag library
-    [<code>org.apache.struts.taglib.bean</code>]:</p>
-    <ul>
-    <li><code>&lt;bean:write></code>: Add format, locale and bundle attributes to support formatting values according to current
-    user locale, format string from attribute or format string from string resources.</li>
-    <li><code>&lt;bean:cookie>, &lt;bean:header>, or &lt;bean:parameter>:</code> Correct the generated scripting variable type when tag is used with the "multiple" attribute.</li>
-    <li><code>&lt;bean:message&gt;:</code> Added <code>name</code>, <code>property</code>, and  <code>scope</code> attributes to the tag, so that the message source key can be obtained dynamically from a bean or bean property.</li>
-    </ul>
-
-    <p><strong>HTML Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-html</em> custom tag library [<code>org.apache.struts.taglib.html</code>]:</p>
-    <ul>
-    <li><code>&lt;options&gt;:</code> If the property specified by the 'property' attribute returns null, tag now throws an error message that indicates what the real problem is, rather than causing an NPE.</li>
-    <li><code>&lt;html:option&gt; and &lt;html:options&gt;:</code> Added 'style' and 'styleClass' attributes.</li>
-    <li><code>&lt;html:optionsCollection&gt;:</code> New tag providing a cleaner way of populating HTML options from a collection.</li>
-    <li><code>&lt;bean:message&gt;:</code> Added 'name', 'property' and 'scope' attributes so that the message resource key can be obtained dynamically from a bean.</li>
-    <li><code>&lt;html:messages&gt;:</code> New tag to iterate through a message collection in the new <code>ActionMessages</code> class.</li>
-    <li><code>ActionForm:</code> Tag will now call <code>reset()</code> if it instantiates the ActionForm bean. This also requires that the bean instantiated by the tag to be an <code>ActionForm</code> subclass. </li>
-    <li><code>&lt;html:image>:</code> Added the 'align' attribute.</li>
-    <li><code>&lt;html:img>:</code> Added the mouse event attributes ('onclick', 'ondblclick', 'onmousedown', 'onmouseup', 'onmouseover', 'onmousemove', 'onmouseout').</li>
-    <li><code>SubmitTag, SelectTag, LinkTag.java, CheckboxTag, ButtonTag, ImageTag, RadioTag, and TextArea tags:</code> Added indexed property. </li>
-    </ul>
-
-    <p><strong>Logic Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-logic</em> custom tag library [<code>org.apache.struts.taglib.logic</code>]:</p>
-    <ul>
-    <li><code>&lt;logic:empty&gt;</code> and
-        <code>&lt;logic:notEmpty&gt;</code>: New tags that are similar to
-        <code>&lt;logic:present&gt;</code> and
-        <code>&lt;logic:notPresent&gt;</code> except for the treatment of
-        empty strings.</li>
-    </ul>
-
-    <p><strong>Template Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-template</em> custom tag library
-    [<code>org.apache.struts.taglib.template</code>]:</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p><strong>Documentation Additions</strong></p>
-    <p>The following new features have been added to the Struts Documentation
-    application (and corresponding contents on the Struts web site):</p>
-    <ul>
-    <li>Version Differences: New section in Release Notes to link to the JavaDocs for all Struts classes and members added or changed between versions.</li>
-    <li>User Guide Preface: New section to overview the enabling technologies behind Struts.</li>
-    <li>Developer Guides: Added "cover page" to guides. These then link to the Package Descriptions and the API guides.</li>
-    <li>HTML tag documentation: expanded to cover using indexed properties with iterate.</li>
-    <li>Site Menu: Removed separate links to taglib documentation, since these are now in the Developer Guide.</li>
-    <li>Newbie FAQ: The questions most likely to be asked by new developers using Struts. Still under development.</li>
-    <li>Kickstart FAQ: The questions most likely to be asked when selecting Struts.</li>
-    <li>1.0 JavaDoc: Added archival copy to web site for future reference.</li>
-    <li>The UserGuide "Building" pages: General revisions to reflect new features and current practices.</li>
-    <li>Installation: Updated instructions for SilverStream and Resin. Add installation notes for Jetty. Added RexIP to list of nominal containers.</li>
-    <li>JavaDocs: New <code>@since Struts 1.1</code> tag to indicate new packages, classes, and members added after the Struts 1.0.x version</li>
-    </ul>
-
-  </section>
-
-  <section name="Operational Changes and Bug Fixes" href="Changes">
-
-    <p><strong>Struts Configuration Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the configuration
-    files related to Struts:</p>
-    <ul>
-    <li>Deprecated (Struts 0.5) configuration file format: Remove support.</li>
-    <li>Deprecated (Struts 0.5) methods: Remove from codebase.</li>
-    </ul>
-    <p><strong>Added Config Package</strong></p>
-    <ul>
-    <li>ControllerConfig: Added inputForward property to indicate that ActionMapping.input is a forward rather than a URI.</li>
-    <li>ControllerConfig: Added forwardPattern and inputPattern to help manage page directories in application modules.</li>
-    <li>Added package to provide more flexibility in configuring the controller and to provide support for modular applications</li>
-    </ul>
-    <p><strong>Action Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the basic
-    controller framework (package <code>org.apache.struts.action</code>):</p>
-    <ul>
-    <li>ActionMapping: input property may now refer to an ActionForward rather than a module-relative path if inputForward is set to true on the module's ControllerConfig bean [org.apache.struts.config.ControllerConfig.</li>
-    <li>ActionServlet: Added convertNull parameter to simulate the Struts 1.0 behavior when populating forms. If set to true, the numeric Java wrapper class types (like java.lang.Integer) will default to null (rather than 0).</li>
-    <li>ActionServlet: Added "config/$foo" parameter and deprecated several others in favor of components in the new config package. </li>
-    <li>ActionForms and related classes: now use a StringBuffer when responding a toString request in order to conserve resources.</li>
-    <li>LookupDispatchAction: Added standard Action to help select between internationalized buttons.</li>
-    <li>ActionForm class: Modified to use ActionServletWrapper rather than expose ActionServlet.</li>
-    <li>ActionServletWrapper class: Added for use by ActionForm to prevent the Public String properties of ActionServlet from being changed via a query string.</li>
-    <li>Action.MAPPING_KEY request attribute: Unconditionally pass the selected mapping as a request attribute ("org.apache.struts.action.mapping.instance") even if no form bean is specified.</li>
-    <li>ActionServlet: Avoid a NullPointerException in corner cases caused by failed initialization of servlet.</li>
-    <li>ActionForm class: Now truly serializable, because
-        the two non-serializable instance variables (servlet and
-        multipartRequestHandler) have been made transient.  However, if you
-        actually do serialize and deserialize such instances, it is your
-        responsibility to reset these two properties.</li>
-    <li>ActionMessages and ActionErrors: The initial order a property/key is added in is now retained.</li>
-    </ul>
-
-    <p><strong>Upload Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the file upload
-    package (package <code>org.apache.struts.upload</code>):</p>
-    <ul>
-    <li>CommonsMultipartRequestHandler: New implementation of file upload based
-        on the Jakarta Commons FileUpload package. This new implementation is
-        now the default.</li>
-    <li>BufferedMultipartInputStream: Fixed lost byte problem.</li>
-    <li>ArrayIndexOutOfBoundsException: Fixed situations where this was known to occur.</li>
-    <li>Multipart requests: Better reporting for premature closing of input streams while reading multipart requests.</li>
-    <li>New line characters: Additional fix for file corruption problem with uploads and new line characters.</li>
-    </ul>
-
-    <p><strong>Utility Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the utilities
-    (package <code>org.apache.struts.util</code>):</p>
-    <ul>
-    <li>RequestUtils: Added support for forwardPattern, pagePattern, and inputForward properties on ControllerConfig.</li>
-    <li>GenericDataSource: Deprecated and modified to act as a thin wrapper around
-    [<code>org.apache.commons.dbpc.BasicDataSource</code>].
-    Replaced by direct use of BasicDataSource or other compatible component.</li>
-    <li>RequestUtils class: Modify to use ActionServletWrapper rather than expose ActionServlet.</li>
-    <li>Added error message for the getActionErrors and getActionMessages method.</li>
-    <li>getActionErrors and getActionMessages: Added methods to generate the correct corresponding
-    object based on the object retrieved from request scope based on the key passed in.</li>
-    <li>ActionErrors or ActionMessages: The logic for creating one of these objects has been moved
-    to a utility method in RequestUtils.</li>
-    <li>JspException message: Now generated in RequestUtils.</li>
-    <li>ConvertUtils.convertCharacter(): Will now detect empty strings and return the default value.</li>
-    </ul>
-
-    <p><strong>Bean Taglib Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-bean</em> custom tag library
-    [<code>org.apache.struts.taglib.bean</code>]:</p>
-    <ul>
-    <li>&lt;html:errors&gt;: When the property tag is
-    specified, errors are no longer printed if the specified property
-    has no errors. Previously errors were always printed ! Future
-    enhancements would include additional attributes to always turn
-    off the header or footer. </li>
-    <li>Made the remaining helper methods "protected" rather than
-    "private".</li>
-    </ul>
-
-    <p><strong>HTML Taglib Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-html</em> custom tag library (package
-    <code>org.apache.struts.taglib.html</code>):</p>
-    <ul>
-    <li>FormTag: Fixed to exclude query string when identifying action mapping name.</li>
-    <li>ImgTag: Correctly URLEncode the query string parameter value even if there is only a single parameter.</li>
-    <li>MultiboxTag.doAfterBody(): Corrected to return SKIP_BODY instead of SKIP_PAGE.</li>
-    </ul>
-
-    <p><strong>Logic Taglib Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-logic</em> custom tag library (package
-    <code>org.apache.struts.taglib.logic</code>):</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p><strong>Documentation Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts Documentation
-    application (and corresponding contents on the Struts web site) have
-    occurred:</p>
-    <ul>
-    <li>Reorganized Resources into separate pages..</li>
-    <li>In the Tag Developers Guide, add more detail regarding file upload requirements.</li>
-    <li>In Building View Components, clarify that additional i18n support may be provided by the browser, and is outside the scope of the framework.</li>
-    <li>In Building Controller Components, document 'validating' init-param, add defaults for various parameters, clarify that some web.xml settings are not Struts-specific.</li>
-    <li>Tag library documentation: Moved under User's Guide.</li>
-    <li>Reorganized to separate 1.0 material from nightly build material.</li>
-    </ul>
-
-    <p><strong>MailReader Example Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts MailReader Example Application
-    have occurred:</p>
-    <ul>
-    <li>Add Russian and Japanese translations of the application resources and set the character set for the example JSP pages to "UTF-8" so that it can display either English or Japanese.</li>
-    <li>Exchange "name" for "attribute" properties for Edit mappings in Struts configuration file.</li>
-    <li>Remove references to saving database data from "tour" document, since this functionality was removed.</li>
-    </ul>
-
-    <p><strong>Template Example Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts Template Example
-    Application have occurred:</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p><strong>Exercise Taglib Example Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts Exercise Taglib Example
-    Application have occurred:</p>
-    <ul>
-    <li>Added test case for &lt;html:select> using &lt;html:options> based on a collection
-    saved in the page context.</li>
-    </ul>
-
-  </section>
-
-  <section name="What's different?" href="diff">
-
-    <p>This section provides links to the Struts JavaDoc for any classes that have
-    been added or deprecated since the Struts 1.0 release.
-    </p>
-
-    <p><strong>Previously deprecated classes and packages removed in Struts 1.1</strong></p>
-    <ul>
-    <li>Removed:
-      <code>org.apache.struts.utils.BeanUtils</code>,
-      <code>org.apache.struts.utils.ConvertUtils</code>, and
-      <code>org.apache.struts.utils.PropertyUtils</code> - replaced by
-      <a href ="http://jakarta.apache.org/commons/beanutils.html"><code>org.apache.commons.beanutils</code></a>
-    </li>
-    <li>Removed:
-     <code>org.apache.struts.util.ArrayStack</code>,
-     <code>org.apache.struts.util.FastArrayList</code>,
-     <code>org.apache.struts.util.FastHashMap</code>,
-     <code>org.apache.struts.util.FastTreeMap</code> - replaced by
-     <a href ="http://jakarta.apache.org/commons/collections.html"><code>org.apache.commons.collections</code></a>
-    </li>
-    <li>Removed: <code>org.apache.struts.digester.*</code> - replaced by
-    <a href ="http://jakarta.apache.org/commons/digester.html"><code>org.apache.commons.digester</code></a>
-    </li>
-    <li>Removed: The <code>struts-config.dtd</code> - Replaced by <a href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"><code>struts-config_1_1.dtd</code></a>.</li>
-    <li>Removed: The omnibus "struts" taglib and its associated TLD - replaced by separate bean, logic, and html taglibs.</li>
-    <li>Removed: The "form" taglib and its associated TLD - replaced by (renamed as) the html taglib.</li>
-    </ul>
-
-    <p><strong>Packages added in Struts 1.1</strong></p>
-
-    <ul>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/config/package-summary.html">config</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/package-summary.html">taglib.nested</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/bean/package-summary.html">taglib.nested.bean</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/html/package-summary.html">taglib.nested.html</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/logic/package-summary.html">taglib.nested.logic</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/validator/package-frame.html">validator</a></li>
-    </ul>
-
-    <p><strong>Classes added in Struts 1.1</strong></p>
-    <p>action</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionMessage.html"> ActionMessage</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionMessages.html"> ActionMessages</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/DynaActionForm.html"> DynaActionForm</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/DynaActionFormClass.html"> DynaActionFormClass</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ExceptionHandler.html"> ExceptionHandler</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/RequestProcessor.html"> RequestProcessor</a></li>
-    </ul>
-    <p>actions</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/actions/LookupDispatchAction.html"> LookupDispatchAction</a></li>
-    </ul>
-    <p>taglib.html</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/FrameTag.html"> FrameTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/JavascriptValidatorTag.html"> JavascriptValidatorTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/MessagesTag.html">MessagesTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/OptionsCollectionTag.html"> OptionsCollectionTag</a></li>
-    </ul>
-    <p>taglib.logic</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/EmptyTag.html"> EmptyTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/MessagesNotPresentTag.html"> MessagesNotPresentTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/MessagesPresentTag.html"> MessagesPresentTag</a></li>
-    </ul>
-    <p>upload</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/upload/CommonsMultipartRequestHandler.html"> CommonsMultipartRequestHandler</a></li>
-    </ul>
-    <p>util</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/util/LabelValueBean.html"> LabelValueBean</a></li>
-    </ul>
-    <p><strong>Classes with members added in Struts 1.1</strong></p>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/Action.html">action.Action</a></p>
-    <ul>
-      <li>ACTION_SERVLET_KEY</li>
-      <li>APPLICATION_KEY</li>
-      <li>MESSAGE_KEY</li>
-      <li>PLUG_INS_KEY</li>
-      <li>REQUEST_PROCESSOR_KEY</li>
-      <li>execute</li>
-      <li>getResources(javax.servlet.http.HttpServletRequest)</li>
-      <li>saveMessages</li>
-    </ul>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionServlet.html">action.A</a><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionServlet.html">ctionServlet</a></p>
-    <ul>
-      <li>configDigester</li>
-      <li>convertHack</li>
-      <li>log</li>
-      <li>processor</li>
-      <li>getInternal</li>
-      <li>destroyApplications</li>
-      <li>destroyConfigDigester</li>
-      <li>getApplicationConfig</li>
-      <li>getRequestProcessor</li>
-      <li>initApplicationConfig</li>
-      <li>initApplicationDataSources</li>
-      <li>initApplicationPlugIns</li>
-      <li>initApplicationMessageResources</li>
-      <li>initConfigDigester</li>
-      <li>methods created for backward-compatiblity only
-        <ul>
-          <li>defaultControllerConfig</li>
-          <li>defaultFormBeansConfig</li>
-          <li>defaultForwardsConfig</li>
-          <li>defaultMappingsConfig</li>
-          <li>defaultMessageResourcesConfig</li>
-        </ul>
-      </li>
-    </ul>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/BaseHandlerTag.html">taglib.html.BaseHandlerTag</a></p>
-    <ul>
-      <li>indexed</li>
-      <li>setIndexed</li>
-      <li>getIndexed</li>
-    </ul>
-    <p><strong>Classes deprecated between Struts 1.0 and Struts 1.1</strong></p>
-    <p>action</p>
-    <ul>
-      <li>ActionException</li>
-      <li>ActionFormBeans</li>
-      <li>ActionForwards</li>
-      <li>ActionMappings</li>
-    </ul>
-    <p><strong>Classes with members deprecated between Struts 1.0 and Struts 1.1</strong></p>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/Action.html">action.Action</a></p>
-
-    <ul>
-      <li>FORM_BEANS_KEY</li>
-      <li>FORWARDS_KEY</li>
-      <li>MAPPINGS_KEY</li>
-      <li>getResources()</li>
-      <li>perform</li>
-    </ul>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionServlet.html">ActionServlet</a></p>
-    <ul>
-      <li>findDataSource</li>
-      <li>findFormBean</li>
-      <li>findForward</li>
-      <li>findMapping</li>
-      <li>initDataSources</li>
-      <li>methods created for backward-compatiblity only
-        <ul>
-          <li>defaultControllerConfig</li>
-          <li>defaultFormBeansConfig</li>
-          <li>defaultForwardsConfig</li>
-          <li>defaultMappingsConfig</li>
-          <li>defaultMessageResourcesConfig</li>
-        </ul>
-      </li>
-    </ul>
-
-    <p>Next: <a href="installation.html">Installation</a></p>
-
-  </section>
-
-  <section name="Known Issues" href="Bugs">
-
-    <p>The following known issues will be addressed before Final Release of
-       Struts 1.1. The numbers in parentheses are for the corresponding entries
-       in the <a href="http://issues.apache.org/bugzilla">Bugzilla</a> bug
-       tracking system.</p>
-
-    <strong>Custom Tags</strong>
-    <ul>
-      <li>The &lt;html:form&gt; tag generates incorrect JavaScript when the
-          focus is to be set on a radio button.
-          (<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=1586">#1586</a>)
-      </li>
-    </ul>
-
-    <strong>Documentation</strong>
-    <ul>
-      <li>Some parts of the documentation are incomplete, especially for new
-          features in this release. These sections are marked TODO.
-          (<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10537">#10537</a>)
-      </li>
-    </ul>
-
-    <strong>Example Webapps</strong>
-    <ul>
-      <li>The <em>struts-blank</em> sample webapp fails to run due to problems
-          accessing message resources.
-          (<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10955">#10955</a>)
-      </li>
-    </ul>
-
-    <strong>Validator Framework</strong>
-    <ul>
-      <li>Validator generates incorrect JavaScript for the &lt;select&gt; element.
-          (<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=7353">#7353</a>)
-      </li>
-      <li>Validator range checking supports only integer values, and not other
-          numeric values such as floats and doubles.
-          (<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10191">#10191</a>)
-      </li>
-      <li>Validator does not work with Struts application modules other than
-          the default module.
-          (<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10348">#10348</a>)
-      </li>
-      <li>Validator does not successfully validate empty date fields.
-          (<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10349">#10349</a>)
-      </li>
-      <li>Validator does not validate data when using DynaValidatorActionForm.
-          (<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10432">#10432</a>)
-      </li>
-      <li>Validator plugin does not correctly configure multiple validation files.
-          (<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10584">#10584</a>)
-      </li>
-    </ul>
-
-  <p>Next: <a href="installation.html">Installation</a></p>
-
-  </section>
-
-    </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/release-notes-1.1-b3.xml b/build-legacy/core/xdocs/userGuide/release-notes-1.1-b3.xml
deleted file mode 100644
index d47d85f..0000000
--- a/build-legacy/core/xdocs/userGuide/release-notes-1.1-b3.xml
+++ /dev/null
@@ -1,614 +0,0 @@
-<?xml version="1.0"?>
-<document url="release-notes-1.1-b3.html">
-
-  <properties>
-    <title>Struts Release Notes (Version 1.1 Beta 3)</title>
-  </properties>
-
-  <body>
-
-  <section name="6.1 Release Notes" href="release_notes"/>
-  <section name="Beta Notes" href="beta">
-
-    <p>This section contains the release notes for
-    <strong>nightly build</strong> of the Struts Framework,
-    for changes that have taken place since
-    <a href="release-notes-1.1-b2.html">Version 1.1 beta 2</a>
-    was released. For a complete list of changes since the last
-    production release, see the <a href="#Introduction">Introduction</a> </p>
-
-  </section>
-
-<section name="Beta Fixes" href="beta.Changes">
-
-  <p>
-  <strong>ApplicationConfig:</strong> In Struts 1.1. beta 3, the ApplicationConfig class 
-  is renamed to ModuleConfig, to conform with the venacular.
-  </p>
-
-  <p>
-  <strong>Dyna*Form:</strong> In Struts 1.1. beta 3, the reset method was changed so that 
-  it conforms to the original ActionForm implementation.</p>
-
-  <p>
-  <strong>Blank application:</strong> Fixed configuration problem with Struts Blank 
-  application.
-  </p>
-
-</section>
-
-  <section name="Introduction" href="Introduction">
-
-    <p>The remainder of this document contains the release notes for
-    <strong>nightly build</strong> of the Struts Framework,
-    and covers changes that have taken place since
-    <a href="release-notes-1.0.2.html">Version 1.0.2</a>
-    was released.  The following sections cover
-    <a href="#New">New Features</a> and <a href="#Changes">Changes</a>
-    to Struts.</p>
-
-  </section>
-
-
-  <section name="What's Included?" href="Included">
-
-    <p>The binary distribution of this release includes the following
-    files relevant to Struts:</p>
-    <ul>
-    <li><code>INSTALL</code> - Brief installation instructions.  See
-        the <code>Struts Documentation Application</code>, or online at
-        <a href="http://jakarta.apache.org/struts/">http://jakarta.apache.org/struts/</a>
-        for more information.</li>
-    <li><code>LICENSE</code> - The Apache Software Foundation license that
-        defines the terms under which you can use Struts (and other software
-        licensed by Apache).</li>
-    <li><code>README</code> - A brief introduction to Struts.</li>
-    <li><code>lib/</code> - Directory containing files you will need in
-        your own applications.  The individual files of interest are:
-        <ul>
-        <li><code>commons-*.jar</code> - Release packages from the
-            <a href="http://jakarta.apache.org/commons/">Jakarta Commons
-            Project</a> that Struts relies on.  You are welcome to use these
-            classes in your own applications.  These JAR files should be
-            copied into the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts.jar</code> - JAR file that contains the compiled
-            Java classes of Struts.  You must
-            place this file in the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts-xxxxx.tld</code> - The tag library descriptor files
-            for the Struts 1.1 tag libraries (bean, html, logic, and
-            template).  You must place these files in the <code>/WEB-INF</code>
-            directory of your web application, and reference them with
-            appropriate <code>&lt;taglib&gt;</code> directives in your
-            web.xml file.</li>
-        <li><code>jdbc2_0-stdext.jar</code> - The JDBC 2.0 Optional Package
-            API classes (package <code>javax.sql</code>).  You will need to
-            include this file in the <code>/WEB-INF/lib</code> directory
-            of your application, if it is not already made visible to web
-            applications by your servlet container.</li>
-        <li><code>struts-config_1_1.dtd</code> - The document type descriptor
-            (DTD) for the Struts 1.1 configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>.  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>struts-config_1_0.dtd</code> - The document type descriptor
-            (DTD) for the Struts 1.0 configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>.  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>web-app_2_2.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.2 specification.
-            This copy is for reference purposes only.</li>
-        <li><code>web-app_2_3.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.3 specification.
-            This copy is for reference purposes only.</li>
-        </ul></li>
-    <li><code>webapps/</code> - Web Application Archive (WAR) files for the
-        web applications that are included with Struts.</li>
-    </ul>
-
-  </section>
-
-  <section name="What's New?" href="New">
-
-    <p>Following are highlights of the new features. In the next section, we
-    provide links to the JavaDocs for the affected classes.</p>
-
-    <p><strong>New Configuration DTD</strong></p>
-    <p> The Struts Configuration 1.0 DTD has been deprecated in favor of the
-    <code><a href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">struts-config_1_1.dtd</a></code>.
-    In the Struts 1.1 release, existing Struts configuration files can be
-    loaded using either DTD version.
-    </p>
-
-    <p><strong>New Dependencies on Commons packages</strong></p>
-    <p>Several components of Struts 1.0 have been found to be useful in
-    general Java development (and not just useful for building Struts-based
-    web applications), and have been migrated into the
-    <a href="http://jakarta.apache.org/commons/">Jakarta Commons Project</a>.
-    As a result, the current development version of Struts has been modified
-    to rely on the Commons packages containing these classes, rather than the
-    Struts internal versions.  In nearly every case, this involved changing
-    only the <code>import</code> statements at the top of your classes.  Any
-    applications that utilize these classes will need to be modified in the
-    same way.  </p>
-    <p>The following Commons packages contain the replacements for the
-    corresponding Struts 1.0 classes:</p>
-    <ul>
-    <li><strong>BeanUtils Package</strong>
-        [<a href="http://jakarta.apache.org/commons/beanutils.html"><code>org.apache.commons.beanutils</code></a>] -
-        <code>org.apache.struts.utils.BeanUtils</code>,
-        <code>org.apache.struts.utils.ConvertUtils</code>, and
-        <code>org.apache.struts.utils.PropertyUtils</code>.</li>
-    <li><strong>Collections Package</strong>
-        [<a href="http://jakarta.apache.org/commons/collections.html"><code>org.apache.commons.collections</code></a>]  -
-        <code>org.apache.struts.util.ArrayStack</code>,
-        <code>org.apache.struts.util.FastArrayList</code>,
-        <code>org.apache.struts.util.FastHashMap</code>,
-        <code>org.apache.struts.util.FastTreeMap</code>.</li>
-    <li><strong>Digester Package</strong> -
-        [<a href="http://jakarta.apache.org/commons/digester.html"><code>org.apache.commons.digester</code></a>] -
-        <code>org.apache.struts.digester.*</code>.</li>
-    </ul>
-    <p>The following Commons packages are also now used by various components
-    of the Struts framework:</p>
-    <ul>
-    <li><strong>Database Connection Pool Package</strong>
-    [<a href="http://jakarta.apache.org/commons/dbcp.html"><code>org.apache.commons.dbpc</code></a>]</li>
-    <li><strong>FileUpload Package</strong>
-    [<a href="http://cvs.apache.org/viewcvs/jakarta-commons-sandbox/fileupload/"><code>org.apache.commons.fileupload</code></a>]</li>
-    <li><strong>Logging Package</strong>
-    [<a href="http://jakarta.apache.org/commons/logging.html"><code>org.apache.commons.logging</code></a>]</li>
-    <li><strong>Pool Package</strong>
-    [<a href="http://jakarta.apache.org/commons/pool/index.html"><code>org.apache.commons.pool</code></a>]</li>
-    <li><strong>Validator Package</strong>
-    [<a href="http://cvs.apache.org/viewcvs/jakarta-commons/validator/"><code>org.apache.commons.validator</code></a>]</li>
-    </ul>
-
-
-    <p><strong>NOTE! XML Parser Prerequisite Updated</strong></p>
-
-    <p>Struts now depends on an XML parser that conforms to the JAXP/1.1
-    (rather than JAXP/1.0) APIs. Parsers known to work include the JAXP/1.1
-    reference implementation, and Xerces 1.3.1.</p>
-
-    <p><strong>SOURCE DEVELOPERS NOTE! Ant Prerequisite Updated</strong></p>
-    <p>To build Struts from source Ant 1.4 or later is now required. This
-    does not affect developers that use Struts from the binary distribution.</p>
-
-    <p><strong>Struts Validator Integration</strong></p>
-    <p>The new Commons-Validator is now integrated with Struts and exposed
-    through the new Validator package.</p>
-
-    <p><strong>Tiles - An advanced templating taglib</strong></p>
-    <p>The Tiles JSP assembly framework has been integrated with Struts.</p>
-
-    <p><strong>Nested - An very cool taglib extension</strong></p>
-    <p>The Nested taglib is bundled with Struts and enhances the functionality
-     of the existing Struts tags.</p>
-
-    <p><strong>New Example Applications</strong></p>
-    <p>New example applications for the Validator and Tiles are now part
-    of the Struts distribution.</p>
-
-    <p><strong>New Contrib directory for optional components</strong></p>
-    <p>A new directory (<code>contrib</code>) in the CVS source repository has
-    been added to accumulate Struts add-on extensions that are generally
-    useful but have not yet been integrated into the standard code base.</p>
-
-    <ul>
-    <li>Scaffold - An extension of the Commons Scaffold toolkit of reusable 
-    classes for building web applications.</li>
-    <li>Struts-el - The optional Struts-el taglib makes it easy to use Struts 
-    with JSTL (container with servlet 2.3 support required). </li>    
-    </ul>
-
-    <p>The source for these components is available in the Struts source
-    distribution. Binary distributions may also be made available with the Struts
-    download area. As optional components, these products have their own
-    release cycles.</p>
-
-    <p><strong>Action Package Additions</strong></p>
-    <p>The following new features have been added to the basic controller
-    framework [<code>org.apache.struts.action</code>]:</p>
-    <ul>
-    <li>The ActionServlet now provides support for modular Struts applications and
-    sports several new extension points.</li>
-    <li>The new <code>ActionMessages</code> class will support a superset of
-        the capabilities of <code>ActionErrors</code>, and will be useful as
-        a collection of general purpose messages, not just errors.</li>
-    </ul>
-
-    <p><strong>Upload Package Additions</strong></p>
-    <p>The following new features have been added to the file upload classes
-    [<code>org.apache.struts.upload</code>]:</p>
-    <ul>
-    <li><code>CommonsMultipartRequestHandler:</code> New class that implements
-        file upload using the Jakarta Commons FileUpload package.</li>
-    </ul>
-
-    <p><strong>Util Package Additions</strong></p>
-    <p>The following new features have been added to the utility classes
-    [<code>org.apache.struts.util</code>]:</p>
-    <ul>
-    <li><code>LocalStrings:</code> Correct message regarding replaceable parameter so that it does not append an extraneous character.</li>
-    <li><code>LabelValueBean:</code> New class that defines a collection of name/value pairs that can be used with the &lt;html:options&gt; tag, and elsewhere.</li>
-    <li><code>MessageResources:</code> Escape any single quote characters that are included in the specified message string.</li>
-    <li><code>computeParameters:</code> Allow a transaction token to be the only parameter in .</li>
-    <li><code>RequestUtils:</code> Change to encode ampersands when building a query string.</li>
-    </ul>
-
-    <p><strong>Bean Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-bean</em> custom tag library
-    [<code>org.apache.struts.taglib.bean</code>]:</p>
-    <ul>
-    <li><code>&lt;bean:write></code>: Add format, locale and bundle attributes to support formatting values according to current
-    user locale, format string from attribute or format string from string resources.</li>
-    <li><code>&lt;bean:cookie>, &lt;bean:header>, or &lt;bean:parameter>:</code> Correct the generated scripting variable type when tag is used with the "multiple" attribute.</li>
-    <li><code>&lt;bean:message&gt;:</code> Added <code>name</code>, <code>property</code>, and  <code>scope</code> attributes to the tag, so that the message source key can be obtained dynamically from a bean or bean property.</li>
-    </ul>
-
-    <p><strong>HTML Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-html</em> custom tag library [<code>org.apache.struts.taglib.html</code>]:</p>
-    <ul>
-    <li><code>&lt;html:link&gt;:</code> Added 'action' attribute.</li>
-    <li><code>&lt;html:options&gt;:</code> If the property specified by the 'property' attribute returns null, tag now throws an error message that indicates what the real problem is, rather than causing an NPE.</li>
-    <li><code>&lt;html:option&gt; and &lt;html:options&gt;:</code> Added 'style' and 'styleClass' attributes.</li>
-    <li><code>&lt;html:optionsCollection&gt;:</code> New tag providing a cleaner way of populating HTML options from a collection.</li>
-    <li><code>&lt;bean:message&gt;:</code> Added 'name', 'property' and 'scope' attributes so that the message resource key can be obtained dynamically from a bean.</li>
-    <li><code>&lt;html:messages&gt;:</code> New tag to iterate through a message collection in the new <code>ActionMessages</code> class.</li>
-    <li><code>ActionForm:</code> Tag will now call <code>reset()</code> if it instantiates the ActionForm bean. This also requires that the bean instantiated by the tag to be an <code>ActionForm</code> subclass. </li>
-    <li><code>&lt;html:image>:</code> Added the 'align' attribute.</li>
-    <li><code>&lt;html:img>:</code> Added the mouse event attributes ('onclick', 'ondblclick', 'onmousedown', 'onmouseup', 'onmouseover', 'onmousemove', 'onmouseout').</li>
-    <li><code>SubmitTag, SelectTag, LinkTag.java, CheckboxTag, ButtonTag, ImageTag, RadioTag, and TextArea tags:</code> Added indexed property. </li>
-    </ul>
-
-    <p><strong>Logic Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-logic</em> custom tag library [<code>org.apache.struts.taglib.logic</code>]:</p>
-    <ul>
-    <li><code>&lt;logic:empty&gt;</code> and
-        <code>&lt;logic:notEmpty&gt;</code>: New tags that are similar to
-        <code>&lt;logic:present&gt;</code> and
-        <code>&lt;logic:notPresent&gt;</code> except for the treatment of
-        empty strings.</li>
-    </ul>
-
-    <p><strong>Template Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-template</em> custom tag library
-    [<code>org.apache.struts.taglib.template</code>]:</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p><strong>Documentation Additions</strong></p>
-    <p>The following new features have been added to the Struts Documentation
-    application (and corresponding contents on the Struts web site):</p>
-    <ul>
-    <li>Version Differences: New section in Release Notes to link to the JavaDocs for all Struts classes and members added or changed between versions.</li>
-    <li>FAQ/HowTos: New documentation category organizes our FAQs and example-driven howTos. 
-    New HowTos include "Building Applications", "Using SSL", and using Struts with Eclipse or NetBeans.</li>
-    <li>User Guide Preface: New section to overview the enabling technologies behind Struts.</li>
-    <li>Developer Guides: Added "cover page" to guides. These then link to the Package Descriptions and the API guides.</li>
-    <li>HTML tag documentation: expanded to cover using indexed properties with iterate.</li>
-    <li>Site Menu: Removed separate links to taglib documentation, since these are now in the Developer Guide.</li>
-    <li>Newbie FAQ: The questions most likely to be asked by new developers using Struts. Still under development.</li>
-    <li>Kickstart FAQ: The questions most likely to be asked when selecting Struts.</li>
-    <li>1.0 JavaDoc: Added archival copy to web site for future reference.</li>
-    <li>The UserGuide "Building" pages: General revisions to reflect new features and current practices.</li>
-    <li>Installation: Updated instructions for SilverStream and Resin. Add installation notes for Jetty. Added RexIP to list of nominal containers.</li>
-    <li>JavaDocs: New <code>@since Struts 1.1</code> tag to indicate new packages, classes, and members added after the Struts 1.0.x version</li>
-    </ul>
-
-  </section>
-
-  <section name="Operational Changes and Bug Fixes" href="Changes">
-
-    <p><strong>Struts Configuration Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the configuration
-    files related to Struts:</p>
-    <ul>
-    <li>Deprecated (Struts 0.5) configuration file format: Remove support.</li>
-    <li>Deprecated (Struts 0.5) methods: Remove from codebase.</li>
-    </ul>
-    <p><strong>Added Config Package</strong></p>
-    <ul>
-    <li>ControllerConfig: Added inputForward property to indicate that ActionMapping.input is a forward rather than a URI.</li>
-    <li>ControllerConfig: Added forwardPattern and inputPattern to help manage page directories in application modules.</li>
-    <li>Added package to provide more flexibility in configuring the controller and to provide support for modular applications</li>
-    </ul>
-    <p><strong>Action Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the basic
-    controller framework (package <code>org.apache.struts.action</code>):</p>
-    <ul>
-    <li>ActionMapping: input property may now refer to an ActionForward rather than a module-relative path if inputForward is set to true on the module's ControllerConfig bean [org.apache.struts.config.ControllerConfig.</li>
-    <li>ActionServlet: Added convertNull parameter to simulate the Struts 1.0 behavior when populating forms. If set to true, the numeric Java wrapper class types (like java.lang.Integer) will default to null (rather than 0).</li>
-    <li>ActionServlet: Added "config/$foo" parameter and deprecated several others in favor of components in the new config package. </li>
-    <li>ActionForms and related classes: now use a StringBuffer when responding a toString request in order to conserve resources.</li>
-    <li>LookupDispatchAction: Added standard Action to help select between internationalized buttons.</li>
-    <li>ActionForm class: Modified to use ActionServletWrapper rather than expose ActionServlet.</li>
-    <li>ActionServletWrapper class: Added for use by ActionForm to prevent the Public String properties of ActionServlet from being changed via a query string.</li>
-    <li>Action.MAPPING_KEY request attribute: Unconditionally pass the selected mapping as a request attribute ("org.apache.struts.action.mapping.instance") even if no form bean is specified.</li>
-    <li>ActionServlet: Avoid a NullPointerException in corner cases caused by failed initialization of servlet.</li>
-    <li>ActionForm class: Now truly serializable, because
-        the two non-serializable instance variables (servlet and
-        multipartRequestHandler) have been made transient.  However, if you
-        actually do serialize and deserialize such instances, it is your
-        responsibility to reset these two properties.</li>
-    <li>ActionMessages and ActionErrors: The initial order a property/key is added in is now retained.</li>
-    </ul>
-
-    <p><strong>Upload Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the file upload
-    package (package <code>org.apache.struts.upload</code>):</p>
-    <ul>
-    <li>CommonsMultipartRequestHandler: New implementation of file upload based
-        on the Jakarta Commons FileUpload package. This new implementation is
-        now the default.</li>
-    <li>BufferedMultipartInputStream: Fixed lost byte problem.</li>
-    <li>ArrayIndexOutOfBoundsException: Fixed situations where this was known to occur.</li>
-    <li>Multipart requests: Better reporting for premature closing of input streams while reading multipart requests.</li>
-    <li>New line characters: Additional fix for file corruption problem with uploads and new line characters.</li>
-    </ul>
-
-    <p><strong>Utility Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the utilities
-    (package <code>org.apache.struts.util</code>):</p>
-    <ul>
-    <li>RequestUtils: Added support for forwardPattern, pagePattern, and inputForward properties on ControllerConfig.</li>
-    <li>GenericDataSource: Deprecated and modified to act as a thin wrapper around
-    [<code>org.apache.commons.dbpc.BasicDataSource</code>].
-    Replaced by direct use of BasicDataSource or other compatible component.</li>
-    <li>RequestUtils class: Modify to use ActionServletWrapper rather than expose ActionServlet.</li>
-    <li>Added error message for the getActionErrors and getActionMessages method.</li>
-    <li>getActionErrors and getActionMessages: Added methods to generate the correct corresponding
-    object based on the object retrieved from request scope based on the key passed in.</li>
-    <li>ActionErrors or ActionMessages: The logic for creating one of these objects has been moved
-    to a utility method in RequestUtils.</li>
-    <li>JspException message: Now generated in RequestUtils.</li>
-    <li>ConvertUtils.convertCharacter(): Will now detect empty strings and return the default value.</li>
-    </ul>
-
-    <p><strong>Bean Taglib Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-bean</em> custom tag library
-    [<code>org.apache.struts.taglib.bean</code>]:</p>
-    <ul>
-    <li>&lt;html:errors&gt;: When the property tag is
-    specified, errors are no longer printed if the specified property
-    has no errors. Previously errors were always printed ! Future
-    enhancements would include additional attributes to always turn
-    off the header or footer. </li>
-    <li>Made the remaining helper methods "protected" rather than
-    "private".</li>
-    </ul>
-
-    <p><strong>HTML Taglib Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-html</em> custom tag library (package
-    <code>org.apache.struts.taglib.html</code>):</p>
-    <ul>
-    <li>FormTag: Fixed to exclude query string when identifying action mapping name.</li>
-    <li>ImgTag: Correctly URLEncode the query string parameter value even if there is only a single parameter.</li>
-    <li>MultiboxTag.doAfterBody(): Corrected to return SKIP_BODY instead of SKIP_PAGE.</li>
-    </ul>
-
-    <p><strong>Logic Taglib Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-logic</em> custom tag library (package
-    <code>org.apache.struts.taglib.logic</code>):</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p><strong>Documentation Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts Documentation
-    application (and corresponding contents on the Struts web site) have
-    occurred:</p>
-    <ul>
-    <li>Reorganized Resources into separate pages..</li>
-    <li>In the Tag Developers Guide, add more detail regarding file upload requirements.</li>
-    <li>In Building View Components, clarify that additional i18n support may be provided by the browser, and is outside the scope of the framework.</li>
-    <li>In Building Controller Components, document 'validating' init-param, add defaults for various parameters, clarify that some web.xml settings are not Struts-specific.</li>
-    <li>Tag library documentation: Moved under User's Guide.</li>
-    <li>Reorganized to separate 1.0 material from nightly build material.</li>
-    </ul>
-
-    <p><strong>MailReader Example Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts MailReader Example Application
-    have occurred:</p>
-    <ul>
-    <li>Add Russian and Japanese translations of the application resources and set the character set for the example JSP pages to "UTF-8" so that it can display either English or Japanese.</li>
-    <li>Exchange "name" for "attribute" properties for Edit mappings in Struts configuration file.</li>
-    <li>Remove references to saving database data from "tour" document, since this functionality was removed.</li>
-    </ul>
-
-    <p><strong>Template Example Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts Template Example
-    Application have occurred:</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p><strong>Exercise Taglib Example Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts Exercise Taglib Example
-    Application have occurred:</p>
-    <ul>
-    <li>Added test case for &lt;html:link> using "action" attribute. </li>
-    <li>Added test case for &lt;html:select> using &lt;html:options> based on a collection
-    saved in the page context.</li>
-    </ul>
-
-  </section>
-
-  <section name="What's different?" href="diff">
-
-    <p>This section provides links to the Struts JavaDoc for any classes that have
-    been added or deprecated since the Struts 1.0 release.
-    </p>
-
-    <p><strong>Previously deprecated classes and packages removed in Struts 1.1</strong></p>
-    <ul>
-    <li>Removed:
-      <code>org.apache.struts.utils.BeanUtils</code>,
-      <code>org.apache.struts.utils.ConvertUtils</code>, and
-      <code>org.apache.struts.utils.PropertyUtils</code> - replaced by
-      <a href ="http://jakarta.apache.org/commons/beanutils.html"><code>org.apache.commons.beanutils</code></a>
-    </li>
-    <li>Removed:
-     <code>org.apache.struts.util.ArrayStack</code>,
-     <code>org.apache.struts.util.FastArrayList</code>,
-     <code>org.apache.struts.util.FastHashMap</code>,
-     <code>org.apache.struts.util.FastTreeMap</code> - replaced by
-     <a href ="http://jakarta.apache.org/commons/collections.html"><code>org.apache.commons.collections</code></a>
-    </li>
-    <li>Removed: <code>org.apache.struts.digester.*</code> - replaced by
-    <a href ="http://jakarta.apache.org/commons/digester.html"><code>org.apache.commons.digester</code></a>
-    </li>
-    <li>Removed: The <code>struts-config.dtd</code> - Replaced by <a href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"><code>struts-config_1_1.dtd</code></a>.</li>
-    <li>Removed: The omnibus "struts" taglib and its associated TLD - replaced by separate bean, logic, and html taglibs.</li>
-    <li>Removed: The "form" taglib and its associated TLD - replaced by (renamed as) the html taglib.</li>
-    </ul>
-
-    <p><strong>Packages added in Struts 1.1</strong></p>
-
-    <ul>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/config/package-summary.html">config</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/package-summary.html">taglib.nested</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/bean/package-summary.html">taglib.nested.bean</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/html/package-summary.html">taglib.nested.html</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/logic/package-summary.html">taglib.nested.logic</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/validator/package-frame.html">validator</a></li>
-    </ul>
-
-    <p><strong>Classes added in Struts 1.1</strong></p>
-    <p>action</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionMessage.html"> ActionMessage</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionMessages.html"> ActionMessages</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/DynaActionForm.html"> DynaActionForm</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/DynaActionFormClass.html"> DynaActionFormClass</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ExceptionHandler.html"> ExceptionHandler</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/RequestProcessor.html"> RequestProcessor</a></li>
-    </ul>
-    <p>actions</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/actions/LookupDispatchAction.html"> LookupDispatchAction</a></li>
-    </ul>
-    <p>taglib.html</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/FrameTag.html"> FrameTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/JavascriptValidatorTag.html"> JavascriptValidatorTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/MessagesTag.html">MessagesTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/OptionsCollectionTag.html"> OptionsCollectionTag</a></li>
-    </ul>
-    <p>taglib.logic</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/EmptyTag.html"> EmptyTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/MessagesNotPresentTag.html"> MessagesNotPresentTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/MessagesPresentTag.html"> MessagesPresentTag</a></li>
-    </ul>
-    <p>upload</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/upload/CommonsMultipartRequestHandler.html"> CommonsMultipartRequestHandler</a></li>
-    </ul>
-    <p>util</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/util/LabelValueBean.html"> LabelValueBean</a></li>
-    </ul>
-    <p><strong>Classes with members added in Struts 1.1</strong></p>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/Action.html">action.Action</a></p>
-    <ul>
-      <li>ACTION_SERVLET_KEY</li>
-      <li>APPLICATION_KEY</li>
-      <li>MESSAGE_KEY</li>
-      <li>PLUG_INS_KEY</li>
-      <li>REQUEST_PROCESSOR_KEY</li>
-      <li>execute</li>
-      <li>getResources(javax.servlet.http.HttpServletRequest)</li>
-      <li>saveMessages</li>
-    </ul>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionServlet.html">action.A</a><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionServlet.html">ctionServlet</a></p>
-    <ul>
-      <li>configDigester</li>
-      <li>convertHack</li>
-      <li>log</li>
-      <li>processor</li>
-      <li>getInternal</li>
-      <li>destroyApplications</li>
-      <li>destroyConfigDigester</li>
-      <li>getApplicationConfig</li>
-      <li>getRequestProcessor</li>
-      <li>initApplicationConfig</li>
-      <li>initApplicationDataSources</li>
-      <li>initApplicationPlugIns</li>
-      <li>initApplicationMessageResources</li>
-      <li>initConfigDigester</li>
-      <li>methods created for backward-compatiblity only
-        <ul>
-          <li>defaultControllerConfig</li>
-          <li>defaultFormBeansConfig</li>
-          <li>defaultForwardsConfig</li>
-          <li>defaultMappingsConfig</li>
-          <li>defaultMessageResourcesConfig</li>
-        </ul>
-      </li>
-    </ul>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/BaseHandlerTag.html">taglib.html.BaseHandlerTag</a></p>
-    <ul>
-      <li>indexed</li>
-      <li>setIndexed</li>
-      <li>getIndexed</li>
-    </ul>
-    <p><strong>Classes deprecated between Struts 1.0 and Struts 1.1</strong></p>
-    <p>action</p>
-    <ul>
-      <li>ActionException</li>
-      <li>ActionFormBeans</li>
-      <li>ActionForwards</li>
-      <li>ActionMappings</li>
-    </ul>
-    <p><strong>Classes with members deprecated between Struts 1.0 and Struts 1.1</strong></p>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/Action.html">action.Action</a></p>
-
-    <ul>
-      <li>FORM_BEANS_KEY</li>
-      <li>FORWARDS_KEY</li>
-      <li>MAPPINGS_KEY</li>
-      <li>getResources()</li>
-      <li>perform</li>
-    </ul>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionServlet.html">ActionServlet</a></p>
-    <ul>
-      <li>findDataSource</li>
-      <li>findFormBean</li>
-      <li>findForward</li>
-      <li>findMapping</li>
-      <li>initDataSources</li>
-      <li>methods created for backward-compatiblity only
-        <ul>
-          <li>defaultControllerConfig</li>
-          <li>defaultFormBeansConfig</li>
-          <li>defaultForwardsConfig</li>
-          <li>defaultMappingsConfig</li>
-          <li>defaultMessageResourcesConfig</li>
-        </ul>
-      </li>
-    </ul>
-
-</section>
-
-<section>
-    <p class="right">
-    Next: <a href="installation.html">Installation</a>
-    </p>
-</section>
-
-
-    </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/release-notes-1.1-rc1.xml b/build-legacy/core/xdocs/userGuide/release-notes-1.1-rc1.xml
deleted file mode 100644
index b2f5a0f..0000000
--- a/build-legacy/core/xdocs/userGuide/release-notes-1.1-rc1.xml
+++ /dev/null
@@ -1,614 +0,0 @@
-<?xml version="1.0"?>
-<document url="release-notes-1.1-rc1.html">
-
-  <properties>
-    <title>Struts Release Notes (Version 1.1 Release Candidate 1)</title>
-  </properties>
-
-  <body>
-
-  <section name="6.1 Release Notes" href="release_notes"/>
-  <section name="Beta Notes" href="beta">
-
-    <p>This section contains the release notes for
-    <strong>nightly build</strong> of the Struts Framework,
-    for changes that have taken place since
-    <a href="release-notes-1.1-b2.html">Version 1.1 beta 2</a>
-    was released. For a complete list of changes since the last
-    production release, see the <a href="#Introduction">Introduction</a> </p>
-
-  </section>
-
-<section name="Beta Fixes" href="beta.Changes">
-
-  <p>
-  <strong>ApplicationConfig:</strong> In Struts 1.1. beta 3, the ApplicationConfig class 
-  is renamed to ModuleConfig, to conform with the venacular.
-  </p>
-
-  <p>
-  <strong>Dyna*Form:</strong> In Struts 1.1. beta 3, the reset method was changed so that 
-  it conforms to the original ActionForm implementation.</p>
-
-  <p>
-  <strong>Blank application:</strong> Fixed configuration problem with Struts Blank 
-  application.
-  </p>
-
-</section>
-
-  <section name="Introduction" href="Introduction">
-
-    <p>The remainder of this document contains the release notes for
-    <strong>nightly build</strong> of the Struts Framework,
-    and covers changes that have taken place since
-    <a href="release-notes-1.0.2.html">Version 1.0.2</a>
-    was released.  The following sections cover
-    <a href="#New">New Features</a> and <a href="#Changes">Changes</a>
-    to Struts.</p>
-
-  </section>
-
-
-  <section name="What's Included?" href="Included">
-
-    <p>The binary distribution of this release includes the following
-    files relevant to Struts:</p>
-    <ul>
-    <li><code>INSTALL</code> - Brief installation instructions.  See
-        the <code>Struts Documentation Application</code>, or online at
-        <a href="http://jakarta.apache.org/struts/">http://jakarta.apache.org/struts/</a>
-        for more information.</li>
-    <li><code>LICENSE</code> - The Apache Software Foundation license that
-        defines the terms under which you can use Struts (and other software
-        licensed by Apache).</li>
-    <li><code>README</code> - A brief introduction to Struts.</li>
-    <li><code>lib/</code> - Directory containing files you will need in
-        your own applications.  The individual files of interest are:
-        <ul>
-        <li><code>commons-*.jar</code> - Release packages from the
-            <a href="http://jakarta.apache.org/commons/">Jakarta Commons
-            Project</a> that Struts relies on.  You are welcome to use these
-            classes in your own applications.  These JAR files should be
-            copied into the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts.jar</code> - JAR file that contains the compiled
-            Java classes of Struts.  You must
-            place this file in the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts-xxxxx.tld</code> - The tag library descriptor files
-            for the Struts 1.1 tag libraries (bean, html, logic, and
-            template).  You must place these files in the <code>/WEB-INF</code>
-            directory of your web application, and reference them with
-            appropriate <code>&lt;taglib&gt;</code> directives in your
-            web.xml file.</li>
-        <li><code>jdbc2_0-stdext.jar</code> - The JDBC 2.0 Optional Package
-            API classes (package <code>javax.sql</code>).  You will need to
-            include this file in the <code>/WEB-INF/lib</code> directory
-            of your application, if it is not already made visible to web
-            applications by your servlet container.</li>
-        <li><code>struts-config_1_1.dtd</code> - The document type descriptor
-            (DTD) for the Struts 1.1 configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>.  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>struts-config_1_0.dtd</code> - The document type descriptor
-            (DTD) for the Struts 1.0 configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>.  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>web-app_2_2.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.2 specification.
-            This copy is for reference purposes only.</li>
-        <li><code>web-app_2_3.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.3 specification.
-            This copy is for reference purposes only.</li>
-        </ul></li>
-    <li><code>webapps/</code> - Web Application Archive (WAR) files for the
-        web applications that are included with Struts.</li>
-    </ul>
-
-  </section>
-
-  <section name="What's New?" href="New">
-
-    <p>Following are highlights of the new features. In the next section, we
-    provide links to the JavaDocs for the affected classes.</p>
-
-    <p><strong>New Configuration DTD</strong></p>
-    <p> The Struts Configuration 1.0 DTD has been deprecated in favor of the
-    <code><a href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">struts-config_1_1.dtd</a></code>.
-    In the Struts 1.1 release, existing Struts configuration files can be
-    loaded using either DTD version.
-    </p>
-
-    <p><strong>New Dependencies on Commons packages</strong></p>
-    <p>Several components of Struts 1.0 have been found to be useful in
-    general Java development (and not just useful for building Struts-based
-    web applications), and have been migrated into the
-    <a href="http://jakarta.apache.org/commons/">Jakarta Commons Project</a>.
-    As a result, the current development version of Struts has been modified
-    to rely on the Commons packages containing these classes, rather than the
-    Struts internal versions.  In nearly every case, this involved changing
-    only the <code>import</code> statements at the top of your classes.  Any
-    applications that utilize these classes will need to be modified in the
-    same way.  </p>
-    <p>The following Commons packages contain the replacements for the
-    corresponding Struts 1.0 classes:</p>
-    <ul>
-    <li><strong>BeanUtils Package</strong>
-        [<a href="http://jakarta.apache.org/commons/beanutils.html"><code>org.apache.commons.beanutils</code></a>] -
-        <code>org.apache.struts.utils.BeanUtils</code>,
-        <code>org.apache.struts.utils.ConvertUtils</code>, and
-        <code>org.apache.struts.utils.PropertyUtils</code>.</li>
-    <li><strong>Collections Package</strong>
-        [<a href="http://jakarta.apache.org/commons/collections.html"><code>org.apache.commons.collections</code></a>]  -
-        <code>org.apache.struts.util.ArrayStack</code>,
-        <code>org.apache.struts.util.FastArrayList</code>,
-        <code>org.apache.struts.util.FastHashMap</code>,
-        <code>org.apache.struts.util.FastTreeMap</code>.</li>
-    <li><strong>Digester Package</strong> -
-        [<a href="http://jakarta.apache.org/commons/digester.html"><code>org.apache.commons.digester</code></a>] -
-        <code>org.apache.struts.digester.*</code>.</li>
-    </ul>
-    <p>The following Commons packages are also now used by various components
-    of the Struts framework:</p>
-    <ul>
-    <li><strong>Database Connection Pool Package</strong>
-    [<a href="http://jakarta.apache.org/commons/dbcp.html"><code>org.apache.commons.dbpc</code></a>]</li>
-    <li><strong>FileUpload Package</strong>
-    [<a href="http://cvs.apache.org/viewcvs/jakarta-commons-sandbox/fileupload/"><code>org.apache.commons.fileupload</code></a>]</li>
-    <li><strong>Logging Package</strong>
-    [<a href="http://jakarta.apache.org/commons/logging.html"><code>org.apache.commons.logging</code></a>]</li>
-    <li><strong>Pool Package</strong>
-    [<a href="http://jakarta.apache.org/commons/pool/index.html"><code>org.apache.commons.pool</code></a>]</li>
-    <li><strong>Validator Package</strong>
-    [<a href="http://cvs.apache.org/viewcvs/jakarta-commons/validator/"><code>org.apache.commons.validator</code></a>]</li>
-    </ul>
-
-
-    <p><strong>NOTE! XML Parser Prerequisite Updated</strong></p>
-
-    <p>Struts now depends on an XML parser that conforms to the JAXP/1.1
-    (rather than JAXP/1.0) APIs. Parsers known to work include the JAXP/1.1
-    reference implementation, and Xerces 1.3.1.</p>
-
-    <p><strong>SOURCE DEVELOPERS NOTE! Ant Prerequisite Updated</strong></p>
-    <p>To build Struts from source Ant 1.4 or later is now required. This
-    does not affect developers that use Struts from the binary distribution.</p>
-
-    <p><strong>Struts Validator Integration</strong></p>
-    <p>The new Commons-Validator is now integrated with Struts and exposed
-    through the new Validator package.</p>
-
-    <p><strong>Tiles - An advanced templating taglib</strong></p>
-    <p>The Tiles JSP assembly framework has been integrated with Struts.</p>
-
-    <p><strong>Nested - An very cool taglib extension</strong></p>
-    <p>The Nested taglib is bundled with Struts and enhances the functionality
-     of the existing Struts tags.</p>
-
-    <p><strong>New Example Applications</strong></p>
-    <p>New example applications for the Validator and Tiles are now part
-    of the Struts distribution.</p>
-
-    <p><strong>New Contrib directory for optional components</strong></p>
-    <p>A new directory (<code>contrib</code>) in the CVS source repository has
-    been added to accumulate Struts add-on extensions that are generally
-    useful but have not yet been integrated into the standard code base.</p>
-
-    <ul>
-    <li>Scaffold - An extension of the Commons Scaffold toolkit of reusable 
-    classes for building web applications.</li>
-    <li>Struts-el - The optional Struts-el taglib makes it easy to use Struts 
-    with JSTL (container with servlet 2.3 support required). </li>    
-    </ul>
-
-    <p>The source for these components is available in the Struts source
-    distribution. Binary distributions may also be made available with the Struts
-    download area. As optional components, these products have their own
-    release cycles.</p>
-
-    <p><strong>Action Package Additions</strong></p>
-    <p>The following new features have been added to the basic controller
-    framework [<code>org.apache.struts.action</code>]:</p>
-    <ul>
-    <li>The ActionServlet now provides support for modular Struts applications and
-    sports several new extension points.</li>
-    <li>The new <code>ActionMessages</code> class will support a superset of
-        the capabilities of <code>ActionErrors</code>, and will be useful as
-        a collection of general purpose messages, not just errors.</li>
-    </ul>
-
-    <p><strong>Upload Package Additions</strong></p>
-    <p>The following new features have been added to the file upload classes
-    [<code>org.apache.struts.upload</code>]:</p>
-    <ul>
-    <li><code>CommonsMultipartRequestHandler:</code> New class that implements
-        file upload using the Jakarta Commons FileUpload package.</li>
-    </ul>
-
-    <p><strong>Util Package Additions</strong></p>
-    <p>The following new features have been added to the utility classes
-    [<code>org.apache.struts.util</code>]:</p>
-    <ul>
-    <li><code>LocalStrings:</code> Correct message regarding replaceable parameter so that it does not append an extraneous character.</li>
-    <li><code>LabelValueBean:</code> New class that defines a collection of name/value pairs that can be used with the &lt;html:options&gt; tag, and elsewhere.</li>
-    <li><code>MessageResources:</code> Escape any single quote characters that are included in the specified message string.</li>
-    <li><code>computeParameters:</code> Allow a transaction token to be the only parameter in .</li>
-    <li><code>RequestUtils:</code> Change to encode ampersands when building a query string.</li>
-    </ul>
-
-    <p><strong>Bean Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-bean</em> custom tag library
-    [<code>org.apache.struts.taglib.bean</code>]:</p>
-    <ul>
-    <li><code>&lt;bean:write></code>: Add format, locale and bundle attributes to support formatting values according to current
-    user locale, format string from attribute or format string from string resources.</li>
-    <li><code>&lt;bean:cookie>, &lt;bean:header>, or &lt;bean:parameter>:</code> Correct the generated scripting variable type when tag is used with the "multiple" attribute.</li>
-    <li><code>&lt;bean:message&gt;:</code> Added <code>name</code>, <code>property</code>, and  <code>scope</code> attributes to the tag, so that the message source key can be obtained dynamically from a bean or bean property.</li>
-    </ul>
-
-    <p><strong>HTML Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-html</em> custom tag library [<code>org.apache.struts.taglib.html</code>]:</p>
-    <ul>
-    <li><code>&lt;html:link&gt;:</code> Added 'action' attribute.</li>
-    <li><code>&lt;html:options&gt;:</code> If the property specified by the 'property' attribute returns null, tag now throws an error message that indicates what the real problem is, rather than causing an NPE.</li>
-    <li><code>&lt;html:option&gt; and &lt;html:options&gt;:</code> Added 'style' and 'styleClass' attributes.</li>
-    <li><code>&lt;html:optionsCollection&gt;:</code> New tag providing a cleaner way of populating HTML options from a collection.</li>
-    <li><code>&lt;bean:message&gt;:</code> Added 'name', 'property' and 'scope' attributes so that the message resource key can be obtained dynamically from a bean.</li>
-    <li><code>&lt;html:messages&gt;:</code> New tag to iterate through a message collection in the new <code>ActionMessages</code> class.</li>
-    <li><code>ActionForm:</code> Tag will now call <code>reset()</code> if it instantiates the ActionForm bean. This also requires that the bean instantiated by the tag to be an <code>ActionForm</code> subclass. </li>
-    <li><code>&lt;html:image>:</code> Added the 'align' attribute.</li>
-    <li><code>&lt;html:img>:</code> Added the mouse event attributes ('onclick', 'ondblclick', 'onmousedown', 'onmouseup', 'onmouseover', 'onmousemove', 'onmouseout').</li>
-    <li><code>SubmitTag, SelectTag, LinkTag.java, CheckboxTag, ButtonTag, ImageTag, RadioTag, and TextArea tags:</code> Added indexed property. </li>
-    </ul>
-
-    <p><strong>Logic Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-logic</em> custom tag library [<code>org.apache.struts.taglib.logic</code>]:</p>
-    <ul>
-    <li><code>&lt;logic:empty&gt;</code> and
-        <code>&lt;logic:notEmpty&gt;</code>: New tags that are similar to
-        <code>&lt;logic:present&gt;</code> and
-        <code>&lt;logic:notPresent&gt;</code> except for the treatment of
-        empty strings.</li>
-    </ul>
-
-    <p><strong>Template Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-template</em> custom tag library
-    [<code>org.apache.struts.taglib.template</code>]:</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p><strong>Documentation Additions</strong></p>
-    <p>The following new features have been added to the Struts Documentation
-    application (and corresponding contents on the Struts web site):</p>
-    <ul>
-    <li>Version Differences: New section in Release Notes to link to the JavaDocs for all Struts classes and members added or changed between versions.</li>
-    <li>FAQ/HowTos: New documentation category organizes our FAQs and example-driven howTos. 
-    New HowTos include "Building Applications", "Using SSL", and using Struts with Eclipse or NetBeans.</li>
-    <li>User Guide Preface: New section to overview the enabling technologies behind Struts.</li>
-    <li>Developer Guides: Added "cover page" to guides. These then link to the Package Descriptions and the API guides.</li>
-    <li>HTML tag documentation: expanded to cover using indexed properties with iterate.</li>
-    <li>Site Menu: Removed separate links to taglib documentation, since these are now in the Developer Guide.</li>
-    <li>Newbie FAQ: The questions most likely to be asked by new developers using Struts. Still under development.</li>
-    <li>Kickstart FAQ: The questions most likely to be asked when selecting Struts.</li>
-    <li>1.0 JavaDoc: Added archival copy to web site for future reference.</li>
-    <li>The UserGuide "Building" pages: General revisions to reflect new features and current practices.</li>
-    <li>Installation: Updated instructions for SilverStream and Resin. Add installation notes for Jetty. Added RexIP to list of nominal containers.</li>
-    <li>JavaDocs: New <code>@since Struts 1.1</code> tag to indicate new packages, classes, and members added after the Struts 1.0.x version</li>
-    </ul>
-
-  </section>
-
-  <section name="Operational Changes and Bug Fixes" href="Changes">
-
-    <p><strong>Struts Configuration Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the configuration
-    files related to Struts:</p>
-    <ul>
-    <li>Deprecated (Struts 0.5) configuration file format: Remove support.</li>
-    <li>Deprecated (Struts 0.5) methods: Remove from codebase.</li>
-    </ul>
-    <p><strong>Added Config Package</strong></p>
-    <ul>
-    <li>ControllerConfig: Added inputForward property to indicate that ActionMapping.input is a forward rather than a URI.</li>
-    <li>ControllerConfig: Added forwardPattern and inputPattern to help manage page directories in application modules.</li>
-    <li>Added package to provide more flexibility in configuring the controller and to provide support for modular applications</li>
-    </ul>
-    <p><strong>Action Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the basic
-    controller framework (package <code>org.apache.struts.action</code>):</p>
-    <ul>
-    <li>ActionMapping: input property may now refer to an ActionForward rather than a module-relative path if inputForward is set to true on the module's ControllerConfig bean [org.apache.struts.config.ControllerConfig.</li>
-    <li>ActionServlet: Added convertNull parameter to simulate the Struts 1.0 behavior when populating forms. If set to true, the numeric Java wrapper class types (like java.lang.Integer) will default to null (rather than 0).</li>
-    <li>ActionServlet: Added "config/$foo" parameter and deprecated several others in favor of components in the new config package. </li>
-    <li>ActionForms and related classes: now use a StringBuffer when responding a toString request in order to conserve resources.</li>
-    <li>LookupDispatchAction: Added standard Action to help select between internationalized buttons.</li>
-    <li>ActionForm class: Modified to use ActionServletWrapper rather than expose ActionServlet.</li>
-    <li>ActionServletWrapper class: Added for use by ActionForm to prevent the Public String properties of ActionServlet from being changed via a query string.</li>
-    <li>Action.MAPPING_KEY request attribute: Unconditionally pass the selected mapping as a request attribute ("org.apache.struts.action.mapping.instance") even if no form bean is specified.</li>
-    <li>ActionServlet: Avoid a NullPointerException in corner cases caused by failed initialization of servlet.</li>
-    <li>ActionForm class: Now truly serializable, because
-        the two non-serializable instance variables (servlet and
-        multipartRequestHandler) have been made transient.  However, if you
-        actually do serialize and deserialize such instances, it is your
-        responsibility to reset these two properties.</li>
-    <li>ActionMessages and ActionErrors: The initial order a property/key is added in is now retained.</li>
-    </ul>
-
-    <p><strong>Upload Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the file upload
-    package (package <code>org.apache.struts.upload</code>):</p>
-    <ul>
-    <li>CommonsMultipartRequestHandler: New implementation of file upload based
-        on the Jakarta Commons FileUpload package. This new implementation is
-        now the default.</li>
-    <li>BufferedMultipartInputStream: Fixed lost byte problem.</li>
-    <li>ArrayIndexOutOfBoundsException: Fixed situations where this was known to occur.</li>
-    <li>Multipart requests: Better reporting for premature closing of input streams while reading multipart requests.</li>
-    <li>New line characters: Additional fix for file corruption problem with uploads and new line characters.</li>
-    </ul>
-
-    <p><strong>Utility Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the utilities
-    (package <code>org.apache.struts.util</code>):</p>
-    <ul>
-    <li>RequestUtils: Added support for forwardPattern, pagePattern, and inputForward properties on ControllerConfig.</li>
-    <li>GenericDataSource: Deprecated and modified to act as a thin wrapper around
-    [<code>org.apache.commons.dbpc.BasicDataSource</code>].
-    Replaced by direct use of BasicDataSource or other compatible component.</li>
-    <li>RequestUtils class: Modify to use ActionServletWrapper rather than expose ActionServlet.</li>
-    <li>Added error message for the getActionErrors and getActionMessages method.</li>
-    <li>getActionErrors and getActionMessages: Added methods to generate the correct corresponding
-    object based on the object retrieved from request scope based on the key passed in.</li>
-    <li>ActionErrors or ActionMessages: The logic for creating one of these objects has been moved
-    to a utility method in RequestUtils.</li>
-    <li>JspException message: Now generated in RequestUtils.</li>
-    <li>ConvertUtils.convertCharacter(): Will now detect empty strings and return the default value.</li>
-    </ul>
-
-    <p><strong>Bean Taglib Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-bean</em> custom tag library
-    [<code>org.apache.struts.taglib.bean</code>]:</p>
-    <ul>
-    <li>&lt;html:errors&gt;: When the property tag is
-    specified, errors are no longer printed if the specified property
-    has no errors. Previously errors were always printed ! Future
-    enhancements would include additional attributes to always turn
-    off the header or footer. </li>
-    <li>Made the remaining helper methods "protected" rather than
-    "private".</li>
-    </ul>
-
-    <p><strong>HTML Taglib Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-html</em> custom tag library (package
-    <code>org.apache.struts.taglib.html</code>):</p>
-    <ul>
-    <li>FormTag: Fixed to exclude query string when identifying action mapping name.</li>
-    <li>ImgTag: Correctly URLEncode the query string parameter value even if there is only a single parameter.</li>
-    <li>MultiboxTag.doAfterBody(): Corrected to return SKIP_BODY instead of SKIP_PAGE.</li>
-    </ul>
-
-    <p><strong>Logic Taglib Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-logic</em> custom tag library (package
-    <code>org.apache.struts.taglib.logic</code>):</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p><strong>Documentation Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts Documentation
-    application (and corresponding contents on the Struts web site) have
-    occurred:</p>
-    <ul>
-    <li>Reorganized Resources into separate pages..</li>
-    <li>In the Tag Developers Guide, add more detail regarding file upload requirements.</li>
-    <li>In Building View Components, clarify that additional i18n support may be provided by the browser, and is outside the scope of the framework.</li>
-    <li>In Building Controller Components, document 'validating' init-param, add defaults for various parameters, clarify that some web.xml settings are not Struts-specific.</li>
-    <li>Tag library documentation: Moved under User's Guide.</li>
-    <li>Reorganized to separate 1.0 material from nightly build material.</li>
-    </ul>
-
-    <p><strong>MailReader Example Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts MailReader Example Application
-    have occurred:</p>
-    <ul>
-    <li>Add Russian and Japanese translations of the application resources and set the character set for the example JSP pages to "UTF-8" so that it can display either English or Japanese.</li>
-    <li>Exchange "name" for "attribute" properties for Edit mappings in Struts configuration file.</li>
-    <li>Remove references to saving database data from "tour" document, since this functionality was removed.</li>
-    </ul>
-
-    <p><strong>Template Example Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts Template Example
-    Application have occurred:</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p><strong>Exercise Taglib Example Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts Exercise Taglib Example
-    Application have occurred:</p>
-    <ul>
-    <li>Added test case for &lt;html:link> using "action" attribute. </li>
-    <li>Added test case for &lt;html:select> using &lt;html:options> based on a collection
-    saved in the page context.</li>
-    </ul>
-
-  </section>
-
-  <section name="What's different?" href="diff">
-
-    <p>This section provides links to the Struts JavaDoc for any classes that have
-    been added or deprecated since the Struts 1.0 release.
-    </p>
-
-    <p><strong>Previously deprecated classes and packages removed in Struts 1.1</strong></p>
-    <ul>
-    <li>Removed:
-      <code>org.apache.struts.utils.BeanUtils</code>,
-      <code>org.apache.struts.utils.ConvertUtils</code>, and
-      <code>org.apache.struts.utils.PropertyUtils</code> - replaced by
-      <a href ="http://jakarta.apache.org/commons/beanutils.html"><code>org.apache.commons.beanutils</code></a>
-    </li>
-    <li>Removed:
-     <code>org.apache.struts.util.ArrayStack</code>,
-     <code>org.apache.struts.util.FastArrayList</code>,
-     <code>org.apache.struts.util.FastHashMap</code>,
-     <code>org.apache.struts.util.FastTreeMap</code> - replaced by
-     <a href ="http://jakarta.apache.org/commons/collections.html"><code>org.apache.commons.collections</code></a>
-    </li>
-    <li>Removed: <code>org.apache.struts.digester.*</code> - replaced by
-    <a href ="http://jakarta.apache.org/commons/digester.html"><code>org.apache.commons.digester</code></a>
-    </li>
-    <li>Removed: The <code>struts-config.dtd</code> - Replaced by <a href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"><code>struts-config_1_1.dtd</code></a>.</li>
-    <li>Removed: The omnibus "struts" taglib and its associated TLD - replaced by separate bean, logic, and html taglibs.</li>
-    <li>Removed: The "form" taglib and its associated TLD - replaced by (renamed as) the html taglib.</li>
-    </ul>
-
-    <p><strong>Packages added in Struts 1.1</strong></p>
-
-    <ul>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/config/package-summary.html">config</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/package-summary.html">taglib.nested</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/bean/package-summary.html">taglib.nested.bean</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/html/package-summary.html">taglib.nested.html</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/logic/package-summary.html">taglib.nested.logic</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/validator/package-frame.html">validator</a></li>
-    </ul>
-
-    <p><strong>Classes added in Struts 1.1</strong></p>
-    <p>action</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionMessage.html"> ActionMessage</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionMessages.html"> ActionMessages</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/DynaActionForm.html"> DynaActionForm</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/DynaActionFormClass.html"> DynaActionFormClass</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ExceptionHandler.html"> ExceptionHandler</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/RequestProcessor.html"> RequestProcessor</a></li>
-    </ul>
-    <p>actions</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/actions/LookupDispatchAction.html"> LookupDispatchAction</a></li>
-    </ul>
-    <p>taglib.html</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/FrameTag.html"> FrameTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/JavascriptValidatorTag.html"> JavascriptValidatorTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/MessagesTag.html">MessagesTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/OptionsCollectionTag.html"> OptionsCollectionTag</a></li>
-    </ul>
-    <p>taglib.logic</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/EmptyTag.html"> EmptyTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/MessagesNotPresentTag.html"> MessagesNotPresentTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/MessagesPresentTag.html"> MessagesPresentTag</a></li>
-    </ul>
-    <p>upload</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/upload/CommonsMultipartRequestHandler.html"> CommonsMultipartRequestHandler</a></li>
-    </ul>
-    <p>util</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/util/LabelValueBean.html"> LabelValueBean</a></li>
-    </ul>
-    <p><strong>Classes with members added in Struts 1.1</strong></p>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/Action.html">action.Action</a></p>
-    <ul>
-      <li>ACTION_SERVLET_KEY</li>
-      <li>APPLICATION_KEY</li>
-      <li>MESSAGE_KEY</li>
-      <li>PLUG_INS_KEY</li>
-      <li>REQUEST_PROCESSOR_KEY</li>
-      <li>execute</li>
-      <li>getResources(javax.servlet.http.HttpServletRequest)</li>
-      <li>saveMessages</li>
-    </ul>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionServlet.html">action.A</a><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionServlet.html">ctionServlet</a></p>
-    <ul>
-      <li>configDigester</li>
-      <li>convertHack</li>
-      <li>log</li>
-      <li>processor</li>
-      <li>getInternal</li>
-      <li>destroyApplications</li>
-      <li>destroyConfigDigester</li>
-      <li>getApplicationConfig</li>
-      <li>getRequestProcessor</li>
-      <li>initApplicationConfig</li>
-      <li>initApplicationDataSources</li>
-      <li>initApplicationPlugIns</li>
-      <li>initApplicationMessageResources</li>
-      <li>initConfigDigester</li>
-      <li>methods created for backward-compatiblity only
-        <ul>
-          <li>defaultControllerConfig</li>
-          <li>defaultFormBeansConfig</li>
-          <li>defaultForwardsConfig</li>
-          <li>defaultMappingsConfig</li>
-          <li>defaultMessageResourcesConfig</li>
-        </ul>
-      </li>
-    </ul>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/BaseHandlerTag.html">taglib.html.BaseHandlerTag</a></p>
-    <ul>
-      <li>indexed</li>
-      <li>setIndexed</li>
-      <li>getIndexed</li>
-    </ul>
-    <p><strong>Classes deprecated between Struts 1.0 and Struts 1.1</strong></p>
-    <p>action</p>
-    <ul>
-      <li>ActionException</li>
-      <li>ActionFormBeans</li>
-      <li>ActionForwards</li>
-      <li>ActionMappings</li>
-    </ul>
-    <p><strong>Classes with members deprecated between Struts 1.0 and Struts 1.1</strong></p>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/Action.html">action.Action</a></p>
-
-    <ul>
-      <li>FORM_BEANS_KEY</li>
-      <li>FORWARDS_KEY</li>
-      <li>MAPPINGS_KEY</li>
-      <li>getResources()</li>
-      <li>perform</li>
-    </ul>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionServlet.html">ActionServlet</a></p>
-    <ul>
-      <li>findDataSource</li>
-      <li>findFormBean</li>
-      <li>findForward</li>
-      <li>findMapping</li>
-      <li>initDataSources</li>
-      <li>methods created for backward-compatiblity only
-        <ul>
-          <li>defaultControllerConfig</li>
-          <li>defaultFormBeansConfig</li>
-          <li>defaultForwardsConfig</li>
-          <li>defaultMappingsConfig</li>
-          <li>defaultMessageResourcesConfig</li>
-        </ul>
-      </li>
-    </ul>
-
-</section>
-
-<section>
-    <p class="right">
-    Next: <a href="installation.html">Installation</a>
-    </p>
-</section>
-
-
-    </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/release-notes-1.1-rc2.xml b/build-legacy/core/xdocs/userGuide/release-notes-1.1-rc2.xml
deleted file mode 100644
index 7c0bed8..0000000
--- a/build-legacy/core/xdocs/userGuide/release-notes-1.1-rc2.xml
+++ /dev/null
@@ -1,886 +0,0 @@
-<?xml version="1.0"?>
-<document url="release-notes-1.1-rc2.html">
-
-  <properties>
-    <title>Struts Release Notes (Version 1.1 Release Candidate 1)</title>
-  </properties>
-
-  <body>
-
-  <section name="6.1 Release Notes" href="release_notes"/>
-  <section name="Release Candidate Notes" href="beta">
-
-    <p>This section contains the release notes for the
-    <strong>Version 1.1 Release Candidate 2</strong> build of the Struts Framework,
-    for changes that have taken place since
-    <a href="release-notes-1.1-rc1.html">Version 1.1 Release Candidate 1</a>
-    was issued. For a complete list of changes since the last
-    production release, see the <a href="#Introduction">Introduction</a> </p>
-
-  </section>
-
-<section name="RC/Beta Fixes" href="beta.Changes">
-
-    <p>
-        In RC2, the <strong>Commons-DBCP and Commons-Pool dependencies have been removed</strong>.
-        These are replaced with a dependency on the Struts-Legacy package,
-        containing the GenericDataSource and GenericConnection classes from Struts 1.0.2.
-        These are distributed for J2SE 1.3 but may be recompiled for J2SE 1.4.
-        Other DataSource implementations may be plugged in (recommended).
-    </p>
-
-    <p>
-        RC2 is dependent upon <strong>Commons FileUpload RC1</strong>.
-        The final release of Struts 1.1 cannot happen until this dependency is
-        updated to a final release of FileUpload.
-        All other dependencies are in their final release.
-    </p>
-
-    <p>
-        Other changes since RC1 have been routine fixes and refactorings.
-    </p>
-
-    <p>
-        <strong>OTHER CHANGES:</strong>
-    </p>
-
-    <p>
-        <strong>Action package:</strong>
-        Deprecated processActionForward() because ActionForward is a subclass of ForwardConfig so there's no reason we can't use processForwardConfig() instead.
-        Updated to use processForwardConfig instead of deprecated processActionForward.
-        Deprecated the rest of the Action constants in favor of Globals.
-        Refactored some of initModuleConfig into a separate method and cleaned up.
-        Improved exception handling in ActionServlet and RequestProcessor; generally, we limited the scope of try/catch blocks and caught specific exceptions rather than Throwable.
-    </p>
-
-    <p>
-        <strong>Documentation:</strong>
-        Document the &lt;html:html&gt; tag's locale attribute behaviour of creating a session if needed.
-        Added note to validator section regarding the converNull servlet parameter and required validations of java.lang.Integer fields.
-        Moved sites and consultants page to Struts Wiki.
-        Other minor tweaks.
-    </p>
-
-    <p>
-        <strong>EL package:</strong>
-        Fixed mapping of "onkeypress" attribute.
-        Separated "expr" attribute into "expr" and "exprValue", being the original attribute value and the evaluated value.
-        Fixed probably long-standing bug in notMatch tag that made it behave identically to the "match" tag (instead of the reverse).
-
-    </p>
-
-    <p>
-        <strong>Example applicattions:</strong>
-        Added Multi-config files for the example app.
-    </p>
-
-
-    <p>
-        <strong>Legacy package:</strong>
-        Added package under contrib to host old GenericDataSource and GenericConnection classes.
-
-    </p>
-    <p>
-        <strong>Taglibs packages:</strong>
-        Fixed several import statements.
-        Refactored converting a scope name into its integer constant into a new method RequestUtils.getScope(String), and changed the DefineTag, EmptyTag, and TagUtils classes to use the new method.
-    </p>
-
-    <p>
-        <em>faces taglib.</em> Added early release to contrib area.
-    </p>
-
-    <p>
-       <em>html taglib.</em>
-       Reset the 'processed' flag at the beginning of each usage of the tag. Use a local copy of the 'name' attribute to avoid modifying the attribute value itself.
-       Fixed references to static members.
-       For FrameTag and HiddenTag, conform TLD with implementations.
-       In ErrorsTag, render a platform-independent line ending instead of hard coded "\r\n".
-       In JavaScriptValidatorTag, make the line-end generation platform independent so that Cactus tests work properly.
-       In FormTag, refactored code into smaller reusable methods.
-       In RewriteTag, encode the ampersand character in XHTML mode only, otherwise write the ampersand as is so the URL will work in JavaScript scripts.
-       Refactored form bean initialization out of doStartTag() into its own method.
-       Refactored doStartTag() 'if' statement to avoid having long nested 'if' logic.
-       In ErrorTag, fixed formatting and deprecated unused defaultLocale variable.
-       Refactored doStartTag() and doEndTag() into smaller methods.
-       Moved xhtml check to RequestUtils instead of duplicating the logic in many different classes.
-       Added lookupProperty() method to BaseHandlerTag because both RadioTag and TextareaTag used the same code.
-       Refactored TextareaTag into smaller methods.
-       In JavaScriptValidatorTag, replaced duplicated code with call to RequestUtils.retrieveUserLocale() and simplified an 'if' statement.
-    </p>
-
-    <p>
-        <em>logic taglib.</em>
-        Set 'iterator' to null in doEndTag() so that we release the iterator reference as early as possible. We cannot do the same for 'collection' since it is a tag attribute, and needs to remain unchanged to comply with the JSP spec.
-        Don't create empty cookies array if null, just don't run the loop at all.
-        In ForwardTag, remove unnecessary test for null.
-
-    </p>
-
-   <p>
-       <em>nested tablibs.</em>
-       Improved support for Tomcat 4.1.18.
-       Replace EVAL_BODY_AGAIN with EVAL_BODY_TAG so that the code compiles against the JSP 1.1 API.
-       Changed the &lt;nested:define&gt; tag's tei class to reference a new custom tei class for the nested tags.
-   </p>
-
-    <p>
-        <em>tiles taglib.</em>
-        Fixed references to static members.
-        Deprecated outdated Tiles TextTag.
-        For InsertTag, only include page if it's non-null.
-        For InserTag, remove page check before including for more investigation.
-    </p>
-
-    <p>
-        <strong>Test packages:</strong>
-        Added several new tests for the bean, html, and logic taglibs to the suite setup at the tail-end of RC1.
-        Note: We cannot resolve request.getServerPort() in the Cactus 1.4.x environment, so for now, our tests will only run on Cactus 1.3
-    </p>
-
-    <p>
-        <strong>Tiles package:</strong>
-        Deprecated TilesUtil.applicationClass() in favor of RequestUtils.applicationClass()
-    </p>
-
-    <p>
-        <strong>Util package:</strong>
-        retrieveUserLocale now uses the request.getLocale() method for finding the user's preferred locale.
-        If user has not specified this with Accept-Language header, the server default locale is used.
-        Change encodeURL() to not use reflection on every call.
-        In RequestUtils, simplified separator logic in computeURL().
-    </p>
-
-    <p>
-        <strong>Validator package:</strong>
-        Deprecate logging methods and indicate that commons-logging should be used.
-        Logic simplification and minor formatting fixes to Resources class.
-
-    </p>
-
-    <p>
-        <strong>build files:</strong>
-    </p>
-
-    <ul>
-        <li>
-            (build.properties.sample) Add an entry for http-unit.
-        </li>
-        <li>
-            Remove dependency on Commons Resources for Struts 1.1 release. (This migration will happen later).
-        </li>
-        <li>
-            Make it possible to build Struts against the Servlet 2.4 and JSP 2.0 APIs, where the JSP classes have been pulled out into their own JAR file (jsp.jar). On an earlier platform, you can leave the "jsp.jar" property unset and thing will continue to operate as they have before.
-        </li>
-
-    </ul>
-
-
-    <p>
-        <strong>Bugzilla Problem Report fixes:</strong>
-    </p>
-
-    <ul>
-        <li>
-            Fixed #17312 - retrieveUserLocale throws exception without sessions.
-        </li>
-        <li>
-           Fixed #17254 - If body text is empty and there's no resource key to lookup, display nothing in the option.
-        </li>
-        <li>
-           Fixed #17371- The tag now uses RequestUtils.retrieveUserLocale for looking up the appropriate locale. Using that method protects us from needlessly creating a session.
-        </li>
-        <li>
-           Fixed #17375 - Problem in ELErrorsTag because the "name" attribute of ErrorsTag has a non-null default value.
-        </li>
-        <li>
-          Fixed #17622 - validator-rules.xml issues.
-        </li>
-        <li>
-          Fixed #17299 - Set page variable from dyna map before validating.
-        </li>
-        <li>
-          Fixed #17838 - Help debug specific user errors by showing quotes around the key that is in error (missing or mispelled).
-        </li>
-        <li>
-          Fixed #17833 - validateShort and isAllDigits for negative numbers.
-        </li>
-        <li>
-          Fixed #17328 - Synchronized loadLocale.
-        </li>
-        <li>
-          Fixed #18018 - Changed field-* variables to camel case and no "-".
-        </li>
-        <li>
-          Fixed #16548 - validateMinLength and validateMaxLength are now independent of the required check.
-        </li>
-        <li>
-         Fixed #17389 - Splice in the I18nFactorySet.calculatePostixes from the attachment, rebuild, and ran the unit tests successfully.
-        </li>
-        <li>
-         Fixed #17273 - Removed extra return statement (RequestUtils).
-        </li>
-        <li>
-         Fixed #17592 - Tag should support a "naked" collection that is not a property of a bean.
-        </li>
-        <li>
-         Fixed #17592 - Made "property" attribute of "optionsCollection" tag be not required, to match same change made for #17592 in base tag.
-        </li>
-        <li>
-         Fixed #17562 - Change the InsertTag to let it use PageContext.include() instead of RequestDispatcher.include(). We are no back to the same mechanism used in the 1.1b3 release.
-        </li>
-        <li>
-         Fixed #18186 - Use temp variable instead of overwriting tag attribute variable.
-        </li>
-        <li>
-         Fixed #18394 - Changed error to info log if DefinitionsFactory is not supplied.
-        </li>
-        <li>
-         Fixed #18538 - Changed shortname to "tiles".
-        </li>
-        <li>
-         Fixed #18591 - Braces placement in message().
-        </li>
-        <li>
-         Fixed #18018 - Don't output requiredif field* javascript variables because they're not used and break other validations.
-        </li>
-        <li>
-         Fixed #18794 -Check ServletContext for ModuleConfig instead of request.
-        </li>
-        <li>
-         Fixed #18864 - Changed Class-Path to conform to jar spec.  The previous patch fixing a bug in  WebLogic caused warnings in Resin.
-        </li>
-        <li>
-         Fixed #18991 - Allow messages object passed to add(ActionMessages) to be null.
-        </li>
-        <li>
-         Fixed #19040 -  Added null checks back to ActionServlet.
-        </li>
-        <li>
-         Fixed #19157 - Implement Serializable in NestedReference.
-        </li>
-        <li>
-         Fixed #18869 - Added display-name to web.xml files.
-        </li>
-        <li>
-        Fixed #19223 - Synchronized token methods for PR.  Post 1.1 these methods should be moved to some kind of TokenProcessor class for reusability by other components such as the RequestProcessor (#16743).
-        </li>
-        <li>
-         Fixed #19236 -  Added "action" attribute to "html-el:frame" tag.
-        </li>
-        <li>
-         Fixed #11932 - Factored common code out of message() and present() into a new private method retrieveMessageResources.
-        </li>
-        <li>
-         Fixed #11922 - Moved Action's token methods to this new class to fix synchronization issues and allow Action to be more focused.
-        </li>
-        <li>
-         Fixed #19594 - Fixed minlength javascript for PR.  Also, removed
-  password field checking from validateMask.
-        </li>
-        <li>
-        Fixed #19773 - EmptyTag and added test to exercise-taglib webapp.
-        </li>
-        <li>
-        Fixed #19835 - Add check against -1 to maxSize.
-        </li>
-        <li>
-        Fixed #20034 - Call releaseInternal() in release() so if error occurs between begin/end of tag next user/request will not be working with old parameters.
-        </li>
-        <li>
-        Fixed #20455 - validateRequiredIf() fails on Strings of whitespace.
-        </li>
-    </ul>
-
-
-</section>
-
-  <section name="Introduction" href="Introduction">
-
-    <p>The remainder of this document contains the release notes for
-    <strong>1.1 Release Candidate 2</strong> build of the Struts Framework,
-    and covers changes that have taken place since
-    <a href="release-notes-1.0.2.html">Version 1.0.2</a>
-    was released.  The following sections cover
-    <a href="#New">New Features</a> and <a href="#Changes">Changes</a>
-    to Struts.</p>
-
-  </section>
-
-
-  <section name="What's Included?" href="Included">
-
-    <p>The binary distribution of this release includes the following
-    files relevant to Struts:</p>
-    <ul>
-    <li><code>INSTALL</code> - Brief installation instructions.  See
-        the <code>Struts Documentation Application</code>, or online at
-        <a href="http://jakarta.apache.org/struts/">http://jakarta.apache.org/struts/</a>,
-        for more information.</li>
-    <li><code>LICENSE</code> - The Apache Software Foundation license that
-        defines the terms under which you can use Struts (and other software
-        licensed by Apache).</li>
-    <li><code>README</code> - A brief introduction to Struts.</li>
-    <li><code>lib/</code> - Directory containing files you will need in
-        your own applications.  The individual files of interest are:
-        <ul>
-        <li><code>commons-*.jar</code> - Release packages from the
-            <a href="http://jakarta.apache.org/commons/">Jakarta Commons
-            Project</a> that Struts relies on.  You are welcome to use these
-            classes in your own applications.  These JAR files should be
-            copied into the <code>/WEB-INF/lib</code> directory of
-            your web application. See below for the version of each
-            Commons library that is included.</li>
-        <li><code>struts.jar</code> - JAR file that contains the compiled
-            Java classes of Struts.  You must
-            place this file in the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts-xxxxx.tld</code> - The tag library descriptor files
-            for the Struts 1.1 tag libraries (bean, html, logic, and
-            template).  You must place these files in the <code>/WEB-INF</code>
-            directory of your web application, and reference them with
-            appropriate <code>&lt;taglib&gt;</code> directives in your
-            web.xml file.</li>
-        <li><code>jdbc2_0-stdext.jar</code> - The JDBC 2.0 Optional Package
-            API classes (package <code>javax.sql</code>).  You will need to
-            include this file in the <code>/WEB-INF/lib</code> directory
-            of your application, if it is not already made visible to web
-            applications by your servlet container.</li>
-        <li><code>struts-config_1_1.dtd</code> - The document type descriptor
-            (DTD) for the Struts 1.1 configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>).  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>struts-config_1_0.dtd</code> - The document type descriptor
-            (DTD) for the Struts 1.0 configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>).  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>web-app_2_2.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.2 specification.
-            This copy is for reference purposes only.</li>
-        <li><code>web-app_2_3.dtd</code> - The document type descriptor (DTD)
-            for web.xml files conforming to the Servlet 2.3 specification.
-            This copy is for reference purposes only.</li>
-        </ul></li>
-    <li><code>webapps/</code> - Web Application Archive (WAR) files for the
-        web applications that are included with Struts.</li>
-    </ul>
-
-    <p>The following Jakarta Commons libraries are included with this release
-    of Struts:</p>
-    <ul>
-    <li>Commons BeanUtils 1.6.1</li>
-    <li>Commons Collections 2.1</li>
-    <li>Commons Digester 1.5</li>
-    <li>Commons FileUpload 1.0 RC1</li>
-    <li>Commons Lang 1.0.1</li>
-    <li>Commons Logging 1.0.3</li>
-    <li>Commons Validator 1.0.2</li>
-    </ul>
-
-  </section>
-
-  <section name="What's New?" href="New">
-
-    <p>Following are highlights of the new features. In the next section, we
-    provide links to the JavaDocs for the affected classes.</p>
-
-    <p><strong>New Configuration DTD</strong></p>
-    <p> The Struts Configuration 1.0 DTD has been deprecated in favor of the
-    <code><a href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">struts-config_1_1.dtd</a></code>.
-    In the Struts 1.1 release, existing Struts configuration files can be
-    loaded using either DTD version.
-    </p>
-
-    <p><strong>New Dependencies on Commons packages</strong></p>
-    <p>Several components of Struts 1.0 have been found to be useful in
-    general Java development (and not just useful for building Struts-based
-    web applications), and have been migrated into the
-    <a href="http://jakarta.apache.org/commons/">Jakarta Commons Project</a>.
-    As a result, this release of Struts has been modified
-    to rely on the Commons packages containing these classes, rather than the
-    Struts internal versions.  In nearly every case, this involved changing
-    only the <code>import</code> statements at the top of the classes.  Any
-    of your applications that utilize these classes will need to be modified in
-    the same way.  </p>
-    <p>The following Commons packages contain the replacements for the
-    corresponding Struts 1.0 classes:</p>
-    <ul>
-    <li><strong>BeanUtils Package</strong>
-        [<a href="http://jakarta.apache.org/commons/beanutils.html"><code>org.apache.commons.beanutils</code></a>] -
-        <code>org.apache.struts.utils.BeanUtils</code>,
-        <code>org.apache.struts.utils.ConvertUtils</code>, and
-        <code>org.apache.struts.utils.PropertyUtils</code>.</li>
-    <li><strong>Collections Package</strong>
-        [<a href="http://jakarta.apache.org/commons/collections.html"><code>org.apache.commons.collections</code></a>]  -
-        <code>org.apache.struts.util.ArrayStack</code>,
-        <code>org.apache.struts.util.FastArrayList</code>,
-        <code>org.apache.struts.util.FastHashMap</code>,
-        <code>org.apache.struts.util.FastTreeMap</code>.</li>
-    <li><strong>Digester Package</strong> -
-        [<a href="http://jakarta.apache.org/commons/digester.html"><code>org.apache.commons.digester</code></a>] -
-        <code>org.apache.struts.digester.*</code>.</li>
-    </ul>
-    <p>The following Commons packages are also now used by various components
-    of the Struts framework:</p>
-    <ul>
-    <li><strong>FileUpload Package</strong>
-    [<a href="http://jakarta.apache.org/commons/fileupload/"><code>org.apache.commons.fileupload</code></a>]</li>
-    <li><strong>Logging Package</strong>
-    [<a href="http://jakarta.apache.org/commons/logging.html"><code>org.apache.commons.logging</code></a>]</li>
-    <li><strong>Validator Package</strong>
-    [<a href="http://jakarta.apache.org/commons/validator/"><code>org.apache.commons.validator</code></a>]</li>
-    </ul>
-
-
-    <p><strong>NOTE! XML Parser Prerequisite Updated</strong></p>
-
-    <p>Struts now depends on an XML parser that conforms to the JAXP/1.1
-    (rather than JAXP/1.0) APIs. Parsers known to work include the JAXP/1.1
-    reference implementation, and Xerces 1.3.1.</p>
-
-    <p><strong>SOURCE DEVELOPERS NOTE! Ant Prerequisite Updated</strong></p>
-    <p>To build Struts from source Ant 1.4 or later is now required. This
-    does not affect developers that use Struts from the binary distribution.</p>
-
-    <p><strong>Struts Validator Integration</strong></p>
-    <p>The new Commons Validator is now integrated with Struts and exposed
-    through the new Validator package.</p>
-
-    <p><strong>Tiles - An advanced templating taglib</strong></p>
-    <p>The Tiles JSP assembly framework has been integrated with Struts.</p>
-
-    <p><strong>Nested - An very cool taglib extension</strong></p>
-    <p>The Nested taglib is bundled with Struts and enhances the functionality
-     of the existing Struts tags.</p>
-
-    <p><strong>New Example Applications</strong></p>
-    <p>New example applications for the Validator and Tiles are now part
-    of the Struts distribution.</p>
-
-    <p><strong>New Contrib directory for optional components</strong></p>
-    <p>A new directory (<code>contrib</code>) in the CVS source repository has
-    been added to accumulate Struts add-on extensions that are generally
-    useful but have not yet been integrated into the standard code base.</p>
-
-    <ul>
-    <li>Scaffold - An extension of the Commons Scaffold toolkit of reusable
-    classes for building web applications.</li>
-    <li>Struts-EL - The optional Struts-EL taglib makes it easy to use Struts
-    with JSTL. (Container with Servlet 2.3 support required.)</li>
-    </ul>
-
-    <p>The source for these components is available in the Struts source
-    distribution. Binary distributions may also be made available in the Struts
-    download area. As optional components, these products have their own
-    release cycles.</p>
-
-    <p><strong>Action Package Additions</strong></p>
-    <p>The following new features have been added to the basic controller
-    framework [<code>org.apache.struts.action</code>]:</p>
-    <ul>
-    <li>The ActionServlet now provides support for modular Struts applications and
-    sports several new extension points.</li>
-    <li>The new <code>ActionMessages</code> class will support a superset of
-        the capabilities of <code>ActionErrors</code>, and will be useful as
-        a collection of general purpose messages, not just errors.</li>
-    </ul>
-
-    <p><strong>Upload Package Additions</strong></p>
-    <p>The following new features have been added to the file upload classes
-    [<code>org.apache.struts.upload</code>]:</p>
-    <ul>
-    <li><code>CommonsMultipartRequestHandler:</code> New class that implements
-        file upload using the Jakarta Commons FileUpload package. This is now
-        the default file upload implementation for Struts.</li>
-    </ul>
-
-    <p><strong>Util Package Additions</strong></p>
-    <p>The following new features have been added to the utility classes
-    [<code>org.apache.struts.util</code>]:</p>
-    <ul>
-    <li><code>LocalStrings:</code> Correct message regarding replaceable parameter so that it does not append an extraneous character.</li>
-    <li><code>LabelValueBean:</code> New class that defines a collection of name/value pairs that can be used with the &lt;html:options&gt; and &lt;html:optionsCollection&gt; tags, and elsewhere.</li>
-    <li><code>MessageResources:</code> Escape any single quote characters that are included in the specified message string.</li>
-    <li><code>computeParameters:</code> Allow a transaction token to be the only parameter.</li>
-    <li><code>RequestUtils:</code> Change to encode ampersands when building a query string.</li>
-    </ul>
-
-    <p><strong>Bean Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-bean</em> custom tag library
-    [<code>org.apache.struts.taglib.bean</code>]:</p>
-    <ul>
-    <li><code>&lt;bean:write></code>: Add format, locale and bundle attributes to support formatting values according to current
-    user locale, format string from attribute or format string from string resources.</li>
-    <li><code>&lt;bean:cookie>, &lt;bean:header>, or &lt;bean:parameter>:</code> Correct the generated scripting variable type when tag is used with the "multiple" attribute.</li>
-    <li><code>&lt;bean:message&gt;:</code> Added <code>name</code>, <code>property</code>, and  <code>scope</code> attributes to the tag, so that the message source key can be obtained dynamically from a bean or bean property.</li>
-    </ul>
-
-    <p><strong>HTML Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-html</em> custom tag library [<code>org.apache.struts.taglib.html</code>]:</p>
-    <ul>
-    <li><code>&lt;html:link&gt;:</code> Added 'action' attribute.</li>
-    <li><code>&lt;html:options&gt;:</code> If the property specified by the 'property' attribute returns null, tag now throws an error message that indicates what the real problem is, rather than causing an NPE.</li>
-    <li><code>&lt;html:option&gt; and &lt;html:options&gt;:</code> Added 'style' and 'styleClass' attributes.</li>
-    <li><code>&lt;html:optionsCollection&gt;:</code> New tag providing a cleaner way of populating HTML options from a collection.</li>
-    <li><code>&lt;bean:message&gt;:</code> Added 'name', 'property' and 'scope' attributes so that the message resource key can be obtained dynamically from a bean.</li>
-    <li><code>&lt;html:messages&gt;:</code> New tag to iterate through a message collection in the new <code>ActionMessages</code> class.</li>
-    <li><code>ActionForm:</code> Tag will now call <code>reset()</code> if it instantiates the ActionForm bean. This also requires that the bean instantiated by the tag to be an <code>ActionForm</code> subclass. </li>
-    <li><code>&lt;html:image>:</code> Added the 'align' attribute.</li>
-    <li><code>&lt;html:img>:</code> Added the mouse event attributes ('onclick', 'ondblclick', 'onmousedown', 'onmouseup', 'onmouseover', 'onmousemove', 'onmouseout').</li>
-    <li><code>SubmitTag, SelectTag, LinkTag.java, CheckboxTag, ButtonTag, ImageTag, RadioTag, and TextArea tags:</code> Added indexed property. </li>
-    </ul>
-
-    <p><strong>Logic Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-logic</em> custom tag library [<code>org.apache.struts.taglib.logic</code>]:</p>
-    <ul>
-    <li><code>&lt;logic:empty&gt;</code> and
-        <code>&lt;logic:notEmpty&gt;</code>: New tags that are similar to
-        <code>&lt;logic:present&gt;</code> and
-        <code>&lt;logic:notPresent&gt;</code> except for the treatment of
-        empty strings.</li>
-    </ul>
-
-    <p><strong>Template Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-template</em> custom tag library
-    [<code>org.apache.struts.taglib.template</code>]:</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p><strong>Documentation Additions</strong></p>
-    <p>The following new features have been added to the Struts Documentation
-    application (and corresponding contents on the Struts web site):</p>
-    <ul>
-    <li>Version Differences: New section in Release Notes to link to the JavaDocs for all Struts classes and members added or changed between versions.</li>
-    <li>FAQ/HowTos: New documentation category organizes our FAQs and example-driven howTos.
-    New HowTos include "Building Applications", "Using SSL", and using Struts with Eclipse or NetBeans.</li>
-    <li>User Guide Preface: New section to overview the enabling technologies behind Struts.</li>
-    <li>Developer Guides: Added "cover page" to guides. These then link to the Package Descriptions and the API guides.</li>
-    <li>HTML tag documentation: expanded to cover using indexed properties with iterate.</li>
-    <li>Site Menu: Removed separate links to taglib documentation, since these are now in the Developer Guide.</li>
-    <li>Newbie FAQ: The questions most likely to be asked by new developers using Struts. Still under development.</li>
-    <li>Kickstart FAQ: The questions most likely to be asked when selecting Struts.</li>
-    <li>1.0.2 JavaDoc: Added archival copy to web site for future reference.</li>
-    <li>The UserGuide "Building" pages: General revisions to reflect new features and current practices.</li>
-    <li>Installation: Updated instructions for SilverStream and Resin. Add installation notes for Jetty. Added RexIP to list of nominal containers.</li>
-    <li>JavaDocs: New <code>@since Struts 1.1</code> tag to indicate new packages, classes, and members added after the Struts 1.0.x version</li>
-    </ul>
-
-  </section>
-
-  <section name="Operational Changes and Bug Fixes" href="Changes">
-
-    <p><strong>Struts Configuration Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the configuration
-    files related to Struts:</p>
-    <ul>
-    <li>Deprecated (Struts 0.5) configuration file format: Remove support.</li>
-    <li>Deprecated (Struts 0.5) methods: Remove from codebase.</li>
-    </ul>
-    <p><strong>Added Config Package</strong></p>
-    <ul>
-    <li>ControllerConfig: Added inputForward property to indicate that ActionMapping.input is a forward rather than a URI.</li>
-    <li>ControllerConfig: Added forwardPattern and inputPattern to help manage page directories in application modules.</li>
-    <li>Added package to provide more flexibility in configuring the controller and to provide support for modular applications</li>
-    </ul>
-    <p><strong>Action Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the basic
-    controller framework (package <code>org.apache.struts.action</code>):</p>
-    <ul>
-    <li>All constants in the Action class: Deprecated in favor of equivalents in new Globals class.</li>
-    <li>ActionMapping: input property may now refer to an ActionForward rather than a module-relative path if inputForward is set to true on the module's ControllerConfig bean [org.apache.struts.config.ControllerConfig.</li>
-    <li>ActionServlet: Added convertNull parameter to simulate the Struts 1.0 behavior when populating forms. If set to true, the numeric Java wrapper class types (like java.lang.Integer) will default to null (rather than 0).</li>
-    <li>ActionServlet: Added "config/$foo" parameter and deprecated several others in favor of components in the new config package. </li>
-    <li>ActionForms and related classes: Now use a StringBuffer when responding to a toString request in order to conserve resources.</li>
-    <li>LookupDispatchAction: Added standard Action to help select between internationalized buttons.</li>
-    <li>ActionForm class: Modified to use ActionServletWrapper rather than expose ActionServlet.</li>
-    <li>ActionServletWrapper class: Added for use by ActionForm to prevent the Public String properties of ActionServlet from being changed via a query string.</li>
-    <li>Action.MAPPING_KEY request attribute: Unconditionally pass the selected mapping as a request attribute ("org.apache.struts.action.mapping.instance") even if no form bean is specified.</li>
-    <li>ActionServlet: Avoid a NullPointerException in corner cases caused by failed initialization of servlet.</li>
-    <li>ActionForm class: Now truly serializable, because
-        the two non-serializable instance variables (servlet and
-        multipartRequestHandler) have been made transient.  However, if you
-        actually do serialize and deserialize such instances, it is your
-        responsibility to reset these two properties.</li>
-    <li>ActionMessages and ActionErrors: The initial order a property/key is added in is now retained.</li>
-    <li>processActionForward(): Deprecated in favor of processForwardConfig</li>
-    </ul>
-
-    <p><strong>Upload Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the file upload
-    package (package <code>org.apache.struts.upload</code>) [part of the Upload webapp]:</p>
-    <ul>
-    <li>CommonsMultipartRequestHandler: New implementation of file upload based
-        on the Jakarta Commons FileUpload package. This new implementation is
-        now the default.</li>
-    <li>BufferedMultipartInputStream: Fixed lost byte problem.</li>
-    <li>ArrayIndexOutOfBoundsException: Fixed situations where this was known to occur.</li>
-    <li>Multipart requests: Better reporting for premature closing of input streams while reading multipart requests.</li>
-    <li>New line characters: Additional fix for file corruption problem with uploads and new line characters.</li>
-    </ul>
-
-    <p><strong>Utility Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the utilities
-    (package <code>org.apache.struts.util</code>):</p>
-    <ul>
-    <li>RequestUtils: Added support for forwardPattern, pagePattern, and inputForward properties on ControllerConfig.</li>
-    <li>GenericDataSource: Deprecated and modified to act as a thin wrapper around
-    [<code>org.apache.commons.dbpc.BasicDataSource</code>].
-    Replaced by direct use of BasicDataSource or other compatible component.</li>
-    <li>RequestUtils class: Modify to use ActionServletWrapper rather than expose ActionServlet.</li>
-    <li>Added error message for the getActionErrors and getActionMessages method.</li>
-    <li>getActionErrors and getActionMessages: Added methods to generate the correct corresponding
-    object based on the object retrieved from request scope based on the key passed in.</li>
-    <li>ActionErrors or ActionMessages: The logic for creating one of these objects has been moved
-    to a utility method in RequestUtils.</li>
-    <li>JspException message: Now generated in RequestUtils.</li>
-    <li>ConvertUtils.convertCharacter(): Will now detect empty strings and return the default value.</li>
-    </ul>
-
-    <p><strong>Bean Taglib Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-bean</em> custom tag library
-    [<code>org.apache.struts.taglib.bean</code>]:</p>
-    <ul>
-    <li>&lt;html:errors&gt;: When the property tag is
-    specified, errors are no longer printed if the specified property
-    has no errors. Previously errors were always printed ! Future
-    enhancements would include additional attributes to always turn
-    off the header or footer. </li>
-    <li>Made the remaining helper methods "protected" rather than
-    "private".</li>
-    </ul>
-
-    <p><strong>HTML Taglib Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-html</em> custom tag library (package
-    <code>org.apache.struts.taglib.html</code>):</p>
-    <ul>
-    <li>FormTag: Fixed to exclude query string when identifying action mapping name.</li>
-    <li>ImgTag: Correctly URLEncode the query string parameter value even if there is only a single parameter.</li>
-    <li>MultiboxTag.doAfterBody(): Corrected to return SKIP_BODY instead of SKIP_PAGE.</li>
-    <li>Errortag: defaultLocale method is deprecated as it is unused.</li>
-    </ul>
-
-    <p><strong>Logic Taglib Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-logic</em> custom tag library (package
-    <code>org.apache.struts.taglib.logic</code>):</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p><strong>Documentation Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts Documentation
-    application (and corresponding contents on the Struts web site) have
-    occurred:</p>
-    <ul>
-    <li>Reorganized Resources into separate pages..</li>
-    <li>In the Tag Developers Guide, add more detail regarding file upload requirements.</li>
-    <li>In Building View Components, clarify that additional i18n support may be provided by the browser, and is outside the scope of the framework.</li>
-    <li>In Building Controller Components, document 'validating' init-param, add defaults for various parameters, clarify that some web.xml settings are not Struts-specific.</li>
-    <li>Tag library documentation: Moved under User's Guide.</li>
-    <li>Reorganized to separate 1.0 material from nightly build material.</li>
-    </ul>
-
-    <p><strong>MailReader Example Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts MailReader Example Application
-    have occurred:</p>
-    <ul>
-    <li>Add Russian and Japanese translations of the application resources and set the character set for the example JSP pages to "UTF-8" so that it can display either English or Japanese.</li>
-    <li>Exchange "name" for "attribute" properties for Edit mappings in Struts configuration file.</li>
-    <li>Remove references to saving database data from "tour" document, since this functionality was removed.</li>
-    </ul>
-
-    <p><strong>Template Example Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts Template Example
-    Application have occurred:</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p><strong>Exercise Taglib Example Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts Exercise Taglib Example
-    Application have occurred:</p>
-    <ul>
-    <li>Added test case for &lt;html:link&gt; using "action" attribute. </li>
-    <li>Added test cases for &lt;html:select&gt; using &lt;html:options&gt; and
-        &lt;html:optionsCollection&gt; based on a collection saved in the page context.</li>
-    </ul>
-
-  </section>
-
-  <section name="What's different?" href="diff">
-
-    <p>This section provides links to the Struts JavaDoc for any classes that have
-    been added or deprecated since the Struts 1.0 release.
-    </p>
-
-    <p><strong>Previously deprecated classes and packages removed in Struts 1.1</strong></p>
-    <ul>
-    <li>Removed:
-      <code>org.apache.struts.utils.BeanUtils</code>,
-      <code>org.apache.struts.utils.ConvertUtils</code>, and
-      <code>org.apache.struts.utils.PropertyUtils</code> - replaced by
-      <a href ="http://jakarta.apache.org/commons/beanutils.html"><code>org.apache.commons.beanutils</code></a>
-    </li>
-    <li>Removed:
-     <code>org.apache.struts.util.ArrayStack</code>,
-     <code>org.apache.struts.util.FastArrayList</code>,
-     <code>org.apache.struts.util.FastHashMap</code>,
-     <code>org.apache.struts.util.FastTreeMap</code> - replaced by
-     <a href ="http://jakarta.apache.org/commons/collections.html"><code>org.apache.commons.collections</code></a>
-    </li>
-    <li>Removed: <code>org.apache.struts.digester.*</code> - replaced by
-    <a href ="http://jakarta.apache.org/commons/digester.html"><code>org.apache.commons.digester</code></a>
-    </li>
-    <li>Removed: The <code>struts-config.dtd</code> - Replaced by <a href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"><code>struts-config_1_1.dtd</code></a>.</li>
-    <li>Removed: The omnibus "struts" taglib and its associated TLD - replaced by separate bean, logic, and html taglibs.</li>
-    <li>Removed: The "form" taglib and its associated TLD - replaced by (renamed as) the html taglib.</li>
-    </ul>
-
-    <p><strong>Packages added in Struts 1.1</strong></p>
-
-    <ul>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/config/package-summary.html">config</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/package-summary.html">taglib.nested</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/bean/package-summary.html">taglib.nested.bean</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/html/package-summary.html">taglib.nested.html</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/logic/package-summary.html">taglib.nested.logic</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/validator/package-summary.html">validator</a></li>
-    </ul>
-
-    <p><strong>Classes added in Struts 1.1</strong></p>
-    <p>action</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionMessage.html"> ActionMessage</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionMessages.html"> ActionMessages</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/DynaActionForm.html"> DynaActionForm</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/DynaActionFormClass.html"> DynaActionFormClass</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ExceptionHandler.html"> ExceptionHandler</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/RequestProcessor.html"> RequestProcessor</a></li>
-    </ul>
-    <p>actions</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/actions/LookupDispatchAction.html"> LookupDispatchAction</a></li>
-    </ul>
-    <p>taglib.html</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/FrameTag.html"> FrameTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/JavascriptValidatorTag.html"> JavascriptValidatorTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/MessagesTag.html">MessagesTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/OptionsCollectionTag.html"> OptionsCollectionTag</a></li>
-    </ul>
-    <p>taglib.logic</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/EmptyTag.html"> EmptyTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/MessagesNotPresentTag.html"> MessagesNotPresentTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/MessagesPresentTag.html"> MessagesPresentTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/NotEmptyTag.html"> NotEmptyTag</a></li>
-    </ul>
-    <p>upload</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/upload/CommonsMultipartRequestHandler.html"> CommonsMultipartRequestHandler</a></li>
-    </ul>
-    <p>util</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/util/LabelValueBean.html"> LabelValueBean</a></li>
-    </ul>
-    <p><strong>Classes with members added in Struts 1.1</strong></p>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/Action.html">action.Action</a></p>
-    <ul>
-      <li>ACTION_SERVLET_KEY</li>
-      <li>APPLICATION_KEY</li>
-      <li>MESSAGE_KEY</li>
-      <li>PLUG_INS_KEY</li>
-      <li>REQUEST_PROCESSOR_KEY</li>
-      <li>execute</li>
-      <li>getResources(javax.servlet.http.HttpServletRequest)</li>
-      <li>saveMessages</li>
-    </ul>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionServlet.html">action.A</a><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionServlet.html">ctionServlet</a></p>
-    <ul>
-      <li>configDigester</li>
-      <li>convertHack</li>
-      <li>log</li>
-      <li>processor</li>
-      <li>getInternal</li>
-      <li>destroyApplications</li>
-      <li>destroyConfigDigester</li>
-      <li>getApplicationConfig</li>
-      <li>getRequestProcessor</li>
-      <li>initApplicationConfig</li>
-      <li>initApplicationDataSources</li>
-      <li>initApplicationPlugIns</li>
-      <li>initApplicationMessageResources</li>
-      <li>initConfigDigester</li>
-      <li>methods created for backward-compatiblity only
-        <ul>
-          <li>defaultControllerConfig</li>
-          <li>defaultFormBeansConfig</li>
-          <li>defaultForwardsConfig</li>
-          <li>defaultMappingsConfig</li>
-          <li>defaultMessageResourcesConfig</li>
-        </ul>
-      </li>
-    </ul>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/BaseHandlerTag.html">taglib.html.BaseHandlerTag</a></p>
-    <ul>
-      <li>indexed</li>
-      <li>setIndexed</li>
-      <li>getIndexed</li>
-    </ul>
-    <p><strong>Classes deprecated between Struts 1.0 and Struts 1.1</strong></p>
-    <p>action</p>
-    <ul>
-      <li>ActionException</li>
-      <li>ActionFormBeans</li>
-      <li>ActionForwards</li>
-      <li>ActionMappings</li>
-    </ul>
-    <p><strong>Classes with members deprecated between Struts 1.0 and Struts 1.1</strong></p>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/Action.html">action.Action</a></p>
-
-    <ul>
-      <li>FORM_BEANS_KEY</li>
-      <li>FORWARDS_KEY</li>
-      <li>MAPPINGS_KEY</li>
-      <li>getResources()</li>
-      <li>perform</li>
-    </ul>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionServlet.html">ActionServlet</a></p>
-    <ul>
-      <li>findDataSource</li>
-      <li>findFormBean</li>
-      <li>findForward</li>
-      <li>findMapping</li>
-      <li>initDataSources</li>
-      <li>methods created for backward-compatiblity only
-        <ul>
-          <li>defaultControllerConfig</li>
-          <li>defaultFormBeansConfig</li>
-          <li>defaultForwardsConfig</li>
-          <li>defaultMappingsConfig</li>
-          <li>defaultMessageResourcesConfig</li>
-        </ul>
-      </li>
-    </ul>
-
-</section>
-
-<section>
-    <p class="right">
-    Next: <a href="installation.html">Installation</a>
-    </p>
-</section>
-
-
-    </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/release-notes-1.1.xml b/build-legacy/core/xdocs/userGuide/release-notes-1.1.xml
deleted file mode 100644
index 1e395b3..0000000
--- a/build-legacy/core/xdocs/userGuide/release-notes-1.1.xml
+++ /dev/null
@@ -1,900 +0,0 @@
-<?xml version="1.0"?>
-<document url="release-notes-1.1.html">
-
-  <properties>
-    <title>Struts Release Notes (Version 1.1)</title>
-  </properties>
-
-  <body>
-
-  <section name="6.1 Release Notes" href="release_notes"/>
-  <section name="Release Notes" href="beta">
-
-    <p>This section contains the release notes for the
-    <strong>Version 1.1</strong> build of the Struts Framework, for changes that
-    have taken place since
-    <a href="release-notes-1.1-rc2.html">Version 1.1 Release Candidate 2</a>
-    was issued. For a complete list of changes since the last
-    production release, see the <a href="#Introduction">Introduction</a> </p>
-
-  </section>
-
-<section name="Release Candidate/Beta Fixes" href="beta.Changes">
-
-    <p>
-        In RC2, the <strong>Commons-DBCP and Commons-Pool dependencies have been removed</strong>.
-        These are replaced with a dependency on the
-        <a href="http://archive.apache.org/dist/jakarta/struts/old/release/struts-legacy/">Struts-Legacy package</a>,
-        containing the GenericDataSource and GenericConnection classes from Struts 1.0.2.
-        These are distributed for J2SE 1.3 but may be recompiled for J2SE 1.4.
-        Other DataSource implementations may be plugged in (recommended).
-    </p>
-
-    <p>
-        Other changes since RC1 have been routine fixes and refactorings.
-    </p>
-
-    <p>
-        <strong>OTHER CHANGES:</strong>
-    </p>
-
-    <p>
-        <strong>Action package:</strong>
-        Deprecated processActionForward() because ActionForward is a subclass of ForwardConfig so there's no reason we can't use processForwardConfig() instead.
-        Updated to use processForwardConfig instead of deprecated processActionForward.
-        Deprecated the rest of the Action constants in favor of Globals.
-        Refactored some of initModuleConfig into a separate method and cleaned up.
-        Improved exception handling in ActionServlet and RequestProcessor; generally, we limited the scope of try/catch blocks and caught specific exceptions rather than Throwable.
-    </p>
-
-    <p>
-        <strong>Documentation:</strong>
-        Document the &lt;html:html&gt; tag's locale attribute behaviour of creating a session if needed.
-        Added note to validator section regarding the converNull servlet parameter and required validations of java.lang.Integer fields.
-        Moved sites and consultants page to Struts Wiki.
-        Other minor tweaks.
-    </p>
-
-    <p>
-        <strong>EL package:</strong>
-        Fixed mapping of "onkeypress" attribute.
-        Separated "expr" attribute into "expr" and "exprValue", being the original attribute value and the evaluated value.
-        Fixed probably long-standing bug in notMatch tag that made it behave identically to the "match" tag (instead of the reverse).
-
-    </p>
-
-    <p>
-        <strong>Example applicattions:</strong>
-        Added Multi-config files for the example app.
-    </p>
-
-
-    <p>
-        <strong>Legacy package:</strong>
-        Added package under contrib to host old GenericDataSource and GenericConnection classes.
-
-    </p>
-    <p>
-        <strong>Taglibs packages:</strong>
-        Fixed several import statements.
-        Refactored converting a scope name into its integer constant into a new method RequestUtils.getScope(String), and changed the DefineTag, EmptyTag, and TagUtils classes to use the new method.
-    </p>
-
-    <p>
-        <em>faces taglib.</em> Added early release to contrib area.
-    </p>
-
-    <p>
-       <em>html taglib.</em>
-       Reset the 'processed' flag at the beginning of each usage of the tag. Use a local copy of the 'name' attribute to avoid modifying the attribute value itself.
-       Fixed references to static members.
-       For FrameTag and HiddenTag, conform TLD with implementations.
-       In ErrorsTag, render a platform-independent line ending instead of hard coded "\r\n".
-       In JavaScriptValidatorTag, make the line-end generation platform independent so that Cactus tests work properly.
-       In FormTag, refactored code into smaller reusable methods.
-       In RewriteTag, encode the ampersand character in XHTML mode only, otherwise write the ampersand as is so the URL will work in JavaScript scripts.
-       Refactored form bean initialization out of doStartTag() into its own method.
-       Refactored doStartTag() 'if' statement to avoid having long nested 'if' logic.
-       In ErrorTag, fixed formatting and deprecated unused defaultLocale variable.
-       Refactored doStartTag() and doEndTag() into smaller methods.
-       Moved xhtml check to RequestUtils instead of duplicating the logic in many different classes.
-       Added lookupProperty() method to BaseHandlerTag because both RadioTag and TextareaTag used the same code.
-       Refactored TextareaTag into smaller methods.
-       In JavaScriptValidatorTag, replaced duplicated code with call to RequestUtils.retrieveUserLocale() and simplified an 'if' statement.
-    </p>
-
-    <p>
-        <em>logic taglib.</em>
-        Set 'iterator' to null in doEndTag() so that we release the iterator reference as early as possible. We cannot do the same for 'collection' since it is a tag attribute, and needs to remain unchanged to comply with the JSP spec.
-        Don't create empty cookies array if null, just don't run the loop at all.
-        In ForwardTag, remove unnecessary test for null.
-
-    </p>
-
-   <p>
-       <em>nested tablibs.</em>
-       Improved support for Tomcat 4.1.18.
-       Replace EVAL_BODY_AGAIN with EVAL_BODY_TAG so that the code compiles against the JSP 1.1 API.
-       Changed the &lt;nested:define&gt; tag's tei class to reference a new custom tei class for the nested tags.
-   </p>
-
-    <p>
-        <em>tiles taglib.</em>
-        Fixed references to static members.
-        Deprecated outdated Tiles TextTag.
-        For InsertTag, only include page if it's non-null.
-        For InserTag, remove page check before including for more investigation.
-    </p>
-
-    <p>
-        <strong>Test packages:</strong>
-        Added several new tests for the bean, html, and logic taglibs to the suite setup at the tail-end of RC1.
-        Note: We cannot resolve request.getServerPort() in the Cactus 1.4.x environment, so for now, our tests will only run on Cactus 1.3
-    </p>
-
-    <p>
-        <strong>Tiles package:</strong>
-        Deprecated TilesUtil.applicationClass() in favor of RequestUtils.applicationClass()
-    </p>
-
-    <p>
-        <strong>Util package:</strong>
-        retrieveUserLocale now uses the request.getLocale() method for finding the user's preferred locale.
-        If user has not specified this with Accept-Language header, the server default locale is used.
-        Change encodeURL() to not use reflection on every call.
-        In RequestUtils, simplified separator logic in computeURL().
-    </p>
-
-    <p>
-        <strong>Validator package:</strong>
-        Deprecate logging methods and indicate that commons-logging should be used.
-        Logic simplification and minor formatting fixes to Resources class.
-
-    </p>
-
-    <p>
-        <strong>build files:</strong>
-    </p>
-
-    <ul>
-        <li>
-            (build.properties.sample) Add an entry for http-unit.
-        </li>
-        <li>
-            Remove dependency on Commons Resources for Struts 1.1 release. (This migration will happen later).
-        </li>
-        <li>
-            Make it possible to build Struts against the Servlet 2.4 and JSP 2.0 APIs, where the JSP classes have been pulled out into their own JAR file (jsp.jar). On an earlier platform, you can leave the "jsp.jar" property unset and thing will continue to operate as they have before.
-        </li>
-
-    </ul>
-
-
-    <p>
-        <strong>Bugzilla Problem Report fixes:</strong>
-    </p>
-
-    <ul>
-        <li>
-            Fixed #17312 - retrieveUserLocale throws exception without sessions.
-        </li>
-        <li>
-           Fixed #17254 - If body text is empty and there's no resource key to lookup, display nothing in the option.
-        </li>
-        <li>
-           Fixed #17371- The tag now uses RequestUtils.retrieveUserLocale for looking up the appropriate locale. Using that method protects us from needlessly creating a session.
-        </li>
-        <li>
-           Fixed #17375 - Problem in ELErrorsTag because the "name" attribute of ErrorsTag has a non-null default value.
-        </li>
-        <li>
-          Fixed #17622 - validator-rules.xml issues.
-        </li>
-        <li>
-          Fixed #17299 - Set page variable from dyna map before validating.
-        </li>
-        <li>
-          Fixed #17838 - Help debug specific user errors by showing quotes around the key that is in error (missing or mispelled).
-        </li>
-        <li>
-          Fixed #17833 - validateShort and isAllDigits for negative numbers.
-        </li>
-        <li>
-          Fixed #17328 - Synchronized loadLocale.
-        </li>
-        <li>
-          Fixed #18018 - Changed field-* variables to camel case and no "-".
-        </li>
-        <li>
-          Fixed #16548 - validateMinLength and validateMaxLength are now independent of the required check.
-        </li>
-        <li>
-         Fixed #17389 - Splice in the I18nFactorySet.calculatePostixes from the attachment, rebuild, and ran the unit tests successfully.
-        </li>
-        <li>
-         Fixed #17273 - Removed extra return statement (RequestUtils).
-        </li>
-        <li>
-         Fixed #17592 - Tag should support a "naked" collection that is not a property of a bean.
-        </li>
-        <li>
-         Fixed #17592 - Made "property" attribute of "optionsCollection" tag be not required, to match same change made for #17592 in base tag.
-        </li>
-        <li>
-         Fixed #17562 - Change the InsertTag to let it use PageContext.include() instead of RequestDispatcher.include(). We are no back to the same mechanism used in the 1.1b3 release.
-        </li>
-        <li>
-         Fixed #18186 - Use temp variable instead of overwriting tag attribute variable.
-        </li>
-        <li>
-         Fixed #18394 - Changed error to info log if DefinitionsFactory is not supplied.
-        </li>
-        <li>
-         Fixed #18538 - Changed shortname to "tiles".
-        </li>
-        <li>
-         Fixed #18591 - Braces placement in message().
-        </li>
-        <li>
-         Fixed #18018 - Don't output requiredif field* javascript variables because they're not used and break other validations.
-        </li>
-        <li>
-         Fixed #18794 -Check ServletContext for ModuleConfig instead of request.
-        </li>
-        <li>
-         Fixed #18864 - Changed Class-Path to conform to jar spec.  The previous patch fixing a bug in  WebLogic caused warnings in Resin.
-        </li>
-        <li>
-         Fixed #18991 - Allow messages object passed to add(ActionMessages) to be null.
-        </li>
-        <li>
-         Fixed #19040 -  Added null checks back to ActionServlet.
-        </li>
-        <li>
-         Fixed #19157 - Implement Serializable in NestedReference.
-        </li>
-        <li>
-         Fixed #18869 - Added display-name to web.xml files.
-        </li>
-        <li>
-        Fixed #19223 - Synchronized token methods for PR.  Post 1.1 these methods should be moved to some kind of TokenProcessor class for reusability by other components such as the RequestProcessor (#16743).
-        </li>
-        <li>
-         Fixed #19236 -  Added "action" attribute to "html-el:frame" tag.
-        </li>
-        <li>
-         Fixed #11932 - Factored common code out of message() and present() into a new private method retrieveMessageResources.
-        </li>
-        <li>
-         Fixed #11922 - Moved Action's token methods to this new class to fix synchronization issues and allow Action to be more focused.
-        </li>
-        <li>
-         Fixed #19594 - Fixed minlength javascript for PR.  Also, removed password field checking from validateMask.
-        </li>
-        <li>
-        Fixed #19773 - EmptyTag and added test to exercise-taglib webapp.
-        </li>
-        <li>
-        Fixed #19835 - Add check against -1 to maxSize.
-        </li>
-        <li>
-        Fixed #20034 - Call releaseInternal() in release() so if error occurs between begin/end of tag next user/request will not be working with old parameters.
-        </li>
-        <li>
-        Fixed #20455 - validateRequiredIf() fails on Strings of whitespace.
-        </li>
-        <li>
-        Fixed #20678 - Struts data-souce pingQuery parameter
-        </li>
-        <li>
-        Fixed #20750 - RequestUtils.retrieveMessageResources (really an RC2 bug)
-        </li>
-        <li>
-        Fixed #20835 - &lt;html:rewrite&gt; tag using page attribute bug
-        </li>
-        <li>
-        Fixed #20877 - MessagesTag has incorrect assignment in release()
-        </li>
-        <li>
-        Fixed #20949 - Tag &lt;html:select&gt; doesn't work well on RC2
-        </li>
-        <li>
-        Fixed #21051 - javascript required validator accepts fields containing only whitespace
-        </li>
-        <li>
-        Fixed #21119 - typo in struts-doc-config.xml
-        </li>
-    </ul>
-
-
-</section>
-
-  <section name="Introduction" href="Introduction">
-
-    <p>The remainder of this document contains the release notes for
-    <strong>1.1 Release Candidate 2</strong> build of the Struts Framework,
-    and covers changes that have taken place since
-    <a href="release-notes-1.0.2.html">Version 1.0.2</a>
-    was released.  The following sections cover
-    <a href="#New">New Features</a> and <a href="#Changes">Changes</a>
-    to Struts.</p>
-
-  </section>
-
-
-  <section name="What's Included?" href="Included">
-
-    <p>The binary distribution of this release includes the following
-    files relevant to Struts:</p>
-    <ul>
-    <li><code>INSTALL</code> - Brief installation instructions.  See
-        the <code>Struts Documentation Application</code>, or online at
-        <a href="http://jakarta.apache.org/struts/">http://jakarta.apache.org/struts/</a>,
-        for more information.</li>
-    <li><code>LICENSE</code> - The Apache Software Foundation license that
-        defines the terms under which you can use Struts (and other software
-        licensed by Apache).</li>
-    <li><code>README</code> - A brief introduction to Struts.</li>
-    <li><code>lib/</code> - Directory containing files you will need in
-        your own applications.  The individual files of interest are:
-        <ul>
-        <li><code>commons-*.jar</code> - Release packages from the
-            <a href="http://jakarta.apache.org/commons/">Jakarta Commons
-            Project</a> that Struts relies on.  You are welcome to use these
-            classes in your own applications.  These JAR files should be
-            copied into the <code>/WEB-INF/lib</code> directory of
-            your web application. See below for the version of each
-            Commons library that is included.</li>
-        <li><code>struts.jar</code> - JAR file that contains the compiled
-            Java classes of Struts.  You must
-            place this file in the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts-xxxxx.tld</code> - The tag library descriptor files
-            for the Struts 1.1 tag libraries (bean, html, logic, and
-            template).  You must place these files in the <code>/WEB-INF</code>
-            directory of your web application, and reference them with
-            appropriate <code>&lt;taglib&gt;</code> directives in your
-            web.xml file.</li>
-        <li><code>jdbc2_0-stdext.jar</code> - The JDBC 2.0 Optional Package
-            API classes (package <code>javax.sql</code>).  You will need to
-            include this file in the <code>/WEB-INF/lib</code> directory
-            of your application, if it is not already made visible to web
-            applications by your servlet container.</li>
-        <li><code>struts-config_1_1.dtd</code> - The Document Type Definition
-            (DTD) for the Struts 1.1 configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>).  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>struts-config_1_0.dtd</code> - The Document Type Definition
-            (DTD) for the Struts 1.0 configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>).  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>web-app_2_2.dtd</code> - The Document Type Definition (DTD)
-            for web.xml files conforming to the Servlet 2.2 specification.
-            This copy is for reference purposes only.</li>
-        <li><code>web-app_2_3.dtd</code> - The Document Type Definition (DTD)
-            for web.xml files conforming to the Servlet 2.3 specification.
-            This copy is for reference purposes only.</li>
-        </ul></li>
-    <li><code>webapps/</code> - Web Application Archive (WAR) files for the
-        web applications that are included with Struts.</li>
-    </ul>
-
-    <p>The following Jakarta Commons libraries are included with this release
-    of Struts:</p>
-    <ul>
-    <li>Commons BeanUtils 1.6.1</li>
-    <li>Commons Collections 2.1</li>
-    <li>Commons Digester 1.5</li>
-    <li>Commons FileUpload 1.0</li>
-    <li>Commons Lang 1.0.1</li>
-    <li>Commons Logging 1.0.3</li>
-    <li>Commons Validator 1.0.2</li>
-    </ul>
-
-  </section>
-
-  <section name="What's New?" href="New">
-
-    <p>Following are highlights of the new features. In the next section, we
-    provide links to the JavaDocs for the affected classes.</p>
-
-    <p><strong>New Configuration DTD</strong></p>
-    <p> The Struts Configuration 1.0 DTD has been deprecated in favor of the
-    <code><a href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">struts-config_1_1.dtd</a></code>.
-    In the Struts 1.1 release, existing Struts configuration files can be
-    loaded using either DTD version.
-    </p>
-
-    <p><strong>New Dependencies on Commons packages</strong></p>
-    <p>Several components of Struts 1.0 have been found to be useful in
-    general Java development (and not just useful for building Struts-based
-    web applications), and have been migrated into the
-    <a href="http://jakarta.apache.org/commons/">Jakarta Commons Project</a>.
-    As a result, this release of Struts has been modified
-    to rely on the Commons packages containing these classes, rather than the
-    Struts internal versions.  In nearly every case, this involved changing
-    only the <code>import</code> statements at the top of the classes.  Any
-    of your applications that utilize these classes will need to be modified in
-    the same way.  </p>
-    <p>The following Commons packages contain the replacements for the
-    corresponding Struts 1.0 classes:</p>
-    <ul>
-    <li><strong>BeanUtils Package</strong>
-        [<a href="http://jakarta.apache.org/commons/beanutils.html"><code>org.apache.commons.beanutils</code></a>] -
-        <code>org.apache.struts.utils.BeanUtils</code>,
-        <code>org.apache.struts.utils.ConvertUtils</code>, and
-        <code>org.apache.struts.utils.PropertyUtils</code>.</li>
-    <li><strong>Collections Package</strong>
-        [<a href="http://jakarta.apache.org/commons/collections.html"><code>org.apache.commons.collections</code></a>]  -
-        <code>org.apache.struts.util.ArrayStack</code>,
-        <code>org.apache.struts.util.FastArrayList</code>,
-        <code>org.apache.struts.util.FastHashMap</code>,
-        <code>org.apache.struts.util.FastTreeMap</code>.</li>
-    <li><strong>Digester Package</strong> -
-        [<a href="http://jakarta.apache.org/commons/digester.html"><code>org.apache.commons.digester</code></a>] -
-        <code>org.apache.struts.digester.*</code>.</li>
-    </ul>
-    <p>The following Commons packages are also now used by various components
-    of the Struts framework:</p>
-    <ul>
-    <li><strong>FileUpload Package</strong>
-    [<a href="http://jakarta.apache.org/commons/fileupload/"><code>org.apache.commons.fileupload</code></a>]</li>
-    <li><strong>Logging Package</strong>
-    [<a href="http://jakarta.apache.org/commons/logging.html"><code>org.apache.commons.logging</code></a>]</li>
-    <li><strong>Validator Package</strong>
-    [<a href="http://jakarta.apache.org/commons/validator/"><code>org.apache.commons.validator</code></a>]</li>
-    </ul>
-
-
-    <p><strong>NOTE! XML Parser Prerequisite Updated</strong></p>
-
-    <p>Struts now depends on an XML parser that conforms to the JAXP/1.1
-    (rather than JAXP/1.0) APIs. Parsers known to work include the JAXP/1.1
-    reference implementation, and Xerces 1.3.1.</p>
-
-    <p><strong>SOURCE DEVELOPERS NOTE! Ant Prerequisite Updated</strong></p>
-    <p>To build Struts from source Ant 1.4 or later is now required. This
-    does not affect developers that use Struts from the binary distribution.</p>
-
-    <p><strong>Struts Validator Integration</strong></p>
-    <p>The new Commons Validator is now integrated with Struts and exposed
-    through the new Validator package.</p>
-
-    <p><strong>Tiles - An advanced templating taglib</strong></p>
-    <p>The Tiles JSP assembly framework has been integrated with Struts.</p>
-
-    <p><strong>Nested - An very cool taglib extension</strong></p>
-    <p>The Nested taglib is bundled with Struts and enhances the functionality
-     of the existing Struts tags.</p>
-
-    <p><strong>New Example Applications</strong></p>
-    <p>New example applications for the Validator and Tiles are now part
-    of the Struts distribution.</p>
-
-    <p><strong>New Contrib directory for optional components</strong></p>
-    <p>A new directory (<code>contrib</code>) in the CVS source repository has
-    been added to accumulate Struts add-on extensions that are generally
-    useful but have not yet been integrated into the standard code base.</p>
-
-    <ul>
-    <li>Scaffold - An extension of the Commons Scaffold toolkit of reusable
-    classes for building web applications.</li>
-    <li>Struts-EL - The optional Struts-EL taglib makes it easy to use Struts
-    with JSTL. (Container with Servlet 2.3 support required.)</li>
-    </ul>
-
-    <p>The source for these components is available in the Struts source
-    distribution. Binary distributions may also be made available in the Struts
-    download area. As optional components, these products have their own
-    release cycles.</p>
-
-    <p><strong>Action Package Additions</strong></p>
-    <p>The following new features have been added to the basic controller
-    framework [<code>org.apache.struts.action</code>]:</p>
-    <ul>
-    <li>The ActionServlet now provides support for modular Struts applications and
-    sports several new extension points.</li>
-    <li>The new <code>ActionMessages</code> class will support a superset of
-        the capabilities of <code>ActionErrors</code>, and will be useful as
-        a collection of general purpose messages, not just errors.</li>
-    </ul>
-
-    <p><strong>Upload Package Additions</strong></p>
-    <p>The following new features have been added to the file upload classes
-    [<code>org.apache.struts.upload</code>]:</p>
-    <ul>
-    <li><code>CommonsMultipartRequestHandler:</code> New class that implements
-        file upload using the Jakarta Commons FileUpload package. This is now
-        the default file upload implementation for Struts.</li>
-    </ul>
-
-    <p><strong>Util Package Additions</strong></p>
-    <p>The following new features have been added to the utility classes
-    [<code>org.apache.struts.util</code>]:</p>
-    <ul>
-    <li><code>LocalStrings:</code> Correct message regarding replaceable parameter so that it does not append an extraneous character.</li>
-    <li><code>LabelValueBean:</code> New class that defines a collection of name/value pairs that can be used with the &lt;html:options&gt; and &lt;html:optionsCollection&gt; tags, and elsewhere.</li>
-    <li><code>MessageResources:</code> Escape any single quote characters that are included in the specified message string.</li>
-    <li><code>computeParameters:</code> Allow a transaction token to be the only parameter.</li>
-    <li><code>RequestUtils:</code> Change to encode ampersands when building a query string.</li>
-    </ul>
-
-    <p><strong>Bean Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-bean</em> custom tag library
-    [<code>org.apache.struts.taglib.bean</code>]:</p>
-    <ul>
-    <li><code>&lt;bean:write></code>: Add format, locale and bundle attributes to support formatting values according to current
-    user locale, format string from attribute or format string from string resources.</li>
-    <li><code>&lt;bean:cookie>, &lt;bean:header>, or &lt;bean:parameter>:</code> Correct the generated scripting variable type when tag is used with the "multiple" attribute.</li>
-    <li><code>&lt;bean:message&gt;:</code> Added <code>name</code>, <code>property</code>, and  <code>scope</code> attributes to the tag, so that the message source key can be obtained dynamically from a bean or bean property.</li>
-    </ul>
-
-    <p><strong>HTML Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-html</em> custom tag library [<code>org.apache.struts.taglib.html</code>]:</p>
-    <ul>
-    <li><code>&lt;html:link&gt;:</code> Added 'action' attribute.</li>
-    <li><code>&lt;html:options&gt;:</code> If the property specified by the 'property' attribute returns null, tag now throws an error message that indicates what the real problem is, rather than causing an NPE.</li>
-    <li><code>&lt;html:option&gt; and &lt;html:options&gt;:</code> Added 'style' and 'styleClass' attributes.</li>
-    <li><code>&lt;html:optionsCollection&gt;:</code> New tag providing a cleaner way of populating HTML options from a collection.</li>
-    <li><code>&lt;bean:message&gt;:</code> Added 'name', 'property' and 'scope' attributes so that the message resource key can be obtained dynamically from a bean.</li>
-    <li><code>&lt;html:messages&gt;:</code> New tag to iterate through a message collection in the new <code>ActionMessages</code> class.</li>
-    <li><code>ActionForm:</code> Tag will now call <code>reset()</code> if it instantiates the ActionForm bean. This also requires that the bean instantiated by the tag to be an <code>ActionForm</code> subclass. </li>
-    <li><code>&lt;html:image>:</code> Added the 'align' attribute.</li>
-    <li><code>&lt;html:img>:</code> Added the mouse event attributes ('onclick', 'ondblclick', 'onmousedown', 'onmouseup', 'onmouseover', 'onmousemove', 'onmouseout').</li>
-    <li><code>SubmitTag, SelectTag, LinkTag.java, CheckboxTag, ButtonTag, ImageTag, RadioTag, and TextArea tags:</code> Added indexed property. </li>
-    </ul>
-
-    <p><strong>Logic Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-logic</em> custom tag library [<code>org.apache.struts.taglib.logic</code>]:</p>
-    <ul>
-    <li><code>&lt;logic:empty&gt;</code> and
-        <code>&lt;logic:notEmpty&gt;</code>: New tags that are similar to
-        <code>&lt;logic:present&gt;</code> and
-        <code>&lt;logic:notPresent&gt;</code> except for the treatment of
-        empty strings.</li>
-    </ul>
-
-    <p><strong>Template Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-template</em> custom tag library
-    [<code>org.apache.struts.taglib.template</code>]:</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p><strong>Documentation Additions</strong></p>
-    <p>The following new features have been added to the Struts Documentation
-    application (and corresponding contents on the Struts web site):</p>
-    <ul>
-    <li>Version Differences: New section in Release Notes to link to the JavaDocs for all Struts classes and members added or changed between versions.</li>
-    <li>FAQ/HowTos: New documentation category organizes our FAQs and example-driven howTos.
-    New HowTos include "Building Applications", "Using SSL", and using Struts with Eclipse or NetBeans.</li>
-    <li>User Guide Preface: New section to overview the enabling technologies behind Struts.</li>
-    <li>Developer Guides: Added "cover page" to guides. These then link to the Package Descriptions and the API guides.</li>
-    <li>HTML tag documentation: expanded to cover using indexed properties with iterate.</li>
-    <li>Site Menu: Removed separate links to taglib documentation, since these are now in the Developer Guide.</li>
-    <li>Newbie FAQ: The questions most likely to be asked by new developers using Struts. Still under development.</li>
-    <li>Kickstart FAQ: The questions most likely to be asked when selecting Struts.</li>
-    <li>1.0.2 JavaDoc: Added archival copy to web site for future reference.</li>
-    <li>The UserGuide "Building" pages: General revisions to reflect new features and current practices.</li>
-    <li>Installation: Updated instructions for SilverStream and Resin. Add installation notes for Jetty. Added RexIP to list of nominal containers.</li>
-    <li>JavaDocs: New <code>@since Struts 1.1</code> tag to indicate new packages, classes, and members added after the Struts 1.0.x version</li>
-    </ul>
-
-  </section>
-
-  <section name="Operational Changes and Bug Fixes" href="Changes">
-
-    <p><strong>Struts Configuration Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the configuration
-    files related to Struts:</p>
-    <ul>
-    <li>Deprecated (Struts 0.5) configuration file format: Remove support.</li>
-    <li>Deprecated (Struts 0.5) methods: Remove from codebase.</li>
-    </ul>
-    <p><strong>Added Config Package</strong></p>
-    <ul>
-    <li>ControllerConfig: Added inputForward property to indicate that ActionMapping.input is a forward rather than a URI.</li>
-    <li>ControllerConfig: Added forwardPattern and inputPattern to help manage page directories in application modules.</li>
-    <li>Added package to provide more flexibility in configuring the controller and to provide support for modular applications</li>
-    </ul>
-    <p><strong>Action Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the basic
-    controller framework (package <code>org.apache.struts.action</code>):</p>
-    <ul>
-    <li>All constants in the Action class: Deprecated in favor of equivalents in new Globals class.</li>
-    <li>ActionMapping: input property may now refer to an ActionForward rather than a module-relative path if inputForward is set to true on the module's ControllerConfig bean [org.apache.struts.config.ControllerConfig.</li>
-    <li>ActionServlet: Added convertNull parameter to simulate the Struts 1.0 behavior when populating forms. If set to true, the numeric Java wrapper class types (like java.lang.Integer) will default to null (rather than 0).</li>
-    <li>ActionServlet: Added "config/$foo" parameter and deprecated several others in favor of components in the new config package. </li>
-    <li>ActionForms and related classes: Now use a StringBuffer when responding to a toString request in order to conserve resources.</li>
-    <li>LookupDispatchAction: Added standard Action to help select between internationalized buttons.</li>
-    <li>ActionForm class: Modified to use ActionServletWrapper rather than expose ActionServlet.</li>
-    <li>ActionServletWrapper class: Added for use by ActionForm to prevent the Public String properties of ActionServlet from being changed via a query string.</li>
-    <li>Action.MAPPING_KEY request attribute: Unconditionally pass the selected mapping as a request attribute ("org.apache.struts.action.mapping.instance") even if no form bean is specified.</li>
-    <li>ActionServlet: Avoid a NullPointerException in corner cases caused by failed initialization of servlet.</li>
-    <li>ActionForm class: Now truly serializable, because
-        the two non-serializable instance variables (servlet and
-        multipartRequestHandler) have been made transient.  However, if you
-        actually do serialize and deserialize such instances, it is your
-        responsibility to reset these two properties.</li>
-    <li>ActionMessages and ActionErrors: The initial order a property/key is added in is now retained.</li>
-    <li>processActionForward(): Deprecated in favor of processForwardConfig</li>
-    </ul>
-
-    <p><strong>Upload Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the file upload
-    package (package <code>org.apache.struts.upload</code>) [part of the Upload webapp]:</p>
-    <ul>
-    <li>CommonsMultipartRequestHandler: New implementation of file upload based
-        on the Jakarta Commons FileUpload package. This new implementation is
-        now the default.</li>
-    <li>BufferedMultipartInputStream: Fixed lost byte problem.</li>
-    <li>ArrayIndexOutOfBoundsException: Fixed situations where this was known to occur.</li>
-    <li>Multipart requests: Better reporting for premature closing of input streams while reading multipart requests.</li>
-    <li>New line characters: Additional fix for file corruption problem with uploads and new line characters.</li>
-    </ul>
-
-    <p><strong>Utility Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the utilities
-    (package <code>org.apache.struts.util</code>):</p>
-    <ul>
-    <li>RequestUtils: Added support for forwardPattern, pagePattern, and inputForward properties on ControllerConfig.</li>
-    <li>GenericDataSource: Deprecated and modified to act as a thin wrapper around
-    [<code>org.apache.commons.dbpc.BasicDataSource</code>].
-    Replaced by direct use of BasicDataSource or other compatible component.</li>
-    <li>RequestUtils class: Modify to use ActionServletWrapper rather than expose ActionServlet.</li>
-    <li>Added error message for the getActionErrors and getActionMessages method.</li>
-    <li>getActionErrors and getActionMessages: Added methods to generate the correct corresponding
-    object based on the object retrieved from request scope based on the key passed in.</li>
-    <li>ActionErrors or ActionMessages: The logic for creating one of these objects has been moved
-    to a utility method in RequestUtils.</li>
-    <li>JspException message: Now generated in RequestUtils.</li>
-    <li>ConvertUtils.convertCharacter(): Will now detect empty strings and return the default value.</li>
-    </ul>
-
-    <p><strong>Bean Taglib Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-bean</em> custom tag library
-    [<code>org.apache.struts.taglib.bean</code>]:</p>
-    <ul>
-    <li>&lt;html:errors&gt;: When the property tag is
-    specified, errors are no longer printed if the specified property
-    has no errors. Previously errors were always printed ! Future
-    enhancements would include additional attributes to always turn
-    off the header or footer. </li>
-    <li>Made the remaining helper methods "protected" rather than
-    "private".</li>
-    </ul>
-
-    <p><strong>HTML Taglib Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-html</em> custom tag library (package
-    <code>org.apache.struts.taglib.html</code>):</p>
-    <ul>
-    <li>FormTag: Fixed to exclude query string when identifying action mapping name.</li>
-    <li>ImgTag: Correctly URLEncode the query string parameter value even if there is only a single parameter.</li>
-    <li>MultiboxTag.doAfterBody(): Corrected to return SKIP_BODY instead of SKIP_PAGE.</li>
-    <li>Errortag: defaultLocale method is deprecated as it is unused.</li>
-    </ul>
-
-    <p><strong>Logic Taglib Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-logic</em> custom tag library (package
-    <code>org.apache.struts.taglib.logic</code>):</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p><strong>Documentation Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts Documentation
-    application (and corresponding contents on the Struts web site) have
-    occurred:</p>
-    <ul>
-    <li>Reorganized Resources into separate pages..</li>
-    <li>In the Tag Developers Guide, add more detail regarding file upload requirements.</li>
-    <li>In Building View Components, clarify that additional i18n support may be provided by the browser, and is outside the scope of the framework.</li>
-    <li>In Building Controller Components, document 'validating' init-param, add defaults for various parameters, clarify that some web.xml settings are not Struts-specific.</li>
-    <li>Tag library documentation: Moved under User's Guide.</li>
-    <li>Reorganized to separate 1.0 material from nightly build material.</li>
-    </ul>
-
-    <p><strong>MailReader Example Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts MailReader Example Application
-    have occurred:</p>
-    <ul>
-    <li>Add Russian and Japanese translations of the application resources and set the character set for the example JSP pages to "UTF-8" so that it can display either English or Japanese.</li>
-    <li>Exchange "name" for "attribute" properties for Edit mappings in Struts configuration file.</li>
-    <li>Remove references to saving database data from "tour" document, since this functionality was removed.</li>
-    </ul>
-
-    <p><strong>Template Example Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts Template Example
-    Application have occurred:</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p><strong>Exercise Taglib Example Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts Exercise Taglib Example
-    Application have occurred:</p>
-    <ul>
-    <li>Added test case for &lt;html:link&gt; using "action" attribute. </li>
-    <li>Added test cases for &lt;html:select&gt; using &lt;html:options&gt; and
-        &lt;html:optionsCollection&gt; based on a collection saved in the page context.</li>
-    </ul>
-
-  </section>
-
-  <section name="What's different?" href="diff">
-
-    <p>This section provides links to the Struts JavaDoc for any classes that have
-    been added or deprecated since the Struts 1.0 release.
-    </p>
-
-    <p><strong>Previously deprecated classes and packages removed in Struts 1.1</strong></p>
-    <ul>
-    <li>Removed:
-      <code>org.apache.struts.utils.BeanUtils</code>,
-      <code>org.apache.struts.utils.ConvertUtils</code>, and
-      <code>org.apache.struts.utils.PropertyUtils</code> - replaced by
-      <a href ="http://jakarta.apache.org/commons/beanutils.html"><code>org.apache.commons.beanutils</code></a>
-    </li>
-    <li>Removed:
-     <code>org.apache.struts.util.ArrayStack</code>,
-     <code>org.apache.struts.util.FastArrayList</code>,
-     <code>org.apache.struts.util.FastHashMap</code>,
-     <code>org.apache.struts.util.FastTreeMap</code> - replaced by
-     <a href ="http://jakarta.apache.org/commons/collections.html"><code>org.apache.commons.collections</code></a>
-    </li>
-    <li>Removed: <code>org.apache.struts.digester.*</code> - replaced by
-    <a href ="http://jakarta.apache.org/commons/digester.html"><code>org.apache.commons.digester</code></a>
-    </li>
-    <li>Removed: The <code>struts-config.dtd</code> - Replaced by <a href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"><code>struts-config_1_1.dtd</code></a>.</li>
-    <li>Removed: The omnibus "struts" taglib and its associated TLD - replaced by separate bean, logic, and html taglibs.</li>
-    <li>Removed: The "form" taglib and its associated TLD - replaced by (renamed as) the html taglib.</li>
-    </ul>
-
-    <p><strong>Packages added in Struts 1.1</strong></p>
-
-    <ul>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/config/package-summary.html">config</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/package-summary.html">taglib.nested</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/bean/package-summary.html">taglib.nested.bean</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/html/package-summary.html">taglib.nested.html</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/logic/package-summary.html">taglib.nested.logic</a></li>
-    <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/validator/package-summary.html">validator</a></li>
-    </ul>
-
-    <p><strong>Classes added in Struts 1.1</strong></p>
-    <p>action</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionMessage.html"> ActionMessage</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionMessages.html"> ActionMessages</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/DynaActionForm.html"> DynaActionForm</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/DynaActionFormClass.html"> DynaActionFormClass</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ExceptionHandler.html"> ExceptionHandler</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/RequestProcessor.html"> RequestProcessor</a></li>
-    </ul>
-    <p>actions</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/actions/LookupDispatchAction.html"> LookupDispatchAction</a></li>
-    </ul>
-    <p>taglib.html</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/FrameTag.html"> FrameTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/JavascriptValidatorTag.html"> JavascriptValidatorTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/MessagesTag.html">MessagesTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/OptionsCollectionTag.html"> OptionsCollectionTag</a></li>
-    </ul>
-    <p>taglib.logic</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/EmptyTag.html"> EmptyTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/MessagesNotPresentTag.html"> MessagesNotPresentTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/MessagesPresentTag.html"> MessagesPresentTag</a></li>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/NotEmptyTag.html"> NotEmptyTag</a></li>
-    </ul>
-    <p>upload</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/upload/CommonsMultipartRequestHandler.html"> CommonsMultipartRequestHandler</a></li>
-    </ul>
-    <p>util</p>
-    <ul>
-      <li><a href="http://jakarta.apache.org/struts/api/org/apache/struts/util/LabelValueBean.html"> LabelValueBean</a></li>
-    </ul>
-    <p><strong>Classes with members added in Struts 1.1</strong></p>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/Action.html">action.Action</a></p>
-    <ul>
-      <li>ACTION_SERVLET_KEY</li>
-      <li>APPLICATION_KEY</li>
-      <li>MESSAGE_KEY</li>
-      <li>PLUG_INS_KEY</li>
-      <li>REQUEST_PROCESSOR_KEY</li>
-      <li>execute</li>
-      <li>getResources(javax.servlet.http.HttpServletRequest)</li>
-      <li>saveMessages</li>
-    </ul>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionServlet.html">action.A</a><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionServlet.html">ctionServlet</a></p>
-    <ul>
-      <li>configDigester</li>
-      <li>convertHack</li>
-      <li>log</li>
-      <li>processor</li>
-      <li>getInternal</li>
-      <li>destroyApplications</li>
-      <li>destroyConfigDigester</li>
-      <li>getApplicationConfig</li>
-      <li>getRequestProcessor</li>
-      <li>initApplicationConfig</li>
-      <li>initApplicationDataSources</li>
-      <li>initApplicationPlugIns</li>
-      <li>initApplicationMessageResources</li>
-      <li>initConfigDigester</li>
-      <li>methods created for backward-compatiblity only
-        <ul>
-          <li>defaultControllerConfig</li>
-          <li>defaultFormBeansConfig</li>
-          <li>defaultForwardsConfig</li>
-          <li>defaultMappingsConfig</li>
-          <li>defaultMessageResourcesConfig</li>
-        </ul>
-      </li>
-    </ul>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/BaseHandlerTag.html">taglib.html.BaseHandlerTag</a></p>
-    <ul>
-      <li>indexed</li>
-      <li>setIndexed</li>
-      <li>getIndexed</li>
-    </ul>
-    <p><strong>Classes deprecated between Struts 1.0 and Struts 1.1</strong></p>
-    <p>action</p>
-    <ul>
-      <li>ActionException</li>
-      <li>ActionFormBeans</li>
-      <li>ActionForwards</li>
-      <li>ActionMappings</li>
-    </ul>
-    <p><strong>Classes with members deprecated between Struts 1.0 and Struts 1.1</strong></p>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/Action.html">action.Action</a></p>
-
-    <ul>
-      <li>FORM_BEANS_KEY</li>
-      <li>FORWARDS_KEY</li>
-      <li>MAPPINGS_KEY</li>
-      <li>getResources()</li>
-      <li>perform</li>
-    </ul>
-    <p><a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionServlet.html">ActionServlet</a></p>
-    <ul>
-      <li>findDataSource</li>
-      <li>findFormBean</li>
-      <li>findForward</li>
-      <li>findMapping</li>
-      <li>initDataSources</li>
-      <li>methods created for backward-compatiblity only
-        <ul>
-          <li>defaultControllerConfig</li>
-          <li>defaultFormBeansConfig</li>
-          <li>defaultForwardsConfig</li>
-          <li>defaultMappingsConfig</li>
-          <li>defaultMessageResourcesConfig</li>
-        </ul>
-      </li>
-    </ul>
-
-</section>
-
-<section>
-    <p class="right">
-    Next: <a href="installation.html">Installation</a>
-    </p>
-</section>
-
-
-    </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/release-notes.xml b/build-legacy/core/xdocs/userGuide/release-notes.xml
deleted file mode 100644
index 8e9b6eb..0000000
--- a/build-legacy/core/xdocs/userGuide/release-notes.xml
+++ /dev/null
@@ -1,364 +0,0 @@
-<?xml version="1.0"?>
-<document url="release-notes.html">
-
-  <properties>
-    <title>Struts Release Notes (Nightly Build)</title>
-  </properties>
-
-  <body>
-
-  <section name="6.1 Release Notes" href="release_notes"/>
-  <section name="Beta Notes" href="beta">
-
-    <p>This section contains the release notes for
-    <strong>nightly build</strong> of the Struts Framework,
-    for changes that have taken place since
-    <a href="release-notes-1.1.html">Version 1.1 </a>
-    was released. For a complete list of changes since the last
-    production release, see the <a href="#Introduction">Introduction</a> </p>
-
-  </section>
-
-<section name="Beta Fixes" href="beta.Changes">
-
-  <p>
-  <strong>ApplicationConfig:</strong> In Struts 1.2 was removed.
-  </p>
-
-
-</section>
-
-  <section name="Introduction" href="Introduction">
-
-    <p>The remainder of this document contains the release notes for
-    <strong>nightly build</strong> of the Struts Framework,
-    and covers changes that have taken place since
-    <a href="release-notes-1.1.html">Version 1.1</a>
-    was released.  The following sections cover
-    <a href="#New">New Features</a> and <a href="#Changes">Changes</a>
-    to Struts.</p>
-
-  </section>
-
-
-  <section name="What's Included?" href="Included">
-
-    <p>The binary distribution of this release includes the following
-    files relevant to Struts:</p>
-    <ul>
-    <li><code>INSTALL</code> - Brief installation instructions.  See
-        the <code>Struts Documentation Application</code>, or online at
-        <a href="http://jakarta.apache.org/struts/">http://jakarta.apache.org/struts/</a>
-        for more information.</li>
-    <li><code>LICENSE</code> - The Apache Software Foundation license that
-        defines the terms under which you can use Struts (and other software
-        licensed by Apache).</li>
-    <li><code>README</code> - A brief introduction to Struts.</li>
-    <li><code>lib/</code> - Directory containing files you will need in
-        your own applications.  The individual files of interest are:
-        <ul>
-        <li><code>commons-*.jar</code> - Release packages from the
-            <a href="http://jakarta.apache.org/commons/">Jakarta Commons
-            Project</a> that Struts relies on.  You are welcome to use these
-            classes in your own applications.  These JAR files should be
-            copied into the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts.jar</code> - JAR file that contains the compiled
-            Java classes of Struts.  You must
-            place this file in the <code>/WEB-INF/lib</code> directory of
-            your web application.</li>
-        <li><code>struts-xxxxx.tld</code> - The tag library descriptor files
-            for the Struts 1.1 tag libraries (bean, html, and logic).
-            You must place these files in the <code>/WEB-INF</code>
-            directory of your web application, and reference them with
-            appropriate <code>&lt;taglib&gt;</code> directives in your
-            web.xml file.</li>
-        <li><code>jdbc2_0-stdext.jar</code> - The JDBC 2.0 Optional Package
-            API classes (package <code>javax.sql</code>).  You will need to
-            include this file in the <code>/WEB-INF/lib</code> directory
-            of your application, if it is not already made visible to web
-            applications by your servlet container.</li>
-        <li><code>struts-config_1_2.dtd</code> - The Document Type Definition
-            (DTD) for the Struts 1.2 configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>.  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>struts-config_1_1.dtd</code> - The Document Type Definition
-            (DTD) for the Struts 1.1 configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>.  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>struts-config_1_0.dtd</code> - The Document Type Definition
-            (DTD) for the Struts 1.0 configuration file (which is typically named
-            <code>/WEB-INF/struts-config.xml</code>.  Your configuration file
-            will be validated against an internal copy of this DTD -- this
-            copy is available for reference purposes only.</li>
-        <li><code>web-app_2_2.dtd</code> - The Document Type Definition (DTD)
-            for web.xml files conforming to the Servlet 2.2 specification.
-            This copy is for reference purposes only.</li>
-        <li><code>web-app_2_3.dtd</code> - The Document Type Definition (DTD)
-            for web.xml files conforming to the Servlet 2.3 specification.
-            This copy is for reference purposes only.</li>
-        </ul></li>
-    <li><code>webapps/</code> - Web Application Archive (WAR) files for the
-        web applications that are included with Struts.</li>
-    </ul>
-
-    <p>The following Jakarta Commons libraries are included with this release
-    of Struts:</p>
-    <ul>
-    <li>Commons BeanUtils 1.6.1</li>
-    <li>Commons Collections 2.1</li>
-    <li>Commons Digester 1.5</li>
-    <li>Commons FileUpload 1.0</li>
-    <li>Commons Lang 2.0</li>
-    <li>Commons Logging 1.0.3</li>
-    <li>Commons Validator 1.1.0</li>
-    </ul>
-
-  </section>
-
-  <section name="What's New?" href="New">
-
-    <p>Following are highlights of the new features. In the next section, we
-    provide links to the JavaDocs for the affected classes.</p>
-
-    <p><strong>New Configuration DTD</strong></p>
-    <p> The Struts Configuration 1.1 DTD has been deprecated in favor of the
-    <code><a href="http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">struts-config_1_2.dtd</a></code>.
-    In the Struts 1.2 release, existing Struts configuration files can be
-    loaded using either DTD version. The new DTD adds two new elements &lt;display-name&gt;
-    and &lt;description&gt; to the struts-config element.
-    There are for use by struts config file tools and document generation. 
-    </p>
-
-    <p><strong>New Dependencies on Commons packages</strong></p>
-    <p>The resource component of Struts 1.1 has been found to be useful in
-    general Java development (and not just useful for building Struts-based
-    web applications), and have been migrated into the
-    <a href="http://jakarta.apache.org/commons/">Jakarta Commons Project</a>.
-    As a result, the current development version of Struts has been modified
-    to rely on this Commons package, rather than the
-    Struts internal version.  In nearly every case, this involved changing
-    only the <code>import</code> statements at the top of your classes.  Any
-    applications that utilize these classes will need to be modified in the
-    same way.  </p>
-    <p>The following Commons packages contain the replacements for the
-    corresponding Struts 1.1 classes:</p>
-    <ul>
-    <li><strong>Resources Package</strong>
-        [<a href="http://jakarta.apache.org/commons/resources.html"><code>org.apache.commons.resources</code></a>] -
-        <code>org.apache.struts.utils.MessageResources</code></li>
-    </ul>
-
-    <p><strong>NOTE! XML Parser Prerequisite Updated</strong></p>
-
-    <p>Struts now depends on an XML parser that conforms to the JAXP/1.1
-    (rather than JAXP/1.0) APIs. Parsers known to work include the JAXP/1.1
-    reference implementation, and Xerces 1.3.1.</p>
-
-    <p><strong>SOURCE DEVELOPERS NOTE! Ant Prerequisite Updated</strong></p>
-    <p>To build Struts from source Ant 1.5.2 or later is now required. This
-    does not affect developers that use Struts from the binary distribution.</p>
-
-
-    <p>The source for these components is available in the Struts source
-    distribution. Binary distributions may also be made available with the Struts
-    download area. As optional components, these products have their own
-    release cycles.</p>
-
-    <p><strong>Action Package Additions</strong></p>
-    <p>The following new features have been added to the basic controller
-    framework [<code>org.apache.struts.action</code>]:</p>
-
-    <p><strong>Actions Package Additions</strong></p>
-    <p>The following new features have been added to the adapters between the
-        incoming HTTP request and the corresponding business logic
-    framework [<code>org.apache.struts.actions</code>]:</p>
-    <ul>
-      <li>The DispatchAction now provides default cancel handler that can be overridden.
-          It also also possible to specify the default handler name.</li>
-      <li>The LookupDispatchAction now provides default cancel handler that can be overridden.
-          It also also possible to specify the default handler name.</li>
-    </ul>
-
-    <p><strong>Util Package Additions</strong></p>
-    <p>The following new features have been added to the utility classes
-    [<code>org.apache.struts.util</code>]:</p>
-
-    <p><strong>Validator Package Additions</strong></p>
-    <p>The following new features have been added to the validator classes
-    [<code>org.apache.struts.validator</code>]:</p>
-    <ul>
-       <li>The ValidatorPlugin:  It is now possible to force the client side
-       Javascript validation to check all constraints, instead of stopping
-       at the first error. By setting a new property, stopOnFirstError,
-       on the validator plug in tag to false. This is in the struts-config.xml as follow:
-       <pre>
-       &lt;plug-in className="org.apache.struts.validator.ValidatorPlugIn"&gt;
-         &lt;set-property property="pathnames"
-                 value="/WEB-INF/validation.xml,/WEB-INF/validator-rules.xml"/&gt;
-         &lt;set-property property="stopOnFirstError" value="true"/&gt;
-      &lt;/plug-in&gt;
-       </pre>
-        </li>
-        <li>validator-rules.xml[intRange]: IntRange now checks select-one and radio fields.
-            Example:
-            This allows populating combo boxes with valid choices plus one additional choice
-            with a caption something like  "Choose one" and a value 0f "-1".
-            Then when the user attempts to submit the form, you can look for the value of
-            "-1" and yell at them if they failed to pick something.
-
-
-           </li>
-
-    </ul>
-
-    <p><strong>HTML Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-html</em> custom tag library [<code>org.apache.struts.taglib.html</code>]:</p>
-
-    <p><strong>Logic Taglib Package Additions</strong></p>
-    <p>The following new features have been added to the
-    <em>struts-logic</em> custom tag library [<code>org.apache.struts.taglib.logic</code>]:</p>
-
-
-    <p><strong>Documentation Additions</strong></p>
-    <p>The following new features have been added to the Struts Documentation
-    application (and corresponding contents on the Struts web site):</p>
-
-  </section>
-
-  <section name="Operational Changes and Bug Fixes" href="Changes">
-
-    <p><strong>Struts Configuration Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the configuration
-    files related to Struts:</p>
-    <ul>
-        <li>Japanese resources updates for Struts, its example, upload, tiles-documentation.</li>
-    </ul>
-    <p><strong>Config Package</strong></p>
-
-    <p><strong>Action Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the basic
-    controller framework (package <code>org.apache.struts.action</code>):</p>
-
-    <p><strong>Upload Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the file upload
-    package (package <code>org.apache.struts.upload</code>):</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p><strong>Utility Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the utilities
-    (package <code>org.apache.struts.util</code>):</p>
-    <ul>
-    <li>RequestUtils: </li>
-    </ul>
-
-    <p><strong>Bean Taglib Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-bean</em> custom tag library
-    [<code>org.apache.struts.taglib.bean</code>]:</p>
-
-    <p><strong>HTML Taglib Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-html</em> custom tag library (package
-    <code>org.apache.struts.taglib.html</code>):</p>
-
-    <p><strong>Logic Taglib Package Changes</strong></p>
-    <p>The following changes and bug fixes have occurred in the
-    <em>struts-logic</em> custom tag library (package
-    <code>org.apache.struts.taglib.logic</code>):</p>
-    <ul>
-    <li>None.</li>
-    </ul>
-
-    <p><strong>Documentation Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts Documentation
-    application (and corresponding contents on the Struts web site) have
-    occurred:</p>
-
-    <p><strong>MailReader Example Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts MailReader Example Application
-    have occurred:</p>
-
-    <p><strong>Template Example Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts Template Example
-    Application have occurred:</p>
-    <ul>
-    <li>Removed.</li>
-    </ul>
-
-    <p><strong>Exercise Taglib Example Application Changes</strong></p>
-    <p>The following changes and bug fixes to the Struts Exercise Taglib Example
-    Application have occurred:</p>
-
-  </section>
-
-  <section name="What's different?" href="diff">
-
-    <p>This section provides links to the Struts JavaDoc for any classes that have
-    been added or deprecated since the Struts 1.0 release.
-    </p>
-
-    <p><strong>Previously deprecated classes and packages removed in Struts 1.2</strong></p>
-    <ul>
-    <li>Removed:
-      <code>org.apache.struts.xxxx</code>
-    </li>
-    </ul>
-
-    <p><strong>Packages added in Struts 1.2</strong></p>
-
-
-    <p><strong>Classes added in Struts 1.2</strong></p>
-    <p>action</p>
-
-    <p>actions</p>
-
-    <p>taglib.html</p>
-
-    <p>taglib.logic</p>
-
-    <p>upload</p>
-
-    <p>util</p>
-    
-    <p><strong>Classes with members added in Struts 1.2</strong></p>
-    <p><a href="../api/org/apache/struts/action/ActionServlet.html">action.A</a><a href="../api/org/apache/struts/action/ActionServlet.html">ActionServlet</a></p>
-    <ul>
-      <li>initModuleConfigFactory()</li>
-      <li>methods created for backward-compatiblity only</li>
-    </ul>
-    <p><a href="../api/org/apache/struts/validator/ValidatorPlugin.html">validator.html</a></p>
-    <ul>
-      <li>isStopOnFirstError</li>
-      <li>setStopOnFirstError</li>
-    </ul>
-    <p><strong>Classes deprecated between Struts 1.1 and Struts 1.2</strong></p>
-    <p>action</p>
-    <ul>
-      <li><a href="../api/org/apache/struts/xxx/xxxx.html"> xxx</a></li>
-    </ul>
-    
-    <p><strong>Classes with members deprecated between Struts 1.1 and Struts 1.2</strong></p>
-    <p><a href="../api/org/apache/struts/xxxx/xxxx.html">class.method</a></p>
-
-  
-    <p><strong>Classes with members removed between Struts 1.1 and Struts 1.2</strong></p>
-    <p>validator-rules.xml, range() - use intRange() instead.</p>
-
-</section>
-
-<section>
-    <p class="right">
-    Next: <a href="installation.html">Installation</a>
-    </p>
-</section>
-
-
-    </body>
-
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/struts-bean.xml b/build-legacy/core/xdocs/userGuide/struts-bean.xml
deleted file mode 100644
index 9dc8acb..0000000
--- a/build-legacy/core/xdocs/userGuide/struts-bean.xml
+++ /dev/null
@@ -1,1120 +0,0 @@
-<?xml version="1.0"?>
-<document url="struts-bean.html" authors="false">
-
-<properties>
-  <title>The Struts Framework Project - Bean Tags</title>
-</properties>
-
-<body>
-
-
-<taglib>
-
-  <tlibversion>1.0</tlibversion>
-  <jspversion>1.1</jspversion>
-  <shortname>bean</shortname>
-  <display-name>Struts Bean Tags</display-name>
-  <uri>http://jakarta.apache.org/struts/tags-bean</uri>
-  <info>
-  <p>This tag library contains tags useful in accessing beans and their
-  properties, as well as defining new beans (based on these accesses)
-  that are accessible to the remainder of the page via scripting variables
-  and page scope attributes.  Convenient mechanisms to create new beans
-  based on the value of request cookies, headers, and parameters are also
-  provided.</p>
-
-  <p>Many of the tags in this tag library will throw a
-  <code>JspException</code> at runtime when they are utilized incorrectly
-  (such as when you specify an invalid combination of tag attributes).  JSP
-  allows you to declare an "error page" in the <code>&lt;%@ page %&gt;</code>
-  directive.  If you wish to process the actual exception that caused the
-  problem, it is passed to the error page as a request attribute under key
-  <code>org.apache.struts.action.EXCEPTION</code>.</p>
-
-  <p>If you are viewing this page from within the Struts Documentation
-  Application (or online at <a href="http://jakarta.apache.org/struts">
-  http://jakarta.apache.org/struts</a>), you can learn more about using
-  these tags in the
-  <a href="../api/org/apache/struts/taglib/bean/package-summary.html#package_description">
-  Bean Tags Developer's Guide</a>.</p>
-  </info>
-
-
-  <tag>
-
-    <name>cookie</name>
-    <summary>
-    Define a scripting variable based on the value(s) of the specified
-    request cookie.
-    </summary>
-    <tagclass>org.apache.struts.taglib.bean.CookieTag</tagclass>
-    <teiclass>org.apache.struts.taglib.bean.CookieTei</teiclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-    <p>Retrieve the value of the specified request cookie (as a single
-    value or multiple values, depending on the <code>multiple</code> attribute),
-    and define the result as a page scope attribute of type <code>Cookie</code>
-    (if <code>multiple</code> is not specified) or <code>Cookie[]</code>
-    (if <code>multiple</code> is specified).</p>
-
-    <p>If no cookie with the specified name can be located, and no default
-    value is specified, a request time exception will be thrown.</p>
-    </info>
-
-    <attribute>
-      <name>id</name>
-      <required>true</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      <p>Specifies the name of the scripting variable (and associated page
-      scope attribute) that will be made available with the value of the
-      specified request cookie.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>multiple</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>If any arbitrary value for this attribute is specified, causes all
-      matching cookies to be accumulated and stored into a bean of type
-      <code>Cookie[]</code>.  If not specified, the first value for the
-      specified cookie will be retrieved as a value of type
-      <code>Cookie</code>.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Specifies the name of the request cookie whose value, or values,
-      is to be retrieved.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The default cookie value to return if no cookie with the
-      specified name was included in this request.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>define</name>
-    <summary>
-    Define a scripting variable based on the value(s) of the specified
-    bean property.
-    </summary>
-    <tagclass>org.apache.struts.taglib.bean.DefineTag</tagclass>
-    <teiclass>org.apache.struts.taglib.bean.DefineTei</teiclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-    <p>Create a new attribute (in the scope specified by the
-    <code>toScope</code> property, if any), and a corresponding scripting
-    variable, both of which are named by the value of the <code>id</code>
-    attribute.  The corresponding value to which this new attribute (and
-    scripting variable) is set are specified via use of exactly one of the
-    following approaches (trying to use more than one will result in a
-    JspException being thrown):</p>
-    <ul>
-    <li>Specify a <code>name</code> attribute (plus optional
-        <code>property</code> and <code>scope</code> attributes) -
-        The created attribute and scripting variable will be of the type of the
-        retrieved JavaBean property, unless it is a Java primitive type,
-        in which case it will be wrapped in the appropriate wrapper class
-        (i.e. int is wrapped by java.lang.Integer).</li>
-    <li>Specify a <code>value</code> attribute - The created attribute and
-        scripting variable will be of type <code>java.lang.String</code>,
-        set to the value of this attribute.</li>
-    <li>Specify nested body content - The created attribute and scripting
-        variable will be of type <code>java.lang.String</code>, set to
-        the value of the nested body content.</li>
-    </ul>
-
-    <p>If a problem occurs while retrieving the specified bean property, a
-    request time exception will be thrown.</p>
-
-    <p>The <code>&lt;bean:define&gt;</code> tag differs from
-    <code>&lt;jsp:useBean&gt;</code> in several ways, including:</p>
-    <ul>
-    <li>Unconditionally creates (or replaces) a bean under the
-        specified identifier.</li>
-    <li>Can create a bean with the value returned by a property getter
-        of a different bean (including properties referenced with a
-        nested and/or indexed property name).</li>
-    <li>Can create a bean whose contents is a literal string (or the result
-        of a runtime expression) specified by the <code>value</code>
-        attribute.</li>
-    <li>Does not support nested content (such as
-        <code>&lt;jsp:setProperty&gt;</code> tags) that are only executed
-        if a bean was actually created.</li>
-    </ul>
-
-    <p><strong>USAGE NOTE</strong> - There is a restriction in the JSP 1.1
-    Specification that disallows using the same value for an <code>id</code>
-    attribute more than once in a single JSP page.  Therefore, you will not
-    be able to use <code>&lt;bean:define&gt;</code> for the same bean
-    name more than once in a single page.</p>
-
-    <p><strong>USAGE NOTE</strong> - If you use another tag to create the
-    body content (e.g. bean:write), that tag must return a non-empty String.
-    An empty String equates to an empty body or a null String, and a new
-    scripting variable cannot be defined as null. Your bean must return a
-    non-empty String, or the define tag must be wrapped within a logic tag
-    to test for an empty or null value.</p>
-
-    <p><strong>USAGE NOTE</strong> - You cannot use bean:define to <strong>instantiate</strong>
-    a DynaActionForm (type="org.apache.struts.action.DynaActionForm") with
-    the properties specified in the struts-config. The mechanics of creating
-    the dyna-properties is complex and cannot be handled by a no-argument
-    constructor. If you need to create an ActionForm this way, you must use
-    a conventional ActionForm.
-    </p>
-
-    <p>See the Bean Developer's Guide section on
-    <a href="../api/org/apache/struts/taglib/bean/package-summary.html#doc.Creation">
-    bean creation</a> for more information about these differences, as well
-    as alternative approaches to introducing beans into a JSP page.</p>
-    </info>
-
-    <attribute>
-      <name>id</name>
-      <required>true</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      <p>Specifies the name of the scripting variable (and associated page
-      scope attribute) that will be made available with the value of the
-      specified property.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Specifies the attribute name of the bean whose property is accessed
-      to define a new page scope attribute (if <code>property</code> is also
-      specified) or the attribute name of the bean that is duplicated with
-      the new reference created by this tag (if <code>property</code> is not
-      also specified).  This attribute is required unless you specify
-      a <code>value</code> attribute or nested body content.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Specifies the name of the property to be accessed on the bean
-      specified by <code>name</code>.  This value may be a simple, indexed,
-      or nested property reference expression.  If not specified, the bean
-      identified by <code>name</code> is given a new reference identified by
-      <code>id</code>.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Specifies the variable scope searched to retrieve the bean specified
-      by <code>name</code>.  If not specified, the default rules applied by
-      <code>PageContext.findAttribute()</code> are applied.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>toScope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Specifies the variable scope into which the newly defined bean will
-      be created.  If not specified, the bean will be created in
-      <code>page</code> scope.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>type</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-        <p>Specifies the fully qualified class name of the value to be exposed
-        as the <code>id</code> attribute.</p>
-      </info>
-      <default>
-        <code>java.lang.String</code> (if you specify a <code>value</code>
-        attribute) or <code>java.lang.Object</code> otherwise.
-      </default>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The <code>java.lang.String</code> value to which the exposed bean
-      should be set.  This attribute is required unless you specify the
-      <code>name</code> attribute or nested body content.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>header</name>
-    <summary>
-    Define a scripting variable based on the value(s) of the specified
-    request header.
-    </summary>
-    <tagclass>org.apache.struts.taglib.bean.HeaderTag</tagclass>
-    <teiclass>org.apache.struts.taglib.bean.HeaderTei</teiclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-    <p>Retrieve the value of the specified request header (as a single
-    value or multiple values, depending on the <code>multiple</code> attribute),
-    and define the result as a page scope attribute of type <code>String</code>
-    (if <code>multiple</code> is not specified) or <code>String[]</code>
-    (if <code>multiple</code> is specified).</p>
-
-    <p>If no header with the specified name can be located, and no default
-    value is specified, a request time exception will be thrown.</p>
-    </info>
-
-    <attribute>
-      <name>id</name>
-      <required>true</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      <p>Specifies the name of the scripting variable (and associated page
-      scope attribute) that will be made available with the value of the
-      specified request header.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>multiple</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>If any arbitrary value for this attribute is specified, causes a call
-      to <code>HttpServletRequest.getHeaders()</code> and a definition of the
-      result as a bean of type <code>String[]</code>.  Otherwise,
-      <code>HttpServletRequest.getHeader()</code> will be called, and a
-      definition of the result as a bean of type <code>String</code>
-      will be performed.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Specifies the name of the request header whose value, or values,
-      is to be retrieved.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The default header value to return if no header with the
-      specified name was included in this request.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>include</name>
-    <summary>
-    Load the response from a dynamic application request and make it available
-    as a bean.
-    </summary>
-    <tagclass>org.apache.struts.taglib.bean.IncludeTag</tagclass>
-    <teiclass>org.apache.struts.taglib.bean.IncludeTei</teiclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-    <p>Perform an internal dispatch to the specified application component
-    (or external URL)
-    and make the response data from that request available as a bean of
-    type <code>String</code>.  This tag has a function similar to that of
-    the standard <code>&lt;jsp:include&gt;</code> tag, except that the
-    response data is stored in a page scope attribute instead of being
-    written to the output stream.  If the current request is part of a
-    session, the generated request for the include will also include the
-    session identifier (and thus be part of the same session).</p>
-
-    <p>The URL used to access the specified application component is
-    calculated based on which of the following attributes you specify
-    (you must specify exactly one of them):</p>
-    <ul>
-    <li><em>forward</em> - Use the value of this attribute as the name
-        of a global <code>ActionForward</code> to be looked up, and
-        use the application-relative or context-relative URI found there.</li>
-    <li><em>href</em> - Use the value of this attribute unchanged (since
-        this might link to a resource external to the application, the
-        session identifier is <strong>not</strong> included.</li>
-    <li><em>page</em> - Use the value of this attribute as an
-        application-relative URI to the desired resource.</li>
-    </ul>
-    </info>
-
-    <p><strong>WARNING</strong> - Accessing resources protected by security
-    constraints, or resources under the <code>/WEB-INF</code> subdirectory,
-     with this tag is not supported.  Consider using the
-    <code>&lt;jsp:include ... flush="false"&gt;</code> tag on a JSP 1.2
-    or later container, or the
-    <code>&lt;c:import&gt;</code> tag from the JSP Standard Tag Library
-    to accomplish this.</p>
-
-    <attribute>
-      <name>anchor</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Optional anchor tag ("#xxx") to be added to the generated
-      hyperlink.  Specify this value <strong>without</strong> any
-      "#" character.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>forward</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Logical name of a global <code>ActionForward</code> that contains
-      the actual content-relative URI of the resource to be included.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>href</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Absolute URL (including the appropriate protocol prefix such as
-      "http:") of the resource to be included.  Because this URL could be
-      external to the current web application, the session identifier will
-      <strong>not</strong> be included in the request.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>id</name>
-      <required>true</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      <p>Specifies the name of the scripting variable (and associated page
-      scope attribute) that will be made available with the value of the
-      specified web application resource.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Application-relative name (starting with a '/') of the web application
-      resource to be dispatched, and whose response data is to be made
-      available as a bean.</p>
-      </info>
-      <deprecated>
-      Use the "page" attribute instead.
-      </deprecated>
-    </attribute>
-
-    <attribute>
-      <name>page</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Application-relative URI (starting with a '/') of the web application
-      resource to be included.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>transaction</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-        <p>Set to <code>true</code> if you want the current
-        transaction control token included in the generated
-        URL for this include.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>message</name>
-    <summary>
-    Render an internationalized message string to the response.
-    </summary>
-    <tagclass>org.apache.struts.taglib.bean.MessageTag</tagclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-    <p>Retrieves an internationalized message for the specified locale,
-    using the specified message key, and write it to the output stream.
-    Up to five parametric replacements (such as "{0}") may be specified.</p>
-
-    <p>The message key may be specified directly, using the <code>key</code>
-    attribute, or indirectly, using the <code>name</code> and
-    <code>property</code> attributes to obtain it from a bean.</p>
-    
-    <p>
-    <strong>JSTL</strong>:  The equivalent JSTL tag is &lt;fmt:message&gt;.  For example,
-    <br/>
-    <code>
-    	&lt;fmt:message key="my.msg.key"&gt;
-    	  &lt;fmt:param value="replacement text"/&gt;
-    	&lt;/fmt:message&gt;
-    </code>
-    </p>
-    </info>
-
-    <attribute>
-      <name>arg0</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>First parametric replacement value, if any.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>arg1</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Second parametric replacement value, if any.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>arg2</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Third parametric replacement value, if any.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>arg3</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Fourth parametric replacement value, if any.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>arg4</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Fifth parametric replacement value, if any.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>bundle</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The name of the application scope bean under which the
-      <code>MessageResources</code> object containing our messages
-      is stored.</p>
-      </info>
-      <default>Globals.MESSAGES_KEY</default>
-    </attribute>
-
-    <attribute>
-      <name>key</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The message key of the requested message, which must have
-      a corresponding value in the message resources. If not specified,
-      the key is obtained from the <code>name</code> and
-      <code>property</code> attributes.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>locale</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The name of the session scope bean under which our currently
-      selected <code>Locale</code> object is stored.</p>
-      </info>
-      <default>Globals.LOCALE_KEY</default>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Specifies the attribute name of the bean whose property is accessed
-      to retrieve the value specified by <code>property</code> (if
-      specified).  If <code>property</code> is not specified, the value of
-      this bean itself will be used as the message resource key.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Specifies the name of the property to be accessed on the bean
-      specified by <code>name</code>.  This value may be a simple, indexed,
-      or nested property reference expression.  If not specified, the value
-      of the bean identified by <code>name</code> will itself be used as the
-      message resource key.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Specifies the variable scope searched to retrieve the bean specified
-      by <code>name</code>.  If not specified, the default rules applied by
-      <code>PageContext.findAttribute()</code> are applied.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>page</name>
-    <summary>
-    Expose a specified item from the page context as a bean.
-    </summary>
-    <tagclass>org.apache.struts.taglib.bean.PageTag</tagclass>
-    <teiclass>org.apache.struts.taglib.bean.PageTei</teiclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-    <p>Retrieve the value of the specified item from the page context
-    for this page, and define it as a scripting variable, and a page scope
-    attribute accessible to the remainder of the current page.</p>
-
-    <p>If a problem occurs while retrieving the specified configuration
-    object, a request time exception will be thrown.</p>
-    </info>
-
-    <attribute>
-      <name>id</name>
-      <required>true</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      <p>Specifies the name of the scripting variable (and associated
-      page scope attribute) that will be made available with the value of
-      the specified page context property.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Name of the property from our page context to be retrieved and
-      exposed.  Must be one of <code>application</code>, <code>config</code>,
-      <code>request</code>, <code>response</code>, or <code>session</code>.
-      </p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>parameter</name>
-    <summary>
-    Define a scripting variable based on the value(s) of the specified
-    request parameter.
-    </summary>
-    <tagclass>org.apache.struts.taglib.bean.ParameterTag</tagclass>
-    <teiclass>org.apache.struts.taglib.bean.ParameterTei</teiclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-    <p>Retrieve the value of the specified request parameter (as a single
-    value or multiple values, depending on the <code>multiple</code> attribute),
-    and define the result as a page scope attribute of type <code>String</code>
-    (if <code>multiple</code> is not specified) or <code>String[]</code>
-    (if <code>multiple</code> is specified).</p>
-
-    <p>If no request parameter with the specified name can be located, and
-    no default value is specified, a request time exception will be thrown.</p>
-    </info>
-
-    <attribute>
-      <name>id</name>
-      <required>true</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      <p>Specifies the name of the scripting variable (and associated page
-      scope attribute) that will be made available with the value of the
-      specified request parameter.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>multiple</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>If any arbitrary value for this attribute is specified, causes a call
-      to <code>ServletRequest.getParameterValues()</code> and a definition of
-      the result as a bean of type <code>String[]</code>.  Otherwise,
-      <code>ServletRequest.getParameter()</code> will be called, and a
-      definition of the result as a bean of type <code>String</code>
-      will be performed.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Specifies the name of the request parameter whose value, or values,
-      is to be retrieved.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The default parameter value to return if no parameter with the
-      specified name was included in this request.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>resource</name>
-    <summary>
-    Load a web application resource and make it available as a bean.
-    </summary>
-    <tagclass>org.apache.struts.taglib.bean.ResourceTag</tagclass>
-    <teiclass>org.apache.struts.taglib.bean.ResourceTei</teiclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-    <p>Retrieve the value of the specified web application resource, and make
-    it available as either a <code>InputStream</code> or a <code>String</code>,
-    depending on the value of the <code>input</code> attribute.</p>
-
-    <p>If a problem occurs while retrieving the specified resource, a
-    request time exception will be thrown.</p>
-    </info>
-
-    <attribute>
-      <name>id</name>
-      <required>true</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      <p>Specifies the name of the scripting variable (and associated page
-      scope attribute) that will be made available with the value of the
-      specified web application resource.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>input</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>If any arbitrary value for this attribute is specified, the resource
-      will be made available as an <code>InputStream</code>.  If this
-      attribute is not specified, the resource will be made available
-      as a <code>String</code>.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Application-relative name (starting with a '/') of the web application
-      resource to be loaded and made available.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>size</name>
-    <summary>
-    Define a bean containing the number of elements in a Collection or Map.
-    </summary>
-    <tagclass>org.apache.struts.taglib.bean.SizeTag</tagclass>
-    <teiclass>org.apache.struts.taglib.bean.SizeTei</teiclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-    <p>Given a reference to an array, Collection or Map, creates a new bean, of
-    type <code>java.lang.Integer</code>, whose value is the number of elements
-    in that collection.  You can specify the collection to be counted in any
-    one of the following ways:</p>
-    <ul>
-    <li>As a runtime expression specified as the value of the
-        <code>collection</code> attribute.</li>
-    <li>As a JSP bean specified by the <code>name</code> attribute.</li>
-    <li>As the property, specified by the <code>property</code> attribute,
-        of the JSP bean specified by the <code>name</code> attribute.</li>
-    </ul>
-    </info>
-
-    <attribute>
-      <name>collection</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>A runtime expression that evaluates to an array, a Collection, or
-      a Map.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>id</name>
-      <required>true</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      <p>The name of a page scope JSP bean, of type
-      <code>java.lang.Integer</code>, that will be created to contain the
-      size of the underlying collection being counted.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The name of the JSP bean (optionally constrained to the scope
-      specified by the <code>scope</code> attribute) that contains the
-      collection to be counted (if <code>property</code> is not specified),
-      or whose property getter is called to return the collection to be
-      counted (if <code>property</code> is specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The name of the property, of the bean specified by the
-      <code>name</code> attribute, whose getter method will return the
-      collection to be counted.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The bean scope within which to search for the JSP bean specified
-      by the <code>name</code> attribute.  If not specified, the available
-      scopes are searched in ascending sequence.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>struts</name>
-    <summary>
-    Expose a named Struts internal configuration object as a bean.
-    </summary>
-    <tagclass>org.apache.struts.taglib.bean.StrutsTag</tagclass>
-    <teiclass>org.apache.struts.taglib.bean.StrutsTei</teiclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-    <p>Retrieve the value of the specified Struts internal configuration
-    object, and define it as a scripting variable and as a page scope
-    attribute accessible to the remainder of the current page.  You must
-    specify exactly one of the <code>formBean</code>, <code>forward</code>,
-    and <code>mapping</code> attributes to select the configuration object
-    to be exposed.</p>
-
-    <p>If a problem occurs while retrieving the specified configuration
-    object, a request time exception will be thrown.</p>
-    </info>
-
-    <attribute>
-      <name>id</name>
-      <required>true</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      <p>Specifies the name of the scripting variable (and associated
-      page scope attribute) that will be made available with the value of
-      the specified Struts internal configuration object.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>formBean</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Specifies the name of the Struts <code>ActionFormBean</code>
-      definition object to be exposed.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>forward</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Specifies the name of the global Struts <code>ActionForward</code>
-      definition object to be exposed.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>mapping</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Specifies the matching path of the Struts <code>ActionMapping</code>
-      definition object to be exposed.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>write</name>
-    <summary>
-    Render the value of the specified bean property to the current
-    JspWriter.
-    </summary>
-    <tagclass>org.apache.struts.taglib.bean.WriteTag</tagclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-    <p>Retrieve the value of the specified bean property, and render it to the
-    current JspWriter as a String by the ways:</p>
-     <ul>
-     <li>If <code>format</code> attribute exists then value will be formatted on base of format
-     string from <code>format</code> attribute and default system locale.</li>
-     <li>If in resources exists format string for value data type (view <code>format</code>
-     attribute description) then value will be formatted on base of format string
-     from resources. Resources bundle and target locale can be specified with
-     <code>bundle</code> and <code>locale</code> attributes. If nothing specified then
-     default resource bundle and current user locale will be used.</li>
-     <li>If there is a PropertyEditor configured for the property value's class, the
-     <code>getAsText()</code> method will be called.</li>
-     <li>Otherwise, the usual <code>toString()</code> conversions will be applied.</li>
-     </ul>
-
-    <p>If a problem occurs while retrieving the specified bean property, a
-    request time exception will be thrown.</p>
-    </info>
-
-    <attribute>
-      <name>bundle</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The name of the application scope bean under which the
-      <code>MessageResources</code> object containing our messages
-      is stored.</p>
-      </info>
-      <default>Globals.MESSAGES_KEY</default>
-    </attribute>
-
-    <attribute>
-      <name>filter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>If this attribute is set to <code>true</code>, the rendered property
-      value will be filtered for characters that are sensitive in HTML, and any
-      such characters will be replaced by their entity equivalents.</p>
-      </info>
-      <default>true</default>
-    </attribute>
-
-    <attribute>
-      <name>format</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Specifies the format string to use to convert bean or property value
-      to the <code>String</code>. If nothing specified, then default format
-      string for value data type will be searched in message resources by
-      according key.</p>
-<!-- move to developers guide
-      <table>
-       <tr>
-           <td>Key to search format string</td>
-           <td>Data types</td>
-       </tr>
-       <tr>
-           <td>org.apache.struts.taglib.bean.format.int</td>
-           <td>java.lang.Byte, java.lang.Short, java.lang.Integer, java.lang.Long,
-               java.math.BigInteger</td>
-       </tr>
-       <tr>
-           <td>org.apache.struts.taglib.bean.format.float</td>
-           <td>java.lang.Float, java.lang.Double, java.math.BigDecimal</td>
-       </tr>
-       <tr>
-           <td>org.apache.struts.taglib.bean.format.sql.timestamp</td>
-           <td>java.sql.Timestamp</td>
-       </tr>
-       <tr>
-           <td>org.apache.struts.taglib.bean.format.sql.date</td>
-           <td>java.sql.Date</td>
-       </tr>
-       <tr>
-           <td>org.apache.struts.taglib.bean.format.sql.time</td>
-           <td>java.sql.Time</td>
-       </tr>
-       <tr>
-           <td>org.apache.struts.taglib.bean.format.date</td>
-           <td>java.util.Date</td>
-       </tr>
-      </table>
-      <p>Default format strings in resources can be written as - <br />
-        <pre>
-                org.apache.struts.taglib.bean.format.int=######
-                org.apache.struts.taglib.bean.format.float=######,####
-                org.apache.struts.taglib.bean.format.sql.timestamp=hh 'o''clock' a, zzzz
-                org.apache.struts.taglib.bean.format.sql.date=EEE, MMM d, ''yy
-                org.apache.struts.taglib.bean.format.sql.time=h:mm a
-                org.apache.struts.taglib.bean.format.date=hh 'o''clock' a, zzzz
-        </pre>
-        <br />values for resource file entries are standart Java format strings for
-        date, time and number values.</p>
--->
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>formatKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Specifies the key to search format string in application resources.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>ignore</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>If this attribute is set to <code>true</code>, and the bean specified
-      by the <code>name</code> and <code>scope</code> attributes does not
-      exist, simply return without writing anything.  If this attribute is
-      set to <code>false</code>, a runtime exception to be thrown,
-      consistent with the other tags in this tag library.</p>
-      </info>
-      <default>false</default>
-    </attribute>
-
-    <attribute>
-      <name>locale</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-        <p>The name of the session scope bean under which our currently
-        selected <code>Locale</code> object is stored.</p>
-      </info>
-      <default>Globals.LOCALE_KEY</default>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Specifies the attribute name of the bean whose property is accessed
-      to retrieve the value specified by <code>property</code> (if
-      specified).  If <code>property</code> is not specified, the value of
-      this bean itself will be rendered.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Specifies the name of the property to be accessed on the bean
-      specified by <code>name</code>.  This value may be a simple, indexed,
-      or nested property reference expression.  If not specified, the bean
-      identified by <code>name</code> will itself be rendered.  If the
-      specified property returns null, no output will be rendered.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Specifies the variable scope searched to retrieve the bean specified
-      by <code>name</code>.  If not specified, the default rules applied by
-      <code>PageContext.findAttribute()</code> are applied.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-</taglib>
-
-</body>
-
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/struts-html.xml b/build-legacy/core/xdocs/userGuide/struts-html.xml
deleted file mode 100644
index 9daf1ba..0000000
--- a/build-legacy/core/xdocs/userGuide/struts-html.xml
+++ /dev/null
@@ -1,6983 +0,0 @@
-<?xml version="1.0"?>
-<document url="struts-html.html" authors="false">
-
-<properties>
-  <title>The Struts Framework Project - HTML Tags</title>
-</properties>
-
-<body>
-
-
-<taglib>
-
-  <tlibversion>1.0</tlibversion>
-  <jspversion>1.1</jspversion>
-  <shortname>html</shortname>
-  <display-name>Page Construction Tags</display-name>
-  <uri>http://jakarta.apache.org/struts/tags-html</uri>
-  <info>
-  <p>
-        This taglib contains tags used to create struts
-        input forms, as well as other tags generally useful
-                in the creation of HTML-based user interfaces.
-  </p>
-
-  <p>Many of the tags in this tag library will throw a
-  <code>JspException</code> at runtime when they are utilized incorrectly
-  (such as when you specify an invalid combination of tag attributes).  JSP
-  allows you to declare an "error page" in the <code>&lt;%@ page %&gt;</code>
-  directive.  If you wish to process the actual exception that caused the
-  problem, it is passed to the error page as a request attribute under key
-  <code>org.apache.struts.action.EXCEPTION</code>.</p>
-
-  </info>
-
-        <tag>
-          <name>base</name>
-          <summary>Render an HTML &lt;base&gt; Element</summary>
-          <tagclass>org.apache.struts.taglib.html.BaseTag</tagclass>
-          <bodycontent>empty</bodycontent>
-          <info>
-          <p>Renders an HTML <code>&lt;base&gt;</code> element with an
-          <code>href</code> attribute pointing to the absolute location of
-          the enclosing JSP page.  This tag is valid only when nested inside
-          an HTML <code>&lt;head&gt;</code> element.</p>
-
-          <p>This tag is useful because it allows you to use relative URL
-          references in the page that are calculated based on the URL of the
-          page itself, rather than the URL to which the most recent submit
-          took place (which is where the browser would normally resolve
-          relative references against).</p>
-          </info>
-
-          <attribute>
-            <name>target</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-              <p>The window target for this base reference.</p>
-            </info>
-          </attribute>
-          <attribute>
-            <name>server</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-              <p>The server name to use instead of request.getServerName().</p>
-            </info>
-          </attribute>
-
-        </tag>
-
-    <tag>
-
-        <name>button</name>
-        <summary>
-            Render A Button Input Field
-        </summary>
-        <tagclass>org.apache.struts.taglib.html.ButtonTag</tagclass>
-        <info>
-            <p>
-                Renders an HTML &lt;input&gt; element of type
-                <code>button</code>, populated from the specified value or the
-                content of this tag body. This tag is only valid when nested
-                inside a form tag body.
-            </p>
-            <p>
-             If a graphical button is needed (a button with an image), then the
-             <a href="#image"><code>image</code></a> tag is more appropriate.
-            </p>
-        </info>
-
-        <attribute>
-            <name>accesskey</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The keyboard character used to move focus immediately to this
-                element.
-            </info>
-        </attribute>
-
-        <attribute>
-                <name>alt</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The alternate text for this element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>altKey</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The message resources key of the alternate text for this
-                element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-          <name>disabled</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-          <info>
-          Set to <code>true</code> if this input field should be
-          disabled.
-          </info>
-        </attribute>
-
-        <attribute>
-            <name>indexed</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Valid only inside of logic:iterate tag.  If <code>true</code>
-                then name of the html tag will be rendered as
-                "propertyName[34]". Number in brackets will be generated for
-                every iteration and taken from ancestor logic:iterate tag.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onblur</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onchange</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus and its value has changed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse click.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>ondblclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse double click.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onfocus</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives input
-                focus.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>onkeydown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeypress</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed and released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeyup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousedown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the mouse
-                pointer and a mouse button is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousemove</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and the pointer is moved.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseout</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was under the
-                mouse pointer but the pointer was moved outside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseover</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was not under
-                the mouse pointer but the pointer is moved inside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and a mouse button is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>property</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Name of the request parameter that will be included with this
-                submission, set to the specified value.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS styles to be applied to this HTML element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>tabindex</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The tab order (ascending positive integers) for this element.
-            </info>
-        </attribute>
-
-                <attribute>
-                  <name>title</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The advisory title for this element.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>titleKey</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The message resources key for the advisory title
-                  for this element.</p>
-                  </info>
-                </attribute>
-
-        <attribute>
-            <name>value</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Value of the label to be placed on this button. This value will
-                also be submitted as the value of the specified request parameter.
-                [Body of this tag (if any), or "Click"]
-            </info>
-        </attribute>
-    </tag>
-
-    <tag>
-
-        <name>cancel</name>
-        <summary>
-            Render a Cancel Button
-        </summary>
-        <tagclass>org.apache.struts.taglib.html.CancelTag</tagclass>
-        <info>
-            <p>
-                Renders an HTML &lt;input&gt; element of type submit. This tag is only
-                valid when nested inside a form tag body. Pressing of this submit
-                button causes the action servlet to bypass calling the associated
-                form bean validate() method. The action is called normally.
-            </p>
-        </info>
-
-        <attribute>
-            <name>accesskey</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The keyboard character used to move focus immediately to this
-                element.
-            </info>
-        </attribute>
-
-        <attribute>
-                <name>alt</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The alternate text for this element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>altKey</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The message resources key of the alternate text for this
-                element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-          <name>disabled</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-          <info>
-          Set to <code>true</code> if this input field should be
-          disabled.
-          </info>
-        </attribute>
-
-        <attribute>
-            <name>onblur</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onchange</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus and its value has changed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse click.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>ondblclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse double click.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onfocus</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives input
-                focus.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>onkeydown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeypress</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed and released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeyup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousedown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the mouse
-                pointer and a mouse button is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousemove</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and the pointer is moved.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseout</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was under the
-                mouse pointer but the pointer was moved outside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseover</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was not under
-                the mouse pointer but the pointer is moved inside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and a mouse button is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>property</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Name of the request parameter that will be included with this
-                submission, set to the specified value.
-                <strong>WARNING</strong> - If you set this attribute to a
-                value other than the default, this will <em>NOT</em> be
-                recognized as the cancel key by the Struts controller servlet
-                or the <code>Action.isCancelled()</code> method.  You will
-                need to do your own cancel detection.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS styles to be applied to this HTML element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>tabindex</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The tab order (ascending positive integers) for this element.
-            </info>
-        </attribute>
-
-                <attribute>
-                  <name>title</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The advisory title for this element.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>titleKey</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The message resources key for the advisory title
-                  for this element.</p>
-                  </info>
-                </attribute>
-
-        <attribute>
-            <name>value</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Value of the label to be placed on this button. This value will
-                also be submitted as the value of the specified request parameter.
-                [Body of this tag (if any), or "Cancel"]
-            </info>
-        </attribute>
-    </tag>
-
-
-    <tag>
-
-        <name>checkbox</name>
-        <summary>
-            Render A Checkbox Input Field
-        </summary>
-        <tagclass>org.apache.struts.taglib.html.CheckboxTag</tagclass>
-        <info>
-            <p>Renders an HTML &lt;input&gt; element of type
-                        <code>checkbox</code>, populated from the specified
-                        value or the specified property of the bean associated
-                        with our current form. This tag is only valid when
-                        nested inside a form tag body.</p>
-
-            <p><strong>NOTE</strong>:  The underlying property value
-            associated with this field should be of type <code>boolean</code>,
-            and any <code>value</code> you specify should correspond to one
-            of the Strings that indicate a true value ("true", "yes", or
-            "on").  If you wish to utilize a set of related String values,
-            consider using the <code>multibox</code> tag.</p>
-
-                        <p><strong>WARNING</strong>:  In order to correctly
-                        recognize unchecked checkboxes, the
-                        <code>ActionForm</code> bean associated with this form
-                        must include a statement setting the corresponding
-                        boolean property to <code>false</code> in the
-                        <code>reset()</code> method.</p>
-        </info>
-
-        <attribute>
-            <name>accesskey</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The keyboard character used to move focus immediately to this
-                element.
-            </info>
-        </attribute>
-
-        <attribute>
-                <name>alt</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The alternate text for this element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>altKey</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The message resources key of the alternate text for this
-                element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-          <name>disabled</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-          <info>
-          Set to <code>true</code> if this input field should be
-          disabled.
-          </info>
-        </attribute>
-
-        <attribute>
-            <name>indexed</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Valid only inside of logic:iterate tag.
-                If <code>true</code> then name of the html tag will be rendered as
-                "id[34].propertyName". Number in brackets will be generated
-                for every iteration and taken from ancestor logic:iterate tag.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>name</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The attribute name of the bean whose properties are consulted when
-                rendering the current value of this input field. If not specified,
-                the bean associated with the form tag we are nested within is utilized.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onblur</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onchange</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus and its value has changed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse click.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>ondblclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse double click.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onfocus</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives input
-                focus.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>onkeydown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeypress</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed and released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeyup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousedown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the mouse
-                pointer and a mouse button is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousemove</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and the pointer is moved.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseout</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was under the
-                mouse pointer but the pointer was moved outside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseover</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was not under
-                the mouse pointer but the pointer is moved inside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and a mouse button is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>property</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Name of the request parameter that will be included with this
-                submission, set to the specified value.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS styles to be applied to this HTML element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>tabindex</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The tab order (ascending positive integers) for this element.
-            </info>
-        </attribute>
-
-                <attribute>
-                  <name>title</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The advisory title for this element.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>titleKey</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The message resources key for the advisory title
-                  for this element.</p>
-                  </info>
-                </attribute>
-
-        <attribute>
-            <name>value</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                        The value to be transmitted if this checkbox is
-                        checked when the form is submitted.  If not specified,
-                        the value "on" will be returned.
-            </info>
-        </attribute>
-    </tag>
-
-        <tag>
-                <name>errors</name>
-                <summary>
-                Conditionally display a set of accumulated error messages.
-                </summary>
-                <tagclass>org.apache.struts.taglib.html.ErrorsTag</tagclass>
-                <bodycontent>empty</bodycontent>
-                <info>
-                <p>Displays a set of error messages prepared by a business
-                logic component and stored as an <code>ActionErrors</code>
-                object, a String, or a String array in request scope.  If
-                such a bean is not found, nothing will be rendered.</p>
-
-                <p>In order to use this tag successfully, you must have
-                defined an application scope <code>MessageResources</code>
-                bean under the default attribute name, with optional
-                definitions of the following message keys:</p>
-                <ul>
-                <li><strong>errors.header</strong> - Text that will be rendered
-                before the error messages list.  Typically, this message text
-                will end with <code>&lt;ul&gt;</code> to start the
-                error messages list.</li>
-                <li><strong>errors.footer</strong> - Text that will be rendered
-                after the error messages list.  Typically, this message text
-                will begin with <code>&lt;/ul&gt;</code> to end the error
-                messages list.</li>
-                <li><strong>errors.prefix</strong> - Text that will be rendered
-                before each individual error in the list.</li>
-                <li><strong>errors.suffix</strong> - Text that will be rendered
-                after each individual error in the list.</li>
-                </ul>
-                </info>
-
-                <attribute>
-                    <name>bundle</name>
-                    <required>false</required>
-                    <rtexprvalue>true</rtexprvalue>
-                    <info>
-                    The servlet context attribute key for the MessageResources
-                    instance to use.  If not specified, defaults to the
-                    application resources configured for our action servlet.
-                    </info>
-                </attribute>
-
-                <attribute>
-                    <name>locale</name>
-                    <required>false</required>
-                    <rtexprvalue>true</rtexprvalue>
-                    <info>
-                    The session attribute key for the Locale used to select
-                    messages to be displayed.  If not specified, defaults to
-                    the Struts standard value.
-                    </info>
-                </attribute>
-
-                <attribute>
-                  <name>name</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  Name of the request scope bean under which our error messages
-                  have been stored.  If not present, the name specified by the
-                  <code>Globals.ERROR_KEY</code> constant string will be used.
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>property</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  Name of the property for which error messages should be
-                  displayed.  If not specified, all error messages (regardless
-                  of property) are displayed.
-                  </info>
-                </attribute>
-
-        </tag>
-
-    <tag>
-
-        <name>file</name>
-        <summary>
-            Render A File Select Input Field
-        </summary>
-        <tagclass>org.apache.struts.taglib.html.FileTag</tagclass>
-        <info>
-            <p>
-                Renders an HTML &lt;input&gt; element of type file, defaulting to
-                the specified value or the specified property of the bean
-                associated with our current form. This tag is only valid when
-                nested inside a form tag body.
-            </p>
-            <p>
-                As with the corresponding HTML &lt;input&gt; element, the
-                enclosing form element must specify "POST" for the <code>method</code>
-                attribute, and "multipart/form-data" for the <code>enctype</code>
-                attribute. For example:
-            </p>
-    <pre>
-    &lt;html:form method="POST" enctype="multipart/form-data"&gt;
-        &lt;html:file property="theFile" /&gt;
-    &lt;/html:form&gt;</pre>
-        </info>
-
-        <attribute>
-            <name>accesskey</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The keyboard character used to move focus immediately to this
-                element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>accept</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Comma-delimited set of content types that the server you submit to
-                knows how to process. This list can be used by the client browser
-                to limit the set of file options that is made available for selection.
-                If not specified, no content type list will be sent.
-            </info>
-        </attribute>
-
-        <attribute>
-                <name>alt</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The alternate text for this element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>altKey</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The message resources key of the alternate text for this
-                element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-          <name>disabled</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-          <info>
-          Set to <code>true</code> if this input field should be
-          disabled.
-          </info>
-        </attribute>
-
-        <attribute>
-            <name>indexed</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Valid only inside of logic:iterate tag.
-                If <code>true</code> then name of the html tag will be rendered as
-                "id[34].propertyName". Number in brackets will be generated
-                for every iteration and taken from ancestor logic:iterate tag.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>maxlength</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Maximum number of input characters to accept.  This is ignored
-                by most browsers. [No limit]
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>name</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The attribute name of the bean whose properties are consulted when
-                rendering the current value of this input field. If not specified,
-                the bean associated with the form tag we are nested within is utilized.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onblur</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onchange</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus and its value has changed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse click.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>ondblclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse double click.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onfocus</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives input
-                focus.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>onkeydown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeypress</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed and released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeyup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousedown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the mouse
-                pointer and a mouse button is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousemove</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and the pointer is moved.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseout</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was under the
-                mouse pointer but the pointer was moved outside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseover</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was not under
-                the mouse pointer but the pointer is moved inside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and a mouse button is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>property</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Name of the request parameter that will be included with this
-                submission, set to the specified value.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>size</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Size of the file selection box to be displayed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS styles to be applied to this HTML element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>tabindex</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The tab order (ascending positive integers) for this element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>title</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-            <p>The advisory title for this element.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>titleKey</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-            <p>The message resources key for the advisory title
-            for this element.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>value</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-            <p>
-                <strong>NOTE</strong>: When setting this to some value, whether
-                intentional or as the result (for example) of validation errors 
-                forcing the user back to the original jsp, this value is ignored 
-                by most browsers (for security reasons).
-                This means that your users will have to re-select any previously
-                selected files when submitting the form.  Opera web browser will
-                prompt the user so they have a chance to abort the submit.
-            </p>
-                Value to which this field should be initialized. [Use the
-                corresponding bean property value or body content (if any) if 
-                property is not specified]
-            </info>
-        </attribute>
-    </tag>
-
-    <tag>
-
-        <name>form</name>
-        <summary>
-            Define An Input Form
-        </summary>
-        <tagclass>org.apache.struts.taglib.html.FormTag</tagclass>
-        <bodycontent>JSP</bodycontent>
-        <info>
-            <p>
-                Renders an HTML &lt;form&gt; element whose contents are described
-                by the body content of this tag. The form implicitly interacts
-                with the specified request scope or session scope bean to populate
-                the input fields with the current property values from the bean.
-            </p>
-            <p>
-                The form bean is located, and created if necessary, based on the 
-                form bean specification for the associated <code>ActionMapping</code>.
-            </p>
-        </info>
-
-        <attribute>
-            <name>action</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                        <p>The URL to which this form will be submitted.  This
-                        value is also used to select the ActionMapping we are
-                        assumed to be processing, from which we can identify
-                        the appropriate form bean and scope.</p>
-
-                        <p>If you are using extension mapping for selecting the
-                        controller servlet, this value should be equal to the
-                        <code>path</code> attribute of the corresponding
-                        <code>&lt;action&gt;</code> element, optionally
-                        followed by the correct extension suffix.</p>
-
-                        <p>If you are using path mapping to select the
-                        controller servlet, this value should be exactly equal
-                        to the <code>path</code> attribute of the corresponding
-                        <code>&lt;action&gt;</code> element.</p>
-                        </info>
-        </attribute>
-
-        <attribute>
-            <name>enctype</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The content encoding to be used to submit this form, if the method
-                is POST. This must be set to "multipart/form-data" if you are using
-                the file tag to enable file upload. If not specified, the browser
-                default (normally "application/x-www-form-urlencoded") is used.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>focus</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The field name (among the fields on this form) to which initial
-                focus will be assigned with a JavaScript function. If not specified,
-                no special JavaScript for this purpose will be rendered.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>focusIndex</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                If the focus field is a field array, such as a radio button group, you can 
-                specify the index in the array to receive focus.
-            </info>
-            <since>Struts 1.1</since>
-        </attribute>
-
-        <attribute>
-            <name>method</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The HTTP method that will be used to submit this request
-                (GET, POST). [POST]
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onreset</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed if the form is reset.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onsubmit</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed if the form is submitted.
-            </info>
-        </attribute>
-
-		<attribute>
-            <name>scriptLanguage</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The form's focus &lt;script&gt; element will not contain a language attribute
-                when this is set to false.  The default is true but this property is ignored
-                in XHMTL mode.
-            </info>
-            <since>Struts 1.2</since>
-        </attribute>
-        
-        <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS styles to be applied to this HTML element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>target</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Window target to which this form is submitted, such as
-                for use in framed presentations.
-            </info>
-        </attribute>
-
-    </tag>
-
-    <tag>
-
-        <name>frame</name>
-        <summary>Render an HTML frame element</summary>
-        <tagclass>org.apache.struts.taglib.html.FrameTag</tagclass>
-        <info>
-
-            <p>Renders an HTML <code>&lt;frame&gt;</code> element
-            with processing for the <code>src</code> attribute that is
-            identical to that performed by the <code>&lt;html:link&gt;</code>
-            tag for the <code>href</code> attribute.  URL rewriting will be
-            applied automatically, to maintain session state in the
-            absence of cookies.</p>
-
-            <p>The base URL for this frame is calculated based on
-            which of the following attributes you specify (you must
-            specify exactly one of them):</p>
-            <ul>
-            <li><em>forward</em> - Use the value of this attribute as the
-                name of a global <code>ActionForward</code> to be looked
-                up, and use the application-relative or context-relative
-                URI found there.</li>
-            <li><em>href</em> - Use the value of this attribute unchanged.
-                </li>
-            <li><em>page</em> - Use the value of this attribute as a
-                application-relative URI, and generate a server-relative
-                URI by including the context path and application
-                prefix.</li>
-            <li><em>action</em> - Use the value of this attribute as the
-                logical name of a global Action that contains the actual 
-                content-relative URI of the destination of this transfer.</li>
-            </ul>
-
-            <p>Normally, the hyperlink you specify with one of the
-            attributes described in the previous paragraph will be left
-            unchanged (other than URL rewriting if necessary).  However,
-            there are two ways you can append one or more dynamically
-            defined query parameters to the hyperlink -- specify a single
-            parameter with the <code>paramId</code> attribute (and its
-            associated attributes to select the value), or specify the
-            <code>name</code> (and optional <code>property</code>)
-            attributes to select a <code>java.util.Map</code> bean that
-            contains one or more parameter ids and corresponding values.
-            </p>
-
-            <p>To specify a single parameter, use the <code>paramId</code>
-            attribute to define the name of the request parameter to be
-            submitted.  To specify the corresponding value, use one of the
-            following approaches:</p>
-            <ul>
-            <li><em>Specify only the <code>paramName</code> attribute</em>
-                - The named JSP bean (optionally scoped by the value of the
-                <code>paramScope</code> attribute) must identify a value
-                that can be converted to a String.</li>
-            <li><em>Specify both the <code>paramName</code> and
-                <code>paramProperty</code> attributes</em> - The specified
-                property getter method will be called on the JSP bean
-                identified by the <code>paramName</code> (and optional
-                <code>paramScope</code>) attributes, in order to select
-                a value that can be converted to a String.</li>
-            </ul>
-
-            <p>If you prefer to specify a <code>java.util.Map</code> that
-            contains all of the request parameters to be added to the
-            hyperlink, use one of the following techniques:</p>
-            <ul>
-            <li><em>Specify only the <code>name</code> attribute</em> -
-                The named JSP bean (optionally scoped by the value of
-                the <code>scope</code> attribute) must identify a
-                <code>java.util.Map</code> containing the parameters.</li>
-            <li><em>Specify both <code>name</code> and
-                <code>property</code> attributes</em> - The specified
-                property getter method will be called on the bean
-                identified by the <code>name</code> (and optional
-                <code>scope</code>) attributes, in order to return the
-                <code>java.util.Map</code> containing the parameters.</li>
-            </ul>
-
-            <p>As the <code>Map</code> is processed, the keys are assumed
-            to be the names of query parameters to be appended to the
-            hyperlink.  The value associated with each key must be either
-            a String or a String array representing the parameter value(s),
-            or an object whose toString() method will be called.
-            If a String array is specified, more than one value for the
-            same query parameter name will be created.</p>
-
-            <p>Additionally, you can request that the current transaction
-            control token, if any, be included in the generated hyperlink
-            by setting the <code>transaction</code> attribute to
-            <code>true</code>.
-            You can also request that an anchor ("#xxx") be added to the
-            end of the URL that is created by any of the above mechanisms,
-            by using the <code>anchor</code> attribute.</p>
-
-         </info>
- 
-         <attribute>
-           <name>action</name>
-           <required>false</required>
-           <rtexprvalue>true</rtexprvalue>
-           <info>
-               <p>Logical name of a global <code>Action</code> that
-               contains the actual content-relative URI of the destination
-               of this transfer.  This hyperlink may be dynamically
-               modified by the inclusion of query parameters, as described
-               in the tag description.  You <strong>must</strong> specify
-               exactly one of the <code>action</code> attribute, the
-               <code>forward</code> attribute, the
-               <code>href</code> attribute,
-               or the <code>page</code> attribute.</p>
-           </info>
-       </attribute>
-
-       <attribute>
-            <name>anchor</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>Optional anchor tag ("#xxx") to be added to the generated
-                hyperlink.  Specify this value <strong>without</strong> any
-                "#" character.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>forward</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>Logical name of a global <code>ActionForward</code> that
-                contains the actual content-relative URI of the destination
-                of this transfer.  This hyperlink may be dynamically
-                modified by the inclusion of query parameters, as described
-                in the tag description.  You <strong>must</strong> specify
-                exactly one of the <code>action</code> attribute, the
-                <code>forward</code> attribute, the
-                <code>href</code> attribute,
-                or the <code>page</code> attribute.</p>
-             </info>
-        </attribute>
-
-        <attribute>
-            <name>frameborder</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>Should a frame border be generated around this frame (1)
-                or not (0)?</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>frameName</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>Value for the <code>name</code> attribute of the rendered
-                <code>&lt;frame&gt;</code> element.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>href</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>The URL to which this hyperlink will transfer control
-                 if activated.  This hyperlink may be dynamically modified
-                 by the inclusion of query parameters, as described in the
-                 tag description.  You <strong>must</strong> specify
-                 exactly one of the <code>action</code> attribute, the
-                 <code>forward</code> attribute, the
-                 <code>href</code> attribute,
-                 or the <code>page</code> attribute.</p>
-             </info>
-        </attribute>
-
-        <attribute>
-            <name>longdesc</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>URI of a long description of the frame.  This description
-                should supplement the short description provided by the
-                <code>title</code> attribute, and may be particularly useful
-                for non-visual user agents.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>marginheight</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>The amount of space (in pixels) to be left between the
-                frame's contents and its top and bottom margins.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>marginwidth</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>The amount of space (in pixels) to be left between the
-                frame's contents and its left and right margins.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>name</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>The name of a JSP bean that contains a <code>Map</code>
-                representing the query parameters (if <code>property</code>
-                is not specified), or a JSP bean whose property getter is
-                called to return a <code>Map</code> (if <code>property</code>
-                is specified).</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>noresize</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>Should users be disallowed from resizing the frame?
-                (true, false).</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>page</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>The module-relative path (beginning with a "/"
-                character) to which this hyperlink will transfer control
-                 if activated.  This hyperlink may be dynamically modified
-                 by the inclusion of query parameters, as described in the
-                 tag description.  You <strong>must</strong> specify exactly
-                 one of the <code>action</code> attribute, the
-                 <code>forward</code> attribute, the
-                 <code>href</code> attribute,
-                 or the <code>page</code> attribute.</p>
-                 </info>
-            </attribute>
-
-        <attribute>
-            <name>paramId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>The name of the request parameter that will be dynamically
-                added to the generated hyperlink.  The corresponding value is
-                defined by the <code>paramName</code> and (optional)
-                <code>paramProperty</code> attributes, optionally scoped by
-                the <code>paramScope</code> attribute</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>paramName</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>The name of a JSP bean that is a String containing the
-                value for the request parameter named by <code>paramId</code>
-                (if <code>paramProperty</code> is not specified), or a JSP
-                bean whose property getter is called to return a String
-                (if <code>paramProperty</code> is specified).  The JSP bean
-                is constrained to the bean scope specified by the
-                <code>paramScope</code> property, if it is specified.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>paramProperty</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>The name of a property of the bean specified by the
-                <code>paramName</code> attribute, whose return value must
-                be a String containing the value of the request parameter
-                (named by the <code>paramId</code> attribute) that will be
-                dynamically added to this hyperlink.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>paramScope</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>The scope within which to search for the bean specified
-                by the <code>paramName</code> attribute.  If not specified,
-                all scopes are searched.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>property</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>The name of a property of the bean specified by the
-                <code>name</code> attribute, whose return value must be
-                a <code>java.util.Map</code> containing the query parameters
-                to be added to the hyperlink.  You <strong>must</strong>
-                specify the <code>name</code> attribute if you specify
-                this attribute.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>scope</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>The scope within which to search for the bean specified
-                by the <code>name</code> attribute.  If not specified, all
-                scopes are searched.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>scrolling</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>Should scroll bars be created unconditionally (yes),
-                never (no), or only when needed (auto)?</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>CSS styles to be applied to this element.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>title</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>The advisory title for this element.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>titleKey</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>The message resources key for the advisory title
-                for this element.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>transaction</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>If set to <code>true</code>, any current transaction
-                control token will be included in the generated hyperlink,
-                so that it will pass an <code>isTokenValid()</code> test
-                in the receiving Action.</p>
-            </info>
-        </attribute>
-
-    </tag>
-
-
-    <tag>
-
-        <name>hidden</name>
-        <summary>
-            Render A Hidden Field
-        </summary>
-        <tagclass>org.apache.struts.taglib.html.HiddenTag</tagclass>
-        <bodycontent>empty</bodycontent>
-        <info>
-            <p>
-                Renders an HTML &lt;input&gt; element of type hidden, populated
-                from the specified value or the specified property of the bean
-                associated with our current form. This tag is only valid when
-                nested inside a form tag body.
-            </p>
-        </info>
-
-        <attribute>
-            <name>accesskey</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The keyboard character used to move focus immediately to this
-                element.
-            </info>
-        </attribute>
-
-        <attribute>
-                <name>alt</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The alternate text for this element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>altKey</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The message resources key of the alternate text for this
-                element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-            <name>indexed</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Valid only inside of logic:iterate tag.
-                If <code>true</code> then name of the html tag will be rendered as
-                "id[34].propertyName". Number in brackets will be generated
-                for every iteration and taken from ancestor logic:iterate tag.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>name</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The attribute name of the bean whose properties are consulted
-                when rendering the current value of this input field. If not
-                specified, the bean associated with the form tag we are nested
-                within is utilized.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onblur</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onchange</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus and its value has changed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse click.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>ondblclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse double click.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onfocus</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives input
-                focus.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeydown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeypress</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed and released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeyup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousedown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the mouse
-                pointer and a mouse button is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousemove</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and the pointer is moved.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseout</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was under the
-                mouse pointer but the pointer was moved outside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseover</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was not under
-                the mouse pointer but the pointer is moved inside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and a mouse button is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>property</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Name of this input field, and the name of the corresponding bean
-                property if value is not specified. The corresponding bean property
-                (if any) must be of type String.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS styles to be applied to this HTML element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>title</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-            <p>The advisory title for this element.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>titleKey</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-            <p>The message resources key for the advisory title
-            for this element.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>value</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Value to which this field should be initialized. [Use the
-                corresponding bean property value]
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>write</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Should the value of this field also be rendered to the
-                response page to make it visible, in addition to creating
-                an HTML type="hidden" element?  By default, only the
-                hidden element is created.
-            </info>
-        </attribute>
-
-    </tag>
-
-
-        <tag>
-
-          <name>html</name>
-          <summary>Render an HTML &lt;html&gt; Element</summary>
-          <tagclass>org.apache.struts.taglib.html.HtmlTag</tagclass>
-          <bodycontent>JSP</bodycontent>
-          <info>
-          <p>Renders an HTML <code>&lt;html&gt;</code> element with
-          language attributes extracted from the user's current Locale
-          object, if there is one.</p>
-          </info>
-
-	  <attribute>
-            <name>lang</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                 Renders a lang attribute with the locale stored in the user's session.  If not 
-                 found in the session, the language from the <code>Accept-Language</code>
-                 HTTP header is used.  If still not found, the default language for the server 
-                 is used.
-            </info>
-			<since>Struts 1.2</since>
-        </attribute>
-
-          <attribute>
-            <name>locale</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-              <p>Set to <code>true</code> in order to store a Locale in the session based on
-              the current request's <code>Accept-Language</code> header (if
-              any) if none has currently been set.  This attribute will create a session
-              if one does not already exist.  The lang attribute is rendered with the
-              appropriate language code.</p>
-            </info>
-            <deprecated>
-                Creating a session is undesirable for apps that don't support them.  Use the lang
-                attribute to achieve the same functionality without creating a session.
-            </deprecated>
-          </attribute>
-
-          <attribute>
-            <name>xhtml</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-              <p>Set to <code>true</code> in order to render 
-              <code>xml:lang</code> and <code>xmlns</code> attributes 
-              on the generated <code>html</code> element.  This also 
-              causes all other html tags to render as XHTML (the 
-              &lt;html:xhtml/&gt; tag has a similar purpose).
-              </p>
-            </info>
-            <since>Struts 1.1</since>
-          </attribute>
-
-        </tag>
-
-        <tag>
-                <name>image</name>
-                <summary>
-                Render an input tag of type "image"
-                </summary>
-                <tagclass>org.apache.struts.taglib.html.ImageTag</tagclass>
-                <info>
-
-                <p>Renders an HTML <code>&lt;input&gt;</code> tag of type
-                "image".  The base URL for this image is calculated directly
-                based on the value specified in the <code>src</code> or
-                <code>page</code> attributes, or indirectly by looking up a
-                message resource string based on the <code>srcKey</code> or
-                <code>pageKey</code> attributes.  You <strong>must</strong>
-                specify exactly one of these attributes.</p>
-
-                <p>If you would like to obtain the coordinates of the mouse
-                click that submitted this request, see the information below
-                on the <code>property</code> attribute.</p>
-                
-                <p>This tag is only valid when nested inside a form tag body.</p>
-
-                </info>
-
-        <attribute>
-                <name>accesskey</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The keyboard character used to move focus immediately
-                to this element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>align</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The alignment option for this image.</p>
-                </info>
-                <deprecated>
-                    The align attribute is deprecated in HTML 4.x. The suggested alternative is to use CSS.
-                    Please see http://www.w3.org/TR/REC-html40/struct/objects.html#h-13.7.4 for more details.
-                </deprecated>
-        </attribute>
-
-        <attribute>
-                <name>alt</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The alternate text for this image.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>altKey</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The message resources key of the alternate text for this
-                image.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>border</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The width (in pixels) of the border around this image.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>bundle</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The servlet context attribute key for the MessageResources
-                instance to use.  If not specified, defaults to the
-                application resources configured for our action servlet.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-          <name>disabled</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-          <info>
-          Set to <code>true</code> if this input field should be
-          disabled.
-          </info>
-        </attribute>
-
-        <attribute>
-            <name>indexed</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Valid only inside of logic:iterate tag.  If <code>true</code>
-                then name of the html tag will be rendered as
-                "propertyName[34]". Number in brackets will be generated for
-                every iteration and taken from ancestor logic:iterate tag.
-            </info>
-        </attribute>
-
-        <attribute>
-                <name>locale</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The session attribute key for the Locale used to select
-                internationalized messages.  If not specified, defaults to the
-                Struts standard value.</p>
-                </info>
-        </attribute>
-
-          <attribute>
-            <name>onblur</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus.
-            </info>
-          </attribute>
-
-          <attribute>
-            <name>onchange</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus and its value has changed.
-            </info>
-          </attribute>
-
-          <attribute>
-            <name>onclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse click.
-            </info>
-          </attribute>
-
-          <attribute>
-            <name>ondblclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse double click.
-            </info>
-          </attribute>
-
-          <attribute>
-            <name>onfocus</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives input
-                focus.
-            </info>
-          </attribute>
-
-          <attribute>
-            <name>onkeydown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus
-                and a key is depressed.
-            </info>
-          </attribute>
-
-          <attribute>
-            <name>onkeypress</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus
-                and a key is depressed and released.
-            </info>
-          </attribute>
-
-          <attribute>
-            <name>onkeyup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus
-                and a key is released.
-            </info>
-          </attribute>
-
-          <attribute>
-            <name>onmousedown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under
-                the mouse pointer and a mouse button is depressed.
-            </info>
-          </attribute>
-
-          <attribute>
-            <name>onmousemove</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and the pointer is moved.
-            </info>
-          </attribute>
-
-          <attribute>
-            <name>onmouseout</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was under
-                the mouse pointer but the pointer was moved outside the
-                element.
-            </info>
-          </attribute>
-
-          <attribute>
-            <name>onmouseover</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was not
-                under the mouse pointer but the pointer is moved inside the
-                element.
-            </info>
-          </attribute>
-
-          <attribute>
-            <name>onmouseup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and a mouse button is released.
-            </info>
-          </attribute>
-
-        <attribute>
-                <name>page</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The module-relative path of the image for this
-                input tag.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>pageKey</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The key of the message resources string specifying the
-                module-relative path of the image for this input tag.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>property</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The property name of this image tag.  The parameter names
-                for the request will appear as "property.x" and "property.y",
-                the x and y representing the coordinates of the mouse click
-                for the image.  A way of retrieving these values through a
-                form bean is to define getX(), getY(), setX(), and setY()
-                methods, and specify your property as a blank string
-                (property="").</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>src</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The source URL of the image for this input tag.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>srcKey</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The key of the message resources string specifying the
-                source URL of the image for this input tag.</p>
-                </info>
-        </attribute>
-
-          <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS styles to be applied to this HTML element.
-            </info>
-          </attribute>
-
-          <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-          </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-          <attribute>
-            <name>tabindex</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The tab order (ascending positive integers) for this element.
-            </info>
-          </attribute>
-
-                <attribute>
-                  <name>title</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The advisory title for this element.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>titleKey</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The message resources key for the advisory title
-                  for this element.</p>
-                  </info>
-                </attribute>
-
-          <attribute>
-            <name>value</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-              <p>The value that will be submitted if this image button
-              is pressed.</p>
-            </info>
-          </attribute>
-
-        </tag>
-
-
-        <tag>
-
-                <name>img</name>
-                <summary>Render an HTML img tag</summary>
-                <tagclass>org.apache.struts.taglib.html.ImgTag</tagclass>
-        <bodycontent>empty</bodycontent>
-                <info>
-
-                <p>Renders an HTML <code>&lt;img&gt;</code> element with
-                the image at the specified URL.  Like the link tag, URL
-                rewriting will be applied automatically to the value
-                specified in <code>src</code> or <code>page</code>,
-                to maintain session state
-                in the absence of cookies.  This will allow dynamic
-                generation of an image where the content displayed for this
-                image will be taken from the attributes of this tag.</p>
-
-                <p>The base URL for this image is calculated directly based on
-                the value specified in <code>src</code> or <code>page</code>,
-                or indirectly by looking up a message resource string based on
-                the <code>srcKey</code> or <code>pageKey</code> attributes.
-                You <strong>must</strong> specify exactly one of these
-                attributes.</p>
-
-                <p>Normally, the <code>src</code> or <code>page</code> that
-                you specify will be left
-                unchanged (other than URL rewriting if necessary).  However,
-                there are two ways you can append one or more dynamically
-                defined query parameters to the <code>src</code> URL --
-                specify a single parameter with the <code>paramId</code>
-                attribute (at its associated attributes to select the value),
-                or specify the <code>name</code> (and optional
-                <code>property</code>) attributes to select a
-                <code>java.util.Map</code> bean that contains one or more
-                parameter ids and corresponding values.</p>
-
-                <p>To specify a single parameter, use the <code>paramId</code>
-                attribute to define the name of the request parameter to be
-                submitted.  To specify the corresponding value, use one of the
-                following approaches:</p>
-                <ul>
-                <li><em>Specify only the <code>paramName</code> attribute</em>
-                    - The named JSP bean (optionally scoped by the value of the
-                    <code>paramScope</code> attribute) must identify a value
-                    that can be converted to a String.</li>
-                <li><em>Specify both the <code>paramName</code> and
-                    <code>paramProperty</code> attributes</em> - The specified
-                    property getter will be called on the JSP bean identified
-                    by the <code>paramName</code> (and optional
-                    <code>paramScope</code>) attributes, in order to select
-                    a value that can be converted to a String.</li>
-                </ul>
-
-                <p>If you prefer to specify a <code>java.util.Map</code> that
-                contains all of the request parameters to be added to the
-                hyperlink, use one of the following techniques:</p>
-                <ul>
-                <li><em>Specify only the <code>name</code> attribute</em> -
-                    The named JSP bean (optionally scoped by the value of
-                    the <code>scope</code> attribute) must identify a
-                    <code>java.util.Map</code> containing the parameters.</li>
-                <li><em>Specify both <code>name</code> and
-                    <code>property</code> attributes</em> - The specified
-                    property getter method will be called on the bean
-                    identified by the <code>name</code> (and optional
-                    <code>scope</code>) attributes, in order to return the
-                    <code>java.util.Map</code> containing the parameters.</li>
-                </ul>
-
-                <p>As the <code>Map</code> is processed, the keys are assumed
-                to be the names of query parameters to be appended to the
-                <code>src</code> URL.  The value associated with each key
-                must be either a String or a String array representing the
-                parameter value(s), or an object whose toString() method
-                will be called.  If a String array is specified, more than
-                one value for the same query parameter name will be
-                created.</p>
-
-                <p>You can specify the alternate text for this image (which
-                most browsers display as pop-up text block when the user
-                hovers the mouse over this image) either directly, through
-                the <code>alt</code> attribute, or indirectly from a message
-                resources bundle, using the <code>bundle</code> and
-                <code>altKey</code> attributes.</p>
-
-                </info>
-
-                <attribute>
-                  <name>align</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>Where the image is aligned to.  Can be one of the
-                  following attributes:</p>
-                  <ul>
-                   <li>left - left justify, wrapping text on right</li>
-                    <li>right -right justify, wrapping test on left</li>
-                    <li>top - aligns the image with the top of the text on
-                        the same row</li>
-                    <li>middle - aligns the image's vertical center with the
-                        text base line</li>
-                    <li>bottom - aligns the image with the bottom of the
-                        text's base line</li>
-                    <li>texttop - aligns the image's top with that of the
-                        text font on the same line</li>
-                    <li>absmiddle - aligns the image's vertical center with the
-                        absolute center of the text</li>
-                    <li>absbottom - aligns the image with the absolute bottom
-                        of the text font on the same row</li>
-                  </ul>
-                  </info>
-                </attribute>
-
-        <attribute>
-                <name>alt</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                  <p>And alternative text to be displayed in browsers that
-                     don't support graphics.  Also used often as type of
-                     context help over images.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>altKey</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The message resources key of the alternate text for this
-                element.</p>
-                </info>
-        </attribute>
-
-                <attribute>
-                  <name>border</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The width of the border surrounding the image.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>bundle</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The servlet context attribute key for the MessageResources
-                  instance to use.  If not specified, defaults to the
-                  application resources configured for our action servlet.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>height</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The height of the image being displayed.  This parameter
-                     is very nice to specify (along with <code>width</code>)
-                     to help the browser render the page faster.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>hspace</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The amount of horizontal spacing between the icon and
-                     the text.  The text may be in the same paragraph, or
-                     be wrapped around the image.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>imageName</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The scriptable name to be defined within this page, so
-                  that you can reference it with intra-page scripts.  In other
-                  words, the value specified here will render a "name" element
-                  in the generated image tag.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>ismap</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of the server-side map that this image belongs
-                     to.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>locale</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of the request or session Locale attribute used
-                  to look up internationalized messages.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>lowsrc</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>
-                  An image for people with low resolution graphics cards.
-                  </p>
-                  </info>
-                  <deprecated>
-                      This attribute is not defined in the HTML 4.01 spec and 
-                      will be removed in a future version of Struts.
-                  </deprecated>
-                </attribute>
-
-                <attribute>
-                  <name>name</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of a JSP bean that contains a <code>Map</code>
-                  representing the query parameters (if <code>property</code>
-                  is not specified), or a JSP bean whose property getter is
-                  called to return a <code>Map</code> (if <code>property</code>
-                  is specified).</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                    <name>onclick</name>
-                    <required>false</required>
-                    <rtexprvalue>true</rtexprvalue>
-                    <info>
-                        JavaScript event handler executed when this element receives a
-                        mouse click.
-                    </info>
-                </attribute>
-
-                <attribute>
-                    <name>ondblclick</name>
-                    <required>false</required>
-                    <rtexprvalue>true</rtexprvalue>
-                    <info>
-                        JavaScript event handler executed when this element receives a
-                        mouse double click.
-                    </info>
-                </attribute>
-
-                <attribute>
-                  <name>onkeydown</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>JavaScript event handler that is executed when
-                  this element receives a key down event.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>onkeypress</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>JavaScript event handler that is executed when
-                  this element receives a key press event.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>onkeyup</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>JavaScript event handler that is executed when
-                  this element receives a key up event.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                    <name>onmousedown</name>
-                    <required>false</required>
-                    <rtexprvalue>true</rtexprvalue>
-                    <info>
-                        JavaScript event handler executed when this element is under the mouse
-                        pointer and a mouse button is depressed.
-                    </info>
-                </attribute>
-
-                <attribute>
-                    <name>onmousemove</name>
-                    <required>false</required>
-                    <rtexprvalue>true</rtexprvalue>
-                    <info>
-                        JavaScript event handler executed when this element is under the
-                        mouse pointer and the pointer is moved.
-                    </info>
-                </attribute>
-
-                <attribute>
-                    <name>onmouseout</name>
-                    <required>false</required>
-                    <rtexprvalue>true</rtexprvalue>
-                    <info>
-                        JavaScript event handler executed when this element was under the
-                        mouse pointer but the pointer was moved outside the element.
-                    </info>
-                </attribute>
-
-                <attribute>
-                    <name>onmouseover</name>
-                    <required>false</required>
-                    <rtexprvalue>true</rtexprvalue>
-                    <info>
-                        JavaScript event handler executed when this element was not under
-                        the mouse pointer but the pointer is moved inside the element.
-                    </info>
-                </attribute>
-
-                <attribute>
-                    <name>onmouseup</name>
-                    <required>false</required>
-                    <rtexprvalue>true</rtexprvalue>
-                    <info>
-                        JavaScript event handler executed when this element is under the
-                        mouse pointer and a mouse button is released.
-                    </info>
-                </attribute>
-
-                <attribute>
-                  <name>paramId</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of the request parameter that will be dynamically
-                  added to the generated src URL.  The corresponding value is
-                  defined by the <code>paramName</code> and (optional)
-                  <code>paramProperty</code> attributes, optionally scoped by
-                  the <code>paramScope</code> attribute</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>page</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The module-relative path, starting with a slash, of
-                  the image to be displayed by this tag.  The rendered
-                  URL for this image will automatically prepend the context
-                  path of this web application (in the same manner as the
-                  <code>page</code> attribute on the link tag works),
-                  in addition to any necessary URL rewriting.  You
-                  <strong>must</strong> specify either the <code>page</code>
-                  attribute or the <code>src</code> attribute.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>pageKey</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The message key, in the message resources bundle named by
-                  the <code>bundle</code> attribute, of the String to be
-                  used as the module-relative path for this image.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>paramName</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of a JSP bean that is a String containing the
-                  value for the request parameter named by <code>paramId</code>
-                  (if <code>paramProperty</code> is not specified), or a JSP
-                  bean whose property getter is called to return a String
-                  (if <code>paramProperty</code> is specified).  The JSP bean
-                  is constrained to the bean scope specified by the
-                  <code>paramScope</code> property, if it is specified.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>paramProperty</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of a property of the bean specified by the
-                  <code>paramName</code> attribute, whose return value must
-                  be a String containing the value of the request parameter
-                  (named by the <code>paramId</code> attribute) that will be
-                  dynamically added to this src URL.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>paramScope</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The scope within which to search for the bean specified
-                  by the <code>paramName</code> attribute.  If not specified,
-                  all scopes are searched.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>property</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of a property of the bean specified by the
-                  <code>name</code> attribute, whose return value must be
-                  a <code>java.util.Map</code> containing the query parameters
-                  to be added to the src URL.  You <strong>must</strong>
-                  specify the <code>name</code> attribute if you specify
-                  this attribute.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>scope</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The scope within which to search for the bean specified
-                  by the <code>name</code> attribute.  If not specified, all
-                  scopes are searched.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>src</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The URL to which this image will be transferred from
-                  This image may be dynamically modified
-                  by the inclusion of query parameters, as described in the
-                  tag description.  This value will be used unmodified (other
-                  than potential URL rewriting) as the value of the "src"
-                  attribute in the rendered tag.  You <strong>must</strong>
-                  specify either the <code>page</code> attribute or the
-                  <code>src</code> attribute.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>srcKey</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The message key, in the message resources bundle named by
-                  the <code>bundle</code> attribute, of the String to be
-                  used as the URL of this image.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>style</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>CSS styles to be applied to this element.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>styleClass</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  CSS stylesheet class to be applied to this HTML element
-                  (renders a "class" attribute).
-                  </info>
-                </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-                <attribute>
-                  <name>title</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The advisory title for this element.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>titleKey</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The message resources key for the advisory title
-                  for this element.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>usemap</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of the map as defined within this page for
-                     mapping hot-spot areas of this image.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>vspace</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The amount of vertical spacing between the icon and
-                     the text, above and below.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>width</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The width of the image being displayed.  This parameter
-                     is very nice to specify (along with <code>height</code>)
-                     to help the browser render the page faster.</p>
-                  </info>
-                </attribute>
-
-        </tag>
-
-    <tag>
-
-        <name>javascript</name>
-        <summary>
-            Render JavaScript validation based on the
-            validation rules loaded by the <code>ValidatorPlugIn</code>.
-        </summary>
-        <tagclass>org.apache.struts.taglib.html.JavascriptValidatorTag</tagclass>
-        <bodycontent>empty</bodycontent>
-        <info>
-            <p>
-                Render JavaScript validation based on the
-                validation rules loaded by the <code>ValidatorPlugIn</code>.
-                The set of validation rules that should be generated is based
-                on the formName attribute passed in, which should match
-                the name attribute of the form element in the xml file.
-            </p>
-            <p>
-                The dynamicJavascript and staticJavascript attributes
-                default to true, but if dynamicJavascript is set to <code>true</code>
-                and staticJavascript is set to <code>false</code> then only
-                the dynamic JavaScript will be rendered.  If dynamicJavascript
-                is set to <code>false</code>
-                and staticJavascript is set to <code>true</code> then only
-                the static JavaScript will be rendered which can then be put in
-                separate JSP page so the browser can cache the static JavaScript.
-            </p>
-        </info>
-
-		<attribute>
-            <name>cdata</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-               <p>
-                  If set to "true" and XHTML has been enabled, the JavaScript will
-                  be wrapped in a CDATA section to prevent XML parsing. The default is
-                  "true" to comply with the W3C's recommendation.
-               </p>
-            </info>
-            <since>Struts 1.1</since>
-        </attribute>
-        
-        <attribute>
-            <name>dynamicJavascript</name>
-            <required>false</required>
-            <rtexprvalue>false</rtexprvalue>
-            <info>
-               <p>
-                  Whether or not to render the dynamic JavaScript.
-                  Defaults to <code>true</code>.
-               </p>
-            </info>
-        </attribute>
-        <attribute>
-            <name>formName</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-               <p>
-                  The key (form name) to retrieve a specific
-                  set of validation rules.
-               </p>
-            </info>
-        </attribute>
-        <attribute>
-            <name>method</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-               <p>
-                  The alternate JavaScript method name to be used
-                  instead of the of the default.  The default is
-                  'validate' concatenated in front of
-                  the key (form name) passed in (ex: validateRegistrationForm).
-               </p>
-            </info>
-        </attribute>
-        <attribute>
-            <name>page</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-               <p>
-                  The current page of a set of validation rules
-                  if the page attribute for the field element
-                  in the xml file is in use.
-               </p>
-            </info>
-        </attribute>
-        
-        <attribute>
-            <name>scriptLanguage</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The &lt;script&gt; element will not contain a language attribute
-                when this is set to false.  The default is true but this property is ignored
-                in XHTML mode.
-            </info>
-            <since>Struts 1.2</since>
-        </attribute>
-        
-        <attribute>
-            <name>src</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-               <p>
-                  The src attribute's value when defining
-                  the html script element.
-               </p>
-            </info>
-        </attribute>
-        <attribute>
-            <name>staticJavascript</name>
-            <required>false</required>
-            <rtexprvalue>false</rtexprvalue>
-            <info>
-               <p>
-                  Whether or not to render the static JavaScript.
-                  Defaults to <code>true</code>.
-               </p>
-            </info>
-        </attribute>
-        <attribute>
-            <name>htmlComment</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-               <p>
-                  Whether or not to enclose the javascript
-                  with HTML comments.  This attribute is ignored in XHTML
-                  mode because the script would be deleted by the XML parser.  See
-                  the cdata attribute for details on hiding scripts from XML
-                  parsers. 
-                  Defaults to <code>true</code>.
-               </p>
-            </info>
-        </attribute>
-
-    </tag>
-
-        <tag>
-
-                <name>link</name>
-                <summary>Render an HTML anchor or hyperlink</summary>
-                <tagclass>org.apache.struts.taglib.html.LinkTag</tagclass>
-                <info>
-
-                <p>Renders an HTML <code>&lt;a&gt;</code> element as an
-                anchor definition (if "linkName" is specified) or as a
-                hyperlink to the specified URL.  URL rewriting will be
-                applied automatically, to maintain session state in the
-                absence of cookies.  The content displayed for this
-                hyperlink will be taken from the body of this tag.</p>
-
-                <p>The base URL for this hyperlink is calculated based on
-                which of the following attributes you specify (you must
-                specify exactly one of them):</p>
-                <ul>
-                <li><em>forward</em> - Use the value of this attribute as the
-                    name of a global <code>ActionForward</code> to be looked
-                    up, and use the application-relative or context-relative
-                    URI found there.</li>
-                <li><em>action</em> - Use the value of this attribute as the
-                    name of a <code>Action</code> to be looked
-                    up, and use the application-relative or context-relative
-                    URI found there.</li>
-                 <li><em>href</em> - Use the value of this attribute unchanged.
-                     </li>
-                 <li><em>page</em> - Use the value of this attribute as a
-                    application-relative URI, and generate a server-relative
-                    URI by including the context path and application
-                    prefix.</li>
-                </ul>
-
-                <p>Normally, the hyperlink you specify with one of the
-                attributes described in the previous paragraph will be left
-                unchanged (other than URL rewriting if necessary).  However,
-                there are two ways you can append one or more dynamically
-                defined query parameters to the hyperlink -- specify a single
-                parameter with the <code>paramId</code> attribute (and its
-                associated attributes to select the value), or specify the
-                <code>name</code> (and optional <code>property</code>)
-                attributes to select a <code>java.util.Map</code> bean that
-                contains one or more parameter ids and corresponding values.
-                </p>
-
-                <p>To specify a single parameter, use the <code>paramId</code>
-                attribute to define the name of the request parameter to be
-                submitted.  To specify the corresponding value, use one of the
-                following approaches:</p>
-                <ul>
-                <li><em>Specify only the <code>paramName</code> attribute</em>
-                    - The named JSP bean (optionally scoped by the value of the
-                    <code>paramScope</code> attribute) must identify a value
-                    that can be converted to a String.</li>
-                <li><em>Specify both the <code>paramName</code> and
-                    <code>paramProperty</code> attributes</em> - The specified
-                    property getter method will be called on the JSP bean
-                    identified by the <code>paramName</code> (and optional
-                    <code>paramScope</code>) attributes, in order to select
-                    a value that can be converted to a String.</li>
-                </ul>
-
-                <p>If you prefer to specify a <code>java.util.Map</code> that
-                contains all of the request parameters to be added to the
-                hyperlink, use one of the following techniques:</p>
-                <ul>
-                <li><em>Specify only the <code>name</code> attribute</em> -
-                    The named JSP bean (optionally scoped by the value of
-                    the <code>scope</code> attribute) must identify a
-                    <code>java.util.Map</code> containing the parameters.</li>
-                <li><em>Specify both <code>name</code> and
-                    <code>property</code> attributes</em> - The specified
-                    property getter method will be called on the bean
-                    identified by the <code>name</code> (and optional
-                    <code>scope</code>) attributes, in order to return the
-                    <code>java.util.Map</code> containing the parameters.</li>
-                </ul>
-
-                <p>As the <code>Map</code> is processed, the keys are assumed
-                to be the names of query parameters to be appended to the
-                hyperlink.  The value associated with each key must be either
-                a String or a String array representing the parameter value(s),
-                or an object whose toString() method will be called.
-                If a String array is specified, more than one value for the
-                same query parameter name will be created.</p>
-
-                <p>Additionally, you can request that the current transaction
-                control token, if any, be included in the generated hyperlink
-                by setting the <code>transaction</code> attribute to
-                <code>true</code>.
-                You can also request that an anchor ("#xxx") be added to the
-                end of the URL that is created by any of the above mechanisms,
-                by using the <code>anchor</code> attribute.</p>
-
-                </info>
-
-                <attribute>
-                  <name>accesskey</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The keyboard character used to move focus immediately
-                  to this element.</p>
-                  </info>
-                 </attribute>
- 
-                 <attribute>
-                  <name>action</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>Logical name of a <code>Action</code> that
-                  contains the actual content-relative URI of the destination
-                  of this transfer.  This hyperlink may be dynamically
-                  modified by the inclusion of query parameters, as described
-                  in the tag description.  You <strong>must</strong> specify
-                  exactly one of the <code>action</code> attribute, the
-                  <code>forward</code> attribute, the
-                  <code>href</code> attribute, the <code>linkName</code>
-                  attribute, or the <code>page</code> attribute.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                   <name>anchor</name>
-                   <required>false</required>
-                   <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>Optional anchor tag ("#xxx") to be added to the generated
-                  hyperlink.  Specify this value <strong>without</strong> any
-                  "#" character.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>forward</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>Logical name of a global <code>ActionForward</code> that
-                  contains the actual content-relative URI of the destination
-                   of this transfer.  This hyperlink may be dynamically
-                   modified by the inclusion of query parameters, as described
-                   in the tag description.  You <strong>must</strong> specify
-                   exactly one of the <code>action</code> attribute, the
-                   <code>forward</code> attribute, the
-                   <code>href</code> attribute, the <code>linkName</code>
-                   attribute, or the <code>page</code> attribute.</p>
-                   </info>
-                </attribute>
-
-                <attribute>
-                  <name>href</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The URL to which this hyperlink will transfer control
-                   if activated.  This hyperlink may be dynamically modified
-                   by the inclusion of query parameters, as described in the
-                   tag description.  You <strong>must</strong> specify
-                   exactly one of the <code>action</code> attribute, the
-                   <code>forward</code> attribute, the
-                   <code>href</code> attribute, the <code>linkName</code>
-                   attribute, or the <code>page</code> attribute.</p>
-                   </info>
-                </attribute>
-
-        <attribute>
-            <name>indexed</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Valid only inside of logic:iterate tag.
-                If <code>true</code> then indexed parameter with name from indexId attribute
-                will be added to the query string. Indexed parameter looks like
-                "index[32]". Number in brackets will be generated
-                for every iteration and taken from ancestor logic:iterate tag.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>indexId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                By this attribute different name for the indexed parameter can be
-                specified. Take a look to the "indexed" attribute for details.
-            </info>
-        </attribute>
-
-                <attribute>
-                  <name>linkName</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The anchor name to be defined within this page, so that
-                  you can reference it with intra-page hyperlinks.  In other
-                  words, the value specified here will render a "name" element
-                  in the generated anchor tag.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>name</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of a JSP bean that contains a <code>Map</code>
-                  representing the query parameters (if <code>property</code>
-                  is not specified), or a JSP bean whose property getter is
-                  called to return a <code>Map</code> (if <code>property</code>
-                  is specified).</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>onblur</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>JavaScript event handler that is executed when
-                  this element loses input focus.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>onclick</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>JavaScript event handler that is executed when
-                  this element receives a mouse click.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>ondblclick</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>JavaScript event handler that is executed when
-                  this element receives a mouse double click.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>onfocus</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>JavaScript event handler that is executed when
-                  this element receives input focus.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>onkeydown</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>JavaScript event handler that is executed when
-                  this element receives a key down event.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>onkeypress</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>JavaScript event handler that is executed when
-                  this element receives a key press event.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>onkeyup</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>JavaScript event handler that is executed when
-                  this element receives a key up event.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>onmousedown</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>JavaScript event handler that is executed when
-                  this element receives a mouse down event.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>onmousemove</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>JavaScript event handler that is executed when
-                  this element receives a mouse move event.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>onmouseout</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>JavaScript event handler that is executed when
-                  this element receives a mouse out event.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>onmouseover</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>JavaScript event handler that is executed when
-                  this element receives a mouse over event.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>onmouseup</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>JavaScript event handler that is executed when
-                  this element receives a mouse up event.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>page</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The module-relative path (beginning with a "/"
-                  character) to which this hyperlink will transfer control
-                   if activated.  This hyperlink may be dynamically modified
-                   by the inclusion of query parameters, as described in the
-                   tag description.  You <strong>must</strong> specify exactly
-                   one of the <code>action</code> attribute,
-                   <code>forward</code> attribute, the
-                   <code>href</code> attribute, the <code>linkName</code>
-                   attribute, or the <code>page</code> attribute.</p>
-                   </info>
-                </attribute>
-
-                <attribute>
-                  <name>paramId</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of the request parameter that will be dynamically
-                  added to the generated hyperlink.  The corresponding value is
-                  defined by the <code>paramName</code> and (optional)
-                  <code>paramProperty</code> attributes, optionally scoped by
-                  the <code>paramScope</code> attribute</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>paramName</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of a JSP bean that is a String containing the
-                  value for the request parameter named by <code>paramId</code>
-                  (if <code>paramProperty</code> is not specified), or a JSP
-                  bean whose property getter is called to return a String
-                  (if <code>paramProperty</code> is specified).  The JSP bean
-                  is constrained to the bean scope specified by the
-                  <code>paramScope</code> property, if it is specified.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>paramProperty</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of a property of the bean specified by the
-                  <code>paramName</code> attribute, whose return value must
-                  be a String containing the value of the request parameter
-                  (named by the <code>paramId</code> attribute) that will be
-                  dynamically added to this hyperlink.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>paramScope</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The scope within which to search for the bean specified
-                  by the <code>paramName</code> attribute.  If not specified,
-                  all scopes are searched.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>property</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of a property of the bean specified by the
-                  <code>name</code> attribute, whose return value must be
-                  a <code>java.util.Map</code> containing the query parameters
-                  to be added to the hyperlink.  You <strong>must</strong>
-                  specify the <code>name</code> attribute if you specify
-                  this attribute.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>scope</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The scope within which to search for the bean specified
-                  by the <code>name</code> attribute.  If not specified, all
-                  scopes are searched.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>style</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>CSS styles to be applied to this element.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>styleClass</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  CSS stylesheet class to be applied to this HTML element
-                  (renders a "class" attribute).
-                  </info>
-                </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-                <attribute>
-                  <name>tabindex</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The tab order (ascending positive integers) for
-                  this element.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>target</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The window target in which the resource requested by this
-                  hyperlink will be displayed, for example in a framed
-                  presentation.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>title</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The advisory title for this hyperlink.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>titleKey</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The message resources key for the advisory title
-                  for this element.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>transaction</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>If set to <code>true</code>, any current transaction
-                  control token will be included in the generated hyperlink,
-                  so that it will pass an <code>isTokenValid()</code> test
-                  in the receiving Action.</p>
-                  </info>
-                </attribute>
-
-        </tag>
-
-        <tag>
-                <name>messages</name>
-                <summary>
-                Conditionally display a set of accumulated messages.
-                </summary>
-                <tagclass>org.apache.struts.taglib.html.MessagesTag</tagclass>
-                <teiclass>org.apache.struts.taglib.html.MessagesTei</teiclass>
-                <bodycontent>JSP</bodycontent>
-                <info>
-                <p>Displays a set of messages prepared by a business
-                logic component and stored as an <code>ActionMessages</code>
-                object, <code>ActionErrors</code> object, a String,
-                or a String array in any scope.  If
-                such a bean is not found, nothing will be rendered.</p>
-
-                <p>In order to use this tag successfully, you must have
-                defined an application scope <code>MessageResources</code>
-                bean under the default attribute name.</p>
-                </info>
-
-                <attribute>
-                  <name>id</name>
-                  <required>true</required>
-                  <rtexprvalue>false</rtexprvalue>
-                  <info>
-                  The name of a page scope JSP bean that will contain the current
-                  element of the collection of messages on each iteration, if it is not
-                  <code>null</code>.
-                  </info>
-                </attribute>
-
-                <attribute>
-                    <name>bundle</name>
-                    <required>false</required>
-                    <rtexprvalue>true</rtexprvalue>
-                    <info>
-                    The servlet context attribute key for the MessageResources
-                    instance to use.  If not specified, defaults to the
-                    application resources configured for our action servlet.
-                    </info>
-                </attribute>
-
-                <attribute>
-                    <name>locale</name>
-                    <required>false</required>
-                    <rtexprvalue>true</rtexprvalue>
-                    <info>
-                    The session attribute key for the Locale used to select
-                    messages to be displayed.  If not specified, defaults to
-                    the Struts standard value.
-                    </info>
-                </attribute>
-
-                <attribute>
-                  <name>name</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  Name of the bean in any scope under which our messages
-                  have been stored.  If not present, the name specified by the
-                  <code>Globals.ERROR_KEY</code> constant string will be used.
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>property</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  Name of the property for which messages should be
-                  displayed.  If not specified, all messages (regardless
-                  of property) are displayed.
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>header</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  This value is an optional message resource key that will
-                  be printed before the iteration of messages begins.
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>footer</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  This value is an optional message resource key that will
-                  be printed after the iteration of messages has finished.
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>message</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  By default the tag will retrieve the bean it will
-                  iterate over from the <code>Globals.ERROR_KEY</code> constant string,
-                  but if this attribute is set to 'true' the bean
-                  will be retrieved from the <code>Globals.MESSAGE_KEY</code>
-                  constant string.  Also if this is set to 'true', any value
-                  assigned to the name attribute will be ignored.
-                  </info>
-                </attribute>
-
-        </tag>
-
-
-    <tag>
-
-        <name>multibox</name>
-        <summary>
-            Render A Checkbox Input Field
-        </summary>
-        <tagclass>org.apache.struts.taglib.html.MultiboxTag</tagclass>
-        <info>
-                        <p>Renders an HTML &lt;input&gt; element of type
-                        <code>checkbox</code>, whose "checked" status is
-                        initialized based on whether the specified value
-                        matches one of the elements of the underlying
-                        property's array of current values. This element is
-                        useful when you have large numbers of checkboxes, and
-                        prefer to combine the values into a single
-                        array-valued property instead of multiple boolean
-                        properties.  This tag is only valid when nested
-                        inside a form tag body.</p>
-
-                        <p><strong>WARNING</strong>:  In order to correctly
-                        recognize cases where none of the associated checkboxes
-                        are selected, the <code>ActionForm</code> bean
-                        associated with this form must include a statement
-                        setting the corresponding array to zero length in the
-                        <code>reset()</code> method.</p>
-
-                <p>The value to be returned to the server, if this checkbox is
-                selected, must be defined by one of the following methods:</p>
-                <ul>
-                <li>Specify a <code>value</code> attribute, whose contents will
-                be used literally as the value to be returned.</li>
-                <li>Specify no <code>value</code> attribute, and the nested
-                body content of this tag will be used as the value to be
-                returned.</li>
-                </ul>
-
-        </info>
-
-        <attribute>
-            <name>accesskey</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The keyboard character used to move focus immediately to this
-                element.
-            </info>
-        </attribute>
-
-        <attribute>
-                <name>alt</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The alternate text for this element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>altKey</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The message resources key of the alternate text for this
-                element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-          <name>disabled</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-          <info>
-          Set to <code>true</code> if this input field should be
-          disabled.
-          </info>
-        </attribute>
-
-        <attribute>
-            <name>name</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The attribute name of the bean whose properties are consulted when
-                rendering the current value of this input field. If not specified,
-                the bean associated with the form tag we are nested within is utilized.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onblur</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onchange</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus and its value has changed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse click.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>ondblclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse double click.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onfocus</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives input
-                focus.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>onkeydown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeypress</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed and released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeyup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousedown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the mouse
-                pointer and a mouse button is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousemove</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and the pointer is moved.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseout</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was under the
-                mouse pointer but the pointer was moved outside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseover</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was not under
-                the mouse pointer but the pointer is moved inside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and a mouse button is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>property</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Name of the request parameter that will be included with this
-                submission, set to the specified value.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS styles to be applied to this HTML element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>tabindex</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The tab order (ascending positive integers) for this element.
-            </info>
-        </attribute>
-
-                <attribute>
-                  <name>title</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The advisory title for this element.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>titleKey</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The message resources key for the advisory title
-                  for this element.</p>
-                  </info>
-                </attribute>
-
-        <attribute>
-            <name>value</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                        The value to be transmitted if this checkbox is
-                        checked when the form is submitted.
-            </info>
-        </attribute>
-    </tag>
-
-
-    <tag>
-
-        <name>option</name>
-        <summary>
-                Render A Select Option
-        </summary>
-        <tagclass>org.apache.struts.taglib.html.OptionTag</tagclass>
-        <info>
-                <p>Render an HTML <code>&lt;option&gt;</code> element,
-                representing one of the choices for an enclosing
-                <code>&lt;select&gt;</code> element.  The text displayed to the
-                user comes from either the body of this tag, or from a message
-                string looked up based on the <code>bundle</code>,
-                <code>locale</code>, and <code>key</code> attributes.</p>
-
-                <p>If the value of the corresponding bean property matches the
-                specified value, this option will be marked selected.  This tag
-                is only valid when nested inside a
-                <code>&lt;html:select&gt;</code> tag body.</p>
-        </info>
-
-                <attribute>
-                    <name>bundle</name>
-                    <required>false</required>
-                    <rtexprvalue>true</rtexprvalue>
-                    <info>
-                    The servlet context attributes key for the MessageResources
-                    instance to use.  If not specified, defaults to the
-                    application resources configured for our action servlet.
-                    </info>
-                </attribute>
-
-        <attribute>
-          <name>disabled</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-          <info>
-          Set to <code>true</code> if this option should be
-          disabled.
-          </info>
-        </attribute>
-
-                <attribute>
-                    <name>key</name>
-                    <required>false</required>
-                    <rtexprvalue>true</rtexprvalue>
-                    <info>
-                    If specified, defines the message key to be looked up in
-                    the resource bundle specified by <code>bundle</code> for
-                    the text displayed to the user for this option.  If not
-                    specified, the text to be displayed is taken from the body
-                    content of this tag.
-                    </info>
-                </attribute>
-
-                <attribute>
-                    <name>locale</name>
-                    <required>false</required>
-                    <rtexprvalue>true</rtexprvalue>
-                    <info>
-                    The session attributes key for the Locale instance to use
-                    for looking up the message specified by the
-                    <code>key</code> attribute.  If not specified, uses the
-                    standard Struts session attribute name.
-                    </info>
-                </attribute>
-
-        <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS styles to be applied to this HTML element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-                    <name>value</name>
-                    <required>true</required>
-                    <rtexprvalue>true</rtexprvalue>
-                    <info>
-                    Value to be submitted for this field if this option is
-                    selected by the user.
-                    </info>
-        </attribute>
-
-    </tag>
-
-
-    <tag>
-
-        <name>options</name>
-        <summary>
-            Render a Collection of Select Options
-        </summary>
-        <tagclass>org.apache.struts.taglib.html.OptionsTag</tagclass>
-        <bodycontent>empty</bodycontent>
-        <info>
-                <p>Renders a set of HTML <code>&lt;option&gt;</code> elements,
-                representing possible choices for a <code>&lt;select&gt;</code>
-                element.  This tag can be used multiple times within a single
-                <code>&lt;html:select&gt;</code> element, either in conjunction
-                with or instead of one or more <code>&lt;html:option&gt;</code>
-                or <code>&lt;html:optionsCollection&gt;</code> elements.</p>
-
-                <p>This tag operates in one of two major modes, depending on
-                whether or not the <code>collection</code> attribute is
-                specified.  If the <code>collection</code> attribute is
-                included, the following rules apply:</p>
-                <ul>
-                <li>The <strong>collection</strong> attribute is interpreted
-                    as the name of a JSP bean, in some scope, that itself
-                    represents a collection of individual beans, one per option
-                    value to be rendered.</li>
-                <li>The <strong>property</strong> attribute is interpreted as
-                    the name of a property of the individual beans included in
-                    the collection, and is used to retrieve the value that will
-                    be returned to the server if this option is selected.</li>
-                <li>The <strong>labelProperty</strong> attribute is interpreted
-                    as the name of a property of the individual beans included
-                    in the collection, and is used to retrieve the label that
-                    will be displayed to the user for this option.  If the
-                    <code>labelProperty</code> attribute is not specified, the
-                    property named by the <code>property</code> attribute will
-                    be used to select both the value returned to the server and
-                    the label displayed to the user for this option.</li>
-                </ul>
-
-                <p>If the <code>collection</code> attribute is not specified,
-                the rules described in the remainder of this section apply.</p>
-
-                <p>The collection of values actually selected depends on the presence or
-                absence of the <code>name</code> and <code>property</code> attributes.  The
-                following combinations are allowed:</p>
-                <ul>
-                <li><em>Only <code>name</code> is specified</em> - The value of this attribute
-                    is the name of a JSP bean in some scope that is the
-                    collection.</li>
-                <li><em>Only <code>property</code> is specified</em> - The value of this
-                    attribute is the name of a property of the ActionForm bean associated
-                    with our form, which will return the collection.</li>
-                <li><em>Both <code>name</code> and <code>property</code> are specified</em> -
-                    The value of the <code>name</code> attribute identifies a JSP bean
-                    in some scope.  The value of the <code>property</code> attribute is the
-                    name of some property of that bean which will return the collection.</li>
-                </ul>
-
-                <p>The collection of labels displayed to the user can be the same as the
-                option values themselves, or can be different, depending on the presence or
-                absence of the <code>labelName</code> and <code>labelProperty</code>
-                attributes.  If this feature is used, the collection of labels must contain
-                the same number of elements as the corresponding collection of values.
-                The following combinations are allowed:</p>
-                <ul>
-                <li><em>Neither <code>labelName</code> nor <code>labelProperty</code> is
-                    specified</em> - The labels will be the same as the option values
-                    themselves.</li>
-                <li><em>Only <code>labelName</code> is specified</em> - The value of this
-                    attribute is the name of a JSP bean in some scope that is the
-                    collection.</li>
-                <li><em>Only <code>labelProperty</code> is specified</em> - The value of this
-                    attribute is the name of a property of the ActionForm bean associated
-                    with our form, which will return the collection.</li>
-                <li><em>Both <code>labelName</code> and <code>labelProperty</code> are
-                    specified</em> - The value of the <code>labelName</code> attribute
-                    identifies a JSP bean in some scope.  The value of the
-                    <code>labelProperty</code> attribute is the name of some property of
-                    that bean which will return the collection.</li>
-                </ul>
-
-
-            <p>Note that this tag does not support a <code>styleId</code>
-            attribute, as it would have to apply the value to all the
-            <code>option</code> elements created by this element, which would
-            mean that more than one <code>id</code> element might have the same
-            value, which the HTML specification says is illegal.</p>
-
-        </info>
-
-                <attribute>
-                        <name>collection</name>
-                        <required>false</required>
-                        <rtexprvalue>true</rtexprvalue>
-                        <info>
-                        Name of the JSP bean (in some scope) which is itself a
-                        Collection of other beans, each of which has properties
-                        named by the "property" and "labelProperty" attributes
-                        that are used to retrieve the value and label for each
-                        option, respectively.
-                        </info>
-                </attribute>
-
-        <attribute>
-            <name>filter</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Set to <code>false</code> if you do NOT want the option labels
-                filtered for sensitive characters in HTML.  By default, such
-                values are filtered.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>labelName</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Name of the JSP bean (in some scope) containing the collection of labels to
-                be displayed to the user for these options.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>labelProperty</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Property of the form bean, or the bean specified by the labelName
-                attribute, that will return the collection of labels to be displayed
-                to the user for these options.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>name</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Name of the JSP bean (in some scope) containing the collection of
-                values to be returned to the server for these options. If not
-                specified, the form bean associated with our form is assumed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>property</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Property of the form bean, or the bean specified by the name
-                attribute, that will return the collection of values to returned
-                to the server for these options.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS styles to be applied to this HTML element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-        </attribute>
-    </tag>
-
-    <tag>
-
-        <name>optionsCollection</name>
-        <summary>
-            Render a Collection of Select Options
-        </summary>
-        <tagclass>org.apache.struts.taglib.html.OptionsCollectionTag</tagclass>
-        <bodycontent>empty</bodycontent>
-        <info>
-            <p>Renders a set of HTML <code>&lt;option&gt;</code> elements,
-            representing possible choices for a <code>&lt;select&gt;</code>
-            element.  This tag can be used multiple times within a single
-            <code>&lt;html:select&gt;</code> element, either in conjunction
-            with or instead of one or more <code>&lt;html:option&gt;</code>
-            or <code>&lt;html:options&gt;</code> elements.</p>
-
-            <p>This tag operates on a collection of beans, where each bean
-            has a <strong>label</strong> property and a <strong>value</strong>
-            property. The actual names of these properties can be configured
-            using the <code>label</code> and <code>value</code> attributes
-            of this tag.</p>
-
-            <p>This tag differs from the <code>&lt;html:options&gt;</code> tag
-            in that it makes more consistent use of the <code>name</code> and
-            <code>property</code> attributes, and allows the collection to be
-            more easily obtained from the enclosing form bean.</p>
-
-            <p>Note that this tag does not support a <code>styleId</code>
-            attribute, as it would have to apply the value to all the
-            <code>option</code> elements created by this element, which would
-            mean that more than one <code>id</code> element might have the same
-            value, which the HTML specification says is illegal.</p>
-        </info>
-
-        <attribute>
-            <name>filter</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Set to <code>false</code> if you do NOT want the option labels
-                filtered for sensitive characters in HTML.  By default, such
-                values are filtered.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>label</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The property of the bean within the collection which represents
-                the label to be rendered for each option. Defaults to "label".
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>name</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The attribute name of the bean whose properties are consulted
-                when rendering the current value of this input field. If not
-                specified, the bean associated with the form tag we are nested
-                within is utilized.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>property</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The property of the form bean, or the bean specified by the name
-                attribute, that will return the collection of objects to be
-                rendered for these options.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS styles to be applied to this HTML element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>value</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The property of the bean within the collection which represents
-                the value to be rendered for each option. Defaults to "value".
-            </info>
-        </attribute>
-    </tag>
-
-    <tag>
-
-        <name>password</name>
-        <summary>
-            Render A Password Input Field
-        </summary>
-        <tagclass>org.apache.struts.taglib.html.PasswordTag</tagclass>
-        <info>
-            Renders an HTML &lt;input&gt; element of type password, populated
-            from the specified value or the specified property of the bean
-            associated with our current form. This tag is only valid when
-            nested inside a form tag body.
-        </info>
-
-        <attribute>
-            <name>accesskey</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The keyboard character used to move focus immediately to this
-                element.
-            </info>
-        </attribute>
-
-        <attribute>
-                <name>alt</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The alternate text for this element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>altKey</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The message resources key of the alternate text for this
-                element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-          <name>disabled</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-          <info>
-          Set to <code>true</code> if this input field should be
-          disabled.
-          </info>
-        </attribute>
-
-        <attribute>
-            <name>indexed</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Valid only inside of logic:iterate tag.
-                If <code>true</code> then name of the html tag will be rendered as
-                "id[34].propertyName". Number in brackets will be generated
-                for every iteration and taken from ancestor logic:iterate tag.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>maxlength</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Maximum number of input characters to accept. [No limit]
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>name</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The attribute name of the bean whose properties are consulted when
-                rendering the current value of this input field. If not specified,
-                the bean associated with the form tag we are nested within is utilized.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onblur</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onchange</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus and its value has changed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse click.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>ondblclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse double click.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onfocus</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives input
-                focus.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>onkeydown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeypress</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed and released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeyup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousedown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the mouse
-                pointer and a mouse button is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousemove</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and the pointer is moved.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseout</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was under the
-                mouse pointer but the pointer was moved outside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseover</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was not under
-                the mouse pointer but the pointer is moved inside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and a mouse button is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>property</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Name of the request parameter that will be included with this
-                submission, set to the specified value.
-            </info>
-        </attribute>
-
-        <attribute>
-          <name>readonly</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-          <info>
-          Set to <code>true</code> if this input field should be
-          read only.
-          </info>
-        </attribute>
-
-                <attribute>
-                        <name>redisplay</name>
-                        <required>false</required>
-                        <rtexprvalue>true</rtexprvalue>
-                        <info>
-                        Boolean flag indicating whether or not existing values
-                        will be redisplayed if they exist.  Even though the
-                        redisplayed value will be shown as asterisks on the
-                        visible HTML page, the cleartext of the actual password
-                        value will be visible though the "Show Page Source"
-                        menu option of the client browser.  You may wish to
-                        set this value to <code>false</code> on login pages.
-                        Defaults to <code>true</code> for consistency with
-                        all other form tags that redisplay their contents.
-                        </info>
-                </attribute>
-
-        <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS styles to be applied to this HTML element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>size</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Number of character positions to allocate. [Browser default]
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>tabindex</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The tab order (ascending positive integers) for this element.
-            </info>
-        </attribute>
-
-                <attribute>
-                  <name>title</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The advisory title for this element.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>titleKey</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The message resources key for the advisory title
-                  for this element.</p>
-                  </info>
-                </attribute>
-
-        <attribute>
-            <name>value</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Value of the label to be placed on this button. This value will
-                also be submitted as the value of the specified request parameter.
-                [Body of this tag (if any)]
-            </info>
-        </attribute>
-    </tag>
-
-
-    <tag>
-
-        <name>radio</name>
-        <summary>
-            Render A Radio Button Input Field
-        </summary>
-        <tagclass>org.apache.struts.taglib.html.RadioTag</tagclass>
-        <info>
-            <p>
-            Renders an HTML &lt;input&gt; element of type radio, populated from
-            the specified property of the bean associated with our current form.
-            This tag is only valid when nested inside a form tag body.
-            </p>
-            <p>
-            If an iterator is used to render a series of radio tags, the
-            idName attribute may be used to specify the name of the bean
-            exposed by the iterator. In this case, the value attribute is
-            used as the name of a property on the idName bean that returns
-            the value of the radio tag in this iteration.
-            </p>
-        </info>
-
-
-        <attribute>
-            <name>accesskey</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The keyboard character used to move focus immediately to this
-                element.
-            </info>
-        </attribute>
-
-        <attribute>
-                <name>alt</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The alternate text for this element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>altKey</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The message resources key of the alternate text for this
-                element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-          <name>disabled</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-          <info>
-          Set to <code>true</code> if this input field should be
-          disabled.
-          </info>
-        </attribute>
-
-        <attribute>
-            <name>indexed</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Valid only inside of logic:iterate tag.
-                If <code>true</code> then name of the html tag will be rendered as
-                "id[34].propertyName". Number in brackets will be generated
-                for every iteration and taken from ancestor logic:iterate tag.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>name</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The attribute name of the bean whose properties are consulted when
-                rendering the current value of this input field. If not specified,
-                the bean associated with the form tag we are nested within is utilized.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onblur</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onchange</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus and its value has changed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse click.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>ondblclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse double click.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onfocus</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives input
-                focus.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>onkeydown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeypress</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed and released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeyup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is released.
-            </info>
-        </attribute>
-
-                <attribute>
-                        <name>property</name>
-                        <required>true</required>
-                        <rtexprvalue>true</rtexprvalue>
-                        <info>
-                                The corresponding bean property for this radio tag.
-                        </info>
-                </attribute>
-
-        <attribute>
-            <name>onmousedown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the mouse
-                pointer and a mouse button is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousemove</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and the pointer is moved.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseout</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was under the
-                mouse pointer but the pointer was moved outside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseover</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was not under
-                the mouse pointer but the pointer is moved inside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and a mouse button is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS styles to be applied to this HTML element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>tabindex</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The tab order (ascending positive integers) for this element.
-            </info>
-        </attribute>
-
-                <attribute>
-                  <name>title</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The advisory title for this element.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>titleKey</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The message resources key for the advisory title
-                  for this element.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                        <name>value</name>
-                        <required>true</required>
-                        <rtexprvalue>true</rtexprvalue>
-                        <info>
-                            The value of the radio tag.
-                        </info>
-                </attribute>
-
-        <attribute>
-            <name>idName</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                <p>Name of the bean (in some scope) that will return the
-                value of the radio tag. Usually exposed
-                by an iterator. When the idName attribute is
-                present, the value attribute is used as the name of the
-                property on the idName bean that will return the
-                value of the radio tag for this iteration.</p>
-            </info>
-            <since>Struts 1.1</since>
-        </attribute>
-
-
-    </tag>
-
-
-    <tag>
-
-        <name>reset</name>
-        <summary>
-            Render A Reset Button Input Field
-        </summary>
-        <tagclass>org.apache.struts.taglib.html.ResetTag</tagclass>
-        <info>
-            Renders an HTML &lt;input&gt; element of type reset.
-        </info>
-
-
-        <attribute>
-            <name>accesskey</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The keyboard character used to move focus immediately to this
-                element.
-            </info>
-        </attribute>
-
-        <attribute>
-                <name>alt</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The alternate text for this element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>altKey</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The message resources key of the alternate text for this
-                element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-          <name>disabled</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-          <info>
-          Set to <code>true</code> if this input field should be
-          disabled.
-          </info>
-        </attribute>
-
-        <attribute>
-            <name>onblur</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onchange</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus and its value has changed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse click.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>ondblclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse double click.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onfocus</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives input
-                focus.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>onkeydown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeypress</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed and released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeyup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousedown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the mouse
-                pointer and a mouse button is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousemove</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and the pointer is moved.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseout</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was under the
-                mouse pointer but the pointer was moved outside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseover</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was not under
-                the mouse pointer but the pointer is moved inside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and a mouse button is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>property</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Name of the input field that will be generated.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS styles to be applied to this HTML element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>tabindex</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The tab order (ascending positive integers) for this element.
-            </info>
-        </attribute>
-
-                <attribute>
-                  <name>title</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The advisory title for this element.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>titleKey</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The message resources key for the advisory title
-                  for this element.</p>
-                  </info>
-                </attribute>
-
-        <attribute>
-            <name>value</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-            Value of the label to be placed on this button.
-                        [Body of this tag (if any), or "Reset"]
-            </info>
-        </attribute>
-
-    </tag>
-
-
-        <tag>
-
-                <name>rewrite</name>
-                <summary>Render an URI</summary>
-                <tagclass>org.apache.struts.taglib.html.RewriteTag</tagclass>
-                <bodycontent>empty</bodycontent>
-                <info>
-                <p>Renders a request URI based on exactly the same rules
-                as the <code><a href="#link">link</a></code> tag does,
-                but without creating
-                the <code>&lt;a&gt;</code> hyperlink.  This value is useful
-                when you want to generate a string constant for use by
-                a JavaScript procedure.</p>
-                </info>
-
-                 <attribute>
-                  <name>action</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>Logical name of a <code>Action</code> that
-                  contains the actual content-relative URI of the destination
-                  of this transfer.  This hyperlink may be dynamically
-                  modified by the inclusion of query parameters, as described
-                  in the tag description. You <strong>must</strong> specify
-                  exactly one of the <code>action</code> attribute, the
-                  <code>forward</code> attribute, the
-                  <code>href</code> attribute, or the <code>page</code>
-                  attribute.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>anchor</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>Optional anchor tag ("#xxx") to be added to the generated
-                  hyperlink.  Specify this value <strong>without</strong> any
-                  "#" character.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>forward</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>Logical name of a global <code>ActionForward</code> that
-                   contains the actual content-relative URI of the destination
-                   of this transfer.  This hyperlink may be dynamically
-                   modified by the inclusion of query parameters, as described
-                   in the tag description.  You <strong>must</strong> specify
-                   exactly one of the <code>action</code> attribute, the
-                   <code>forward</code> attribute, the
-                   <code>href</code> attribute, or the <code>page</code>
-                   attribute.</p>
-                   </info>
-                </attribute>
-                
-                <attribute>
-                  <name>href</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The URL to which this hyperlink will transfer control
-                   if activated.  This hyperlink may be dynamically modified
-                   by the inclusion of query parameters, as described in the
-                   tag description.  You <strong>must</strong> specify
-                   exactly one of the <code>action</code> attribute, the
-                   <code>forward</code> attribute, the
-                   <code>href</code> attribute, or the <code>page</code>
-                   attribute.</p>
-                   </info>
-                 </attribute>
-
-                <attribute>
-                  <name>name</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of a JSP bean that contains a <code>Map</code>
-                  representing the query parameters (if <code>property</code>
-                  is not specified), or a JSP bean whose property getter is
-                  called to return a <code>Map</code> (if <code>property</code>
-                  is specified).</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>page</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The module-relative path (beginning with a "/"
-                  character) to which this hyperlink will transfer control
-                   if activated.  This hyperlink may be dynamically modified
-                   by the inclusion of query parameters, as described in the
-                   tag description.  You <strong>must</strong> specify exactly
-                   one of the <code>action</code> attribute, the 
-                   <code>forward</code> attribute, the
-                   <code>href</code> attribute, or the <code>page</code>
-                   attribute.</p>
-                   </info>                
-                 </attribute>
-
-                <attribute>
-                  <name>paramId</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of the request parameter that will be dynamically
-                  added to the generated hyperlink.  The corresponding value is
-                  defined by the <code>paramName</code> and (optional)
-                  <code>paramProperty</code> attributes, optionally scoped by
-                  the <code>paramScope</code> attribute</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>paramName</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of a JSP bean that is a String containing the
-                  value for the request parameter named by <code>paramId</code>
-                  (if <code>paramProperty</code> is not specified), or a JSP
-                  bean whose property getter is called to return a String
-                  (if <code>paramProperty</code> is specified).  The JSP bean
-                  is constrained to the bean scope specified by the
-                  <code>paramScope</code> property, if it is specified.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>paramProperty</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of a property of the bean specified by the
-                  <code>paramName</code> attribute, whose return value must
-                  be a String containing the value of the request parameter
-                  (named by the <code>paramId</code> attribute) that will be
-                  dynamically added to this hyperlink.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>paramScope</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The scope within which to search for the bean specified
-                  by the <code>paramName</code> attribute.  If not specified,
-                  all scopes are searched.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>property</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of a property of the bean specified by the
-                  <code>name</code> attribute, whose return value must be
-                  a <code>java.util.Map</code> containing the query parameters
-                  to be added to the hyperlink.  You <strong>must</strong>
-                  specify the <code>name</code> attribute if you specify
-                  this attribute.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>scope</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The scope within which to search for the bean specified
-                  by the <code>name</code> attribute.  If not specified, all
-                  scopes are searched.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>transaction</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>If set to <code>true</code>, any current transaction
-                  control token will be included in the generated hyperlink,
-                  so that it will pass an <code>isTokenValid()</code> test
-                  in the receiving Action.</p>
-                  </info>
-                </attribute>
-
-        </tag>
-
-
-    <tag>
-
-        <name>select</name>
-        <summary>
-            Render A Select Element
-        </summary>
-        <tagclass>org.apache.struts.taglib.html.SelectTag</tagclass>
-        <bodycontent>JSP</bodycontent>
-        <info>
-                        <p>Renders an HTML &lt;select&gt; element, associated
-                        with a bean property specified by our attributes.  This
-                        tag is only valid when nested inside a form tag body.
-                        </p>
-
-                        <p>This tag operates in two modes, depending upon the
-                        state of the <code>multiple</code> attribute, which
-                        affects the data type of the associated property you
-                        should use:</p>
-                        <ul>
-                        <li><em>multiple="true" IS NOT selected</em> -
-                            The corresponding property should be a scalar
-                            value of any supported data type.</li>
-                        <li><em>multiple="true" IS selected</em> -
-                            The corresponding property should be an array
-                            of any supported data type.</li>
-                        </ul>
-
-                        <p><strong>WARNING</strong>:  In order to correctly
-                        recognize cases where no selection at all is made, the
-                        <code>ActionForm</code> bean associated with this form
-                        must include a statement resetting the scalar property
-                        to a default value (if <code>multiple</code> is not
-                        set), or the array property to zero length (if
-                        <code>multiple</code> is set) in the
-                        <code>reset()</code> method.</p>
-        </info>
-
-
-        <attribute>
-                <name>alt</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The alternate text for this element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>altKey</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The message resources key of the alternate text for this
-                element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-          <name>disabled</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-          <info>
-          Set to <code>true</code> if this input field should be
-          disabled.
-          </info>
-        </attribute>
-
-        <attribute>
-            <name>indexed</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Valid only inside of logic:iterate tag.
-                If <code>true</code> then name of the html tag will be rendered as
-                "id[34].propertyName". Number in brackets will be generated
-                for every iteration and taken from ancestor logic:iterate tag.
-            </info>
-        </attribute>
-
-                <attribute>
-                        <name>multiple</name>
-                        <required>false</required>
-                        <rtexprvalue>true</rtexprvalue>
-                        <info>
-                                If set to any arbitrary value, the rendered
-                                select element will support
-                                multiple selections.
-                        </info>
-                </attribute>
-
-        <attribute>
-            <name>name</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The attribute name of the bean whose properties are consulted
-                to determine which option should be pre-selected when rendering
-                this input field.  If not specified, the bean associated with
-                the enclosing <code>&lt;html:form&gt;</code> tag is utilized.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onblur</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onchange</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus and its value has changed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse click.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>ondblclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse double click.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onfocus</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives input
-                focus.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>onkeydown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeypress</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed and released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeyup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousedown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the mouse
-                pointer and a mouse button is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousemove</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and the pointer is moved.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseout</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was under the
-                mouse pointer but the pointer was moved outside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseover</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was not under
-                the mouse pointer but the pointer is moved inside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and a mouse button is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>property</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Name of the request parameter that will be included with this
-                submission, set to the specified value.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS styles to be applied to this HTML element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>tabindex</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The tab order (ascending positive integers) for this element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>size</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The number of available options displayed at one time.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>title</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-            <p>The advisory title for this element.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>titleKey</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-            <p>The message resources key for the advisory title
-            for this element.</p>
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>value</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The value to compare with for marking an option selected.
-            </info>
-        </attribute>
-    </tag>
-
-
-    <tag>
-
-        <name>submit</name>
-        <summary>
-            Render A Submit Button
-        </summary>
-        <tagclass>org.apache.struts.taglib.html.SubmitTag</tagclass>
-        <info>
-            Renders an HTML &lt;input&gt; element of type <code>submit</code>.
-            <p>
-             If a graphical button is needed (a button with an image), then the
-             <a href="#image"><code>image</code></a> tag is more appropriate.
-            </p>
-        </info>
-
-        <attribute>
-            <name>accesskey</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The keyboard character used to move focus immediately to this
-                element.
-            </info>
-        </attribute>
-
-        <attribute>
-                <name>alt</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The alternate text for this element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>altKey</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The message resources key of the alternate text for this
-                element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-          <name>disabled</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-          <info>
-          Set to <code>true</code> if this input field should be
-          disabled.
-          </info>
-        </attribute>
-
-        <attribute>
-            <name>indexed</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Valid only inside of logic:iterate tag.  If <code>true</code>
-                then name of the html tag will be rendered as
-                "propertyName[34]". Number in brackets will be generated for
-                every iteration and taken from ancestor logic:iterate tag.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onblur</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onchange</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus and its value has changed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse click.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>ondblclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse double click.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onfocus</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives input
-                focus.
-            </info>
-        </attribute>
-
-
-        <attribute>
-            <name>onkeydown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeypress</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed and released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeyup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousedown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the mouse
-                pointer and a mouse button is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousemove</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and the pointer is moved.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseout</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was under the
-                mouse pointer but the pointer was moved outside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseover</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was not under
-                the mouse pointer but the pointer is moved inside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and a mouse button is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>property</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Name of the request parameter that will be included with this
-                submission, set to the specified value.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS styles to be applied to this HTML element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>tabindex</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The tab order (ascending positive integers) for this element.
-            </info>
-        </attribute>
-
-                <attribute>
-                  <name>title</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The advisory title for this element.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>titleKey</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The message resources key for the advisory title
-                  for this element.</p>
-                  </info>
-                </attribute>
-
-        <attribute>
-            <name>value</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The value of the button label.
-            </info>
-        </attribute>
-    </tag>
-
-    <tag>
-
-        <name>text</name>
-        <summary>
-            Render An Input Field of Type text
-        </summary>
-        <tagclass>org.apache.struts.taglib.html.TextTag</tagclass>
-        <info>
-            Render an input button of type text.  This tag is only valid when nested
-                inside a form tag body.
-        </info>
-
-        <attribute>
-            <name>accesskey</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The keyboard character used to move focus immediately to this
-                element.
-            </info>
-        </attribute>
-
-        <attribute>
-                <name>alt</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The alternate text for this element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>altKey</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The message resources key of the alternate text for this
-                element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-          <name>disabled</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-          <info>
-          Set to <code>true</code> if this input field should be
-          disabled.
-          </info>
-        </attribute>
-
-        <attribute>
-            <name>indexed</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Valid only inside of logic:iterate tag.
-                If <code>true</code> then name of the html tag will be rendered as
-                "id[34].propertyName". Number in brackets will be generated
-                for every iteration and taken from ancestor logic:iterate tag.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>maxlength</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Maximum number of input characters to accept. [No limit]
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>name</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The attribute name of the bean whose properties are consulted
-                when rendering the current value of this input field. If not
-                specified, the bean associated with the form tag we are nested
-                within is utilized.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onblur</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onchange</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus and its value has changed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse click.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>ondblclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse double click.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onfocus</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives input
-                focus.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeydown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeypress</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed and released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeyup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousedown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the mouse
-                pointer and a mouse button is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousemove</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and the pointer is moved.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseout</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was under the
-                mouse pointer but the pointer was moved outside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseover</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was not under
-                the mouse pointer but the pointer is moved inside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and a mouse button is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>property</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Name of this input field, and the name of the corresponding bean
-                property if value is not specified. The corresponding bean property
-                (if any) must be of type String.
-            </info>
-        </attribute>
-
-        <attribute>
-          <name>readonly</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-          <info>
-          Set to <code>true</code> if this input field should be
-          read only.
-          </info>
-        </attribute>
-
-        <attribute>
-            <name>size</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Number of character positions to allocate. [Browser default]
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS styles to be applied to this HTML element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>tabindex</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The tab order (ascending positive integers) for this element.
-            </info>
-        </attribute>
-
-                <attribute>
-                  <name>title</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The advisory title for this element.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>titleKey</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The message resources key for the advisory title
-                  for this element.</p>
-                  </info>
-                </attribute>
-
-        <attribute>
-            <name>value</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Value to which this field should be initialized. [Use the
-                corresponding bean property value]
-            </info>
-        </attribute>
-
-    </tag>
-
-
-    <tag>
-
-        <name>textarea</name>
-        <summary>
-            Render A Textarea
-        </summary>
-        <tagclass>org.apache.struts.taglib.html.TextareaTag</tagclass>
-        <info>
-            Render a textarea element.  This tag is only valid when nested
-                inside a form tag body.
-        </info>
-
-        <attribute>
-            <name>accesskey</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The keyboard character used to move focus immediately to this
-                element.
-            </info>
-        </attribute>
-
-        <attribute>
-                <name>alt</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The alternate text for this element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-                <name>altKey</name>
-                <required>false</required>
-                <rtexprvalue>true</rtexprvalue>
-                <info>
-                <p>The message resources key of the alternate text for this
-                element.</p>
-                </info>
-        </attribute>
-
-        <attribute>
-            <name>cols</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The number of columns to display.
-            </info>
-        </attribute>
-
-        <attribute>
-          <name>disabled</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-          <info>
-          Set to <code>true</code> if this input field should be
-          disabled.
-          </info>
-        </attribute>
-
-        <attribute>
-            <name>indexed</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Valid only inside of logic:iterate tag.
-                If <code>true</code> then name of the html tag will be rendered as
-                "id[34].propertyName". Number in brackets will be generated
-                for every iteration and taken from ancestor logic:iterate tag.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>name</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The attribute name of the bean whose properties are consulted
-                when rendering the current value of this input field. If not
-                specified, the bean associated with the form tag we are nested
-                within is utilized.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onblur</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onchange</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element loses input
-                focus and its value has changed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse click.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>ondblclick</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives a
-                mouse double click.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onfocus</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element receives input
-                focus.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeydown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeypress</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is depressed and released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onkeyup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element has focus and a
-                key is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousedown</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the mouse
-                pointer and a mouse button is depressed.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmousemove</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and the pointer is moved.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseout</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was under the
-                mouse pointer but the pointer was moved outside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseover</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element was not under
-                the mouse pointer but the pointer is moved inside the element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>onmouseup</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                JavaScript event handler executed when this element is under the
-                mouse pointer and a mouse button is released.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>property</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Name of this input field, and the name of the corresponding bean
-                property if value is not specified. The corresponding bean property
-                (if any) must be of type String.
-            </info>
-        </attribute>
-
-        <attribute>
-          <name>readonly</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-          <info>
-          Set to <code>true</code> if this input field should be
-          read only.
-          </info>
-        </attribute>
-
-        <attribute>
-            <name>rows</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The number of rows to display.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>style</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS styles to be applied to this HTML element.
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleClass</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                CSS stylesheet class to be applied to this HTML element
-                (renders a "class" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>styleId</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Identifier to be assigned to this HTML element (renders
-                an "id" attribute).
-            </info>
-        </attribute>
-
-        <attribute>
-            <name>tabindex</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                The tab order (ascending positive integers) for this element.
-            </info>
-        </attribute>
-
-                <attribute>
-                  <name>title</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The advisory title for this element.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>titleKey</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The message resources key for the advisory title
-                  for this element.</p>
-                  </info>
-                </attribute>
-
-        <attribute>
-            <name>value</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-            <info>
-                Value to which this field should be initialized. [Use the
-                corresponding bean property value]
-            </info>
-        </attribute>
-
-
-    </tag>
-    
-    
-    <tag>
-          <name>xhtml</name>
-          <summary>Render HTML tags as XHTML</summary>
-          <tagclass>org.apache.struts.taglib.html.XhtmlTag</tagclass>
-          <bodycontent>empty</bodycontent>
-          <info>
-          <p>
-            Using this tag in a page tells all other html taglib tags
-            to render themselves as XHTML.  This is useful
-            when composing pages with JSP includes or Tiles. 
-            &lt;html:html xhtml="true"&gt; has a similar effect.
-          </p>
-          <p>
-          	<strong>Note</strong>: Included pages do not inherit the rendering
-          	style of the including page.  Each JSP fragment or Tile must use this
-          	tag to render as XHTML.  
-          </p>
-          </info>
-
-        </tag>
-
-</taglib>
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/struts-logic.xml b/build-legacy/core/xdocs/userGuide/struts-logic.xml
deleted file mode 100644
index 15d1fe1..0000000
--- a/build-legacy/core/xdocs/userGuide/struts-logic.xml
+++ /dev/null
@@ -1,1741 +0,0 @@
-<?xml version="1.0"?>
-<document url="struts-logic.html" authors="false">
-
-<properties>
-  <title>The Struts Framework Project - Logic Tags</title>
-</properties>
-
-<body>
-
-<taglib>
-
-  <tlibversion>1.0</tlibversion>
-  <jspversion>1.1</jspversion>
-  <shortname>logic</shortname>
-  <display-name>Struts Logic Tags</display-name>
-  <uri>http://jakarta.apache.org/struts/tags-logic</uri>
-  <info>
-  <p>This tag library contains tags that are useful in managing conditional
-  generation of output text, looping over object collections for
-  repetitive generation of output text, and application flow management.</p>
-
-  <p>For tags that do value comparisons (<code>equal</code>,
-  <code>greaterEqual</code>, <code>greaterThan</code>, <code>lessEqual</code>,
-  <code>lessThan</code>, <code>notEqual</code>), the following rules apply:</p>
-  <ul>
-  <li>The specified value is examined.  If it can be converted successfully
-      to a <code>double</code> or a <code>long</code>, it is assumed that the
-      ultimate comparison will be numeric (either floating point or integer).
-      Otherwise, a String comparison will be performed.</li>
-  <li>The variable to be compared to is retrieved, based on the selector
-      attribute(s) (<code>cookie</code>, <code>header</code>,
-      <code>name</code>, <code>parameter</code>, <code>property</code>)
-      present on this tag.  It will be converted to the appropriate type
-      for the comparison, as determined above.</li>
-  <li>If the specified variable or property returns null, it will be
-      coerced to a zero-length string before the comparison occurs.</li>
-  <li>The specific comparison for this tag will be performed, and the nested
-      body content of this tag will be evaluated if the comparison returns
-      a <code>true</code> result.</li>
-  </ul>
-
-  <p>For tags that do substring matching (<code>match</code>,
-  <code>notMatch</code>), the following rules apply:</p>
-  <ul>
-  <li>The specified variable is retrieved, based on the selector attribute(s)
-      (<code>cookie</code>, <code>header</code>, <code>name</code>,
-      <code>parameter</code>, <code>property</code>) present on this tag.
-      The variable is converted to a String, if necessary.</li>
-  <li>A request time exception will be thrown if the specified variable
-      cannot be retrieved, or has a null value.</li>
-  <li>The specified value is checked for existence as a substring of the
-      variable, in the position specified by the <code>location</code>
-      attribute, as follows:  at the beginning (if location is set to
-      <code>start</code>), at the end (if location is set to
-      <code>end</code>), or anywhere (if location is not specified).</li>
-  </ul>
-
-  <p>Many of the tags in this tag library will throw a
-  <code>JspException</code> at runtime when they are utilized incorrectly
-  (such as when you specify an invalid combination of tag attributes).  JSP
-  allows you to declare an "error page" in the <code>&lt;%@ page %&gt;</code>
-  directive.  If you wish to process the actual exception that caused the
-  problem, it is passed to the error page as a request attribute under key
-  <code>org.apache.struts.action.EXCEPTION</code>.</p>
-
-  </info>
-
-
-  <tag>
-
-    <name>empty</name>
-    <summary>
-    Evaluate the nested body content of this tag if the requested variable is
-    either <code>null</code> or an empty string.
-    </summary>
-    <tagclass>org.apache.struts.taglib.logic.EmptyTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <since>Struts 1.1</since>
-    <info>
-    <p>This tag evaluates its nested body content only if the specified value
-    is either absent (i.e. <code>null</code>), an empty string (i.e. a
-    <code>java.lang.String</code> with a length of zero), or an empty
-    <code>java.util.Collection</code> or <code>java.util.Map</code> (tested by
-    the .isEmpty() method on the respective interface).</p>
-    
-    <p>
-    <strong>JSTL</strong>:  The equivalent JSTL tag is &lt;c:if&gt; using the 
-    <code>empty</code> operator.  For example,
-    <br/>
-    <code>
-    	&lt;c:if test="${empty sessionScope.myBean.myProperty}"&gt;
-    	  do something
-    	&lt;/c:if&gt;
-    </code>
-    </p>
-    </info>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the JSP bean specified by this
-      attribute, if <code>property</code> is not specified, or the value
-      of the specified property of this bean, if <code>property</code>
-      is specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the property (of the bean specified
-      by the <code>name</code> attribute) specified by this attribute.
-      The property reference can be simple, nested, and/or indexed.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The bean scope within which to search for the bean named by the
-      <code>name</code> property, or "any scope" if not specified.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>equal</name>
-    <summary>
-    Evaluate the nested body content of this tag if the requested
-    variable is equal to the specified value.
-    </summary>
-    <tagclass>org.apache.struts.taglib.logic.EqualTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-    <p>Compares the variable specified by one of the selector attributes
-    against the specified constant value.  The nested body content of this
-    tag is evaluated if the variable and value are <strong>equal</strong>.
-    </p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the value of the cookie whose
-      name is specified by this attribute.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the value of the header whose
-      name is specified by this attribute.  The name match is performed
-      in a case insensitive manner.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the JSP bean specified by this
-      attribute, if <code>property</code> is not specified, or the value
-      of the specified property of this bean, if <code>property</code>
-      is specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the first, or only, value of the
-      request parameter specified by this attribute.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the property (of the bean specified
-      by the <code>name</code> attribute) specified by this attribute.
-      The property reference can be simple, nested, and/or indexed.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The bean scope within which to search for the bean named by the
-      <code>name</code> property, or "any scope" if not specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The constant value to which the variable, specified by other
-      attribute(s) of this tag, will be compared.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>forward</name>
-    <summary>
-    Forward control to the page specified by the specified ActionForward
-    entry.
-    </summary>
-    <tagclass>org.apache.struts.taglib.logic.ForwardTag</tagclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-    <p>Performs a <code>PageContext.forward()</code> or
-    <code>HttpServletResponse.sendRedirect()</code> call for the global
-    <code>ActionForward</code> entry for the specified name.  URL
-    rewriting will occur automatically if a redirect is performed.</p>
-    </info>
-
-    <attribute>
-      <name>name</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>
-      	The logical name of the global <code>ActionForward</code> entry
-      	that identifies the destination, and forwarding approach, to be used.
-        <strong>Note</strong>: forwarding to Tiles definitions is not supported
-        from this tag.  You should forward to them from an Action subclass.
-      </p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>greaterEqual</name>
-    <summary>
-    Evaluate the nested body content of this tag if the requested
-    variable is greater than or equal to the specified value.
-    </summary>
-    <tagclass>org.apache.struts.taglib.logic.GreaterEqualTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-    <p>Compares the variable specified by one of the selector attributes
-    against the specified constant value.  The nested body content of this
-    tag is evaluated if the variable is <strong>greater than or equal</strong>
-    to the value.</p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the value of the cookie whose
-      name is specified by this attribute.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the value of the header whose
-      name is specified by this attribute.  The name match is performed
-      in a case insensitive manner.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the JSP bean specified by this
-      attribute, if <code>property</code> is not specified, or the value
-      of the specified property of this bean, if <code>property</code>
-      is specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the first, or only, value of the
-      request parameter specified by this attribute.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the property (of the bean specified
-      by the <code>name</code> attribute) specified by this attribute.
-      The property reference can be simple, nested, and/or indexed.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The bean scope within which to search for the bean named by the
-      <code>name</code> property, or "any scope" if not specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The constant value to which the variable, specified by other
-      attribute(s) of this tag, will be compared.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>greaterThan</name>
-    <summary>
-    Evaluate the nested body content of this tag if the requested
-    variable is greater than the specified value.
-    </summary>
-    <tagclass>org.apache.struts.taglib.logic.GreaterThanTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-    <p>Compares the variable specified by one of the selector attributes
-    against the specified constant value.  The nested body content of this
-    tag is evaluated if the variable is <strong>greater than</strong>
-    the value.</p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the value of the cookie whose
-      name is specified by this attribute.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the value of the header whose
-      name is specified by this attribute.  The name match is performed
-      in a case insensitive manner.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the JSP bean specified by this
-      attribute, if <code>property</code> is not specified, or the value
-      of the specified property of this bean, if <code>property</code>
-      is specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the first, or only, value of the
-      request parameter specified by this attribute.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the property (of the bean specified
-      by the <code>name</code> attribute) specified by this attribute.
-      The property reference can be simple, nested, or indexed.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The bean scope within which to search for the bean named by the
-      <code>name</code> property, or "any scope" if not specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The constant value to which the variable, specified by other
-      attribute(s) of this tag, will be compared.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>iterate</name>
-    <summary>
-    Repeat the nested body content of this tag over a specified collection.
-    </summary>
-    <tagclass>org.apache.struts.taglib.logic.IterateTag</tagclass>
-    <teiclass>org.apache.struts.taglib.logic.IterateTei</teiclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-    <p>Repeats the nested body content of this tag once for every element
-    of the specified collection, which must be an <code>Iterator</code>,
-    a <code>Collection</code>, a <code>Map</code> (whose values are to be
-    iterated over), or an array.  The collection to be iterated over must be
-    specified in one of the following ways:</p>
-    <ul>
-    <li>As a runtime expression specified as the value of the
-        <code>collection</code> attribute.</li>
-    <li>As a JSP bean specified by the <code>name</code> attribute.</li>
-    <li>As the property, specified by the <code>property</code>, of the
-        JSP bean specified by the <code>name</code> attribute.</li>
-    </ul>
-
-    <p>The collection to be iterated over MUST conform to one of the following
-    requirements in order for iteration to be successful:</p>
-    <ul>
-    <li>An array of Java objects or primitives.</li>
-
-    <li>An implementation of <code>java.util.Collection</code>, including
-        <code>ArrayList</code> and <code>Vector</code>.</li>
-    <li>An implementation of <code>java.util.Enumeration</code>.</li>
-    <li>An implementation of <code>java.util.Iterator</code>.</li>
-    <li>An implementation of <code>java.util.Map</code>, including
-        <code>HashMap</code>, <code>Hashtable</code>, and
-        <code>TreeMap</code>.  <strong>NOTE</strong> - See below for
-        additional information about accessing Maps.</li>
-    </ul>
-
-    <p>Normally, each object exposed by the iterate tag is an element
-    of the underlying collection you are iterating over.  However, if you
-    iterate over a <code>Map</code>, the exposed object is of type
-    <code>Map.Entry</code> that has two properties:</p>
-    <ul>
-    <li><code>key</code> - The key under which this item is stored in the
-        underlying Map.</li>
-    <li><code>value</code> - The value that corresponds to this key.</li>
-    </ul>
-
-    <p>So, if you wish to iterate over the values of a Hashtable, you would
-    implement code like the following:</p>
-    <code>
-    &lt;logic:iterate id="element" name="myhashtable"&gt;<br/>
-      Next element is &lt;bean:write name="element" property="value"/&gt;<br/>
-    &lt;/logic:iterate&gt;
-    </code>
-
-    <p>If the collection you are iterating over can contain <code>null</code>
-    values, the loop will still be performed but no page scope attribute
-    (named by the <code>id</code> attribute) will be created for that loop
-    iteration.  You can use the <code>&lt;logic:present&gt;</code> and
-    <code>&lt;logic:notPresent&gt;</code> tags to test for this case.</p>
-
-    </info>
-
-    <attribute>
-      <name>collection</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>A runtime expression that evaluates to a collection (conforming to
-      the requirements listed above) to be iterated over.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>id</name>
-      <required>true</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      <p>The name of a page scope JSP bean that will contain the current
-      element of the collection on each iteration, if it is not
-      <code>null</code>.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>indexId</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      <p>The name of a page scope JSP bean that will contain the current
-      index of the collection on each iteration.</p>
-      </info>
-    </attribute>
-    <attribute>
-      <name>length</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The maximum number of entries (from the underlying collection) to be
-      iterated through on this page.  This can be either an integer that
-      directly expresses the desired value, or the name of a JSP bean (in
-      any scope) of type <code>java.lang.Integer</code> that defines the
-      desired value.  If not present, there will be no limit on the number
-      of iterations performed.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The name of the JSP bean containing the collection to be iterated
-      (if <code>property</code> is not specified), or the JSP bean whose
-      property getter returns the collection to be iterated (if
-      <code>property</code> is specified).</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>offset</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The zero-relative index of the starting point at which entries from
-      the underlying collection will be iterated through.  This can be either
-      an integer that directly expresses the desired value, or the name of a
-      JSP bean (in any scope) of type <code>java.lang.Integer</code> that
-      defines the desired value.  If not present, zero is assumed (meaning
-      that the collection will be iterated from the beginning.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Name of the property, of the JSP bean specified by <code>name</code>,
-      whose getter returns the collection to be iterated.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The bean scope within which to search for the bean named by the
-      <code>name</code> property, or "any scope" if not specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>type</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Fully qualified Java class name of the element to be exposed through
-      the JSP bean named from the <code>id</code> attribute.  If not present,
-      no type conversions will be performed.  NOTE:  The actual elements of
-      the collection must be assignment-compatible with this class, or a
-      request time ClassCastException will occur.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>lessEqual</name>
-    <summary>
-    Evaluate the nested body content of this tag if the requested
-    variable is greater than or equal to the specified value.
-    </summary>
-    <tagclass>org.apache.struts.taglib.logic.LessEqualTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-    <p>Compares the variable specified by one of the selector attributes
-    against the specified constant value.  The nested body content of this
-    tag is evaluated if the variable is <strong>less than or equal</strong>
-    to the value.</p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the value of the cookie whose
-      name is specified by this attribute.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the value of the header whose
-      name is specified by this attribute.  The name match is performed
-      in a case insensitive manner.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the JSP bean specified by this
-      attribute, if <code>property</code> is not specified, or the value
-      of the specified property of this bean, if <code>property</code>
-      is specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the first, or only, value of the
-      request parameter specified by this attribute.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the property (of the bean specified
-      by the <code>name</code> attribute) specified by this attribute.
-      The property reference can be simple, nested, or indexed.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The bean scope within which to search for the bean named by the
-      <code>name</code> property, or "any scope" if not specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The constant value to which the variable, specified by other
-      attribute(s) of this tag, will be compared.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>lessThan</name>
-    <summary>
-    Evaluate the nested body content of this tag if the requested
-    variable is less than the specified value.
-    </summary>
-    <tagclass>org.apache.struts.taglib.logic.LessThanTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-    <p>Compares the variable specified by one of the selector attributes
-    against the specified constant value.  The nested body content of this
-    tag is evaluated if the variable is <strong>less than</strong>
-    the value.</p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the value of the cookie whose
-      name is specified by this attribute.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the value of the header whose
-      name is specified by this attribute.  The name match is performed
-      in a case insensitive manner.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the JSP bean specified by this
-      attribute, if <code>property</code> is not specified, or the value
-      of the specified property of this bean, if <code>property</code>
-      is specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the first, or only, value of the
-      request parameter specified by this attribute.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the property (of the bean specified
-      by the <code>name</code> attribute) specified by this attribute.
-      The property reference can be simple, nested, and/or indexed.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The bean scope within which to search for the bean named by the
-      <code>name</code> property, or "any scope" if not specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The constant value to which the variable, specified by other
-      attribute(s) of this tag, will be compared.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>match</name>
-    <summary>
-    Evaluate the nested body content of this tag if the specified value
-    is an appropriate substring of the requested variable.
-    </summary>
-    <tagclass>org.apache.struts.taglib.logic.MatchTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-    <p>Matches the variable specified by one of the selector attributes
-    (as a String) against the specified constant value.  If the value is
-    a substring (appropriately limited by the <code>location</code>
-    attribute), the nested body content of this tag is evaluated.</p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be matched is the value of the cookie whose
-      name is specified by this attribute.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be matched is the value of the header whose
-      name is specified by this attribute.  The name match is performed
-      in a case insensitive manner.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>location</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>If not specified, a match between the variable and the value may
-      occur at any position within the variable string.  If specified, the
-      match must occur at the specified location (either <code>start</code>
-      or <code>end</code>) of the variable string.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be matched is the JSP bean specified by this
-      attribute, if <code>property</code> is not specified, or the value
-      of the specified property of this bean, if <code>property</code>
-      is specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be matched is the first, or only, value of the
-      request parameter specified by this attribute.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be matched is the property (of the bean specified
-      by the <code>name</code> attribute) specified by this attribute.
-      The property reference can be simple, nested, and/or indexed.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The bean scope within which to search for the bean named by the
-      <code>name</code> property, or "any scope" if not specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The constant value which is checked for existence as a substring
-      of the specified variable.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-  <tag>
-
-    <name>messagesNotPresent</name>
-    <summary>
-    Generate the nested body content of this tag if the specified
-    message is not present in this request.
-    </summary>
-    <tagclass>org.apache.struts.taglib.logic.MessagesNotPresentTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <since>Struts 1.1</since>
-    <info>
-    <p>Evaluates the nested body content of this tag if
-       an <code>ActionMessages</code>
-       object, <code>ActionErrors</code> object, a String,
-       or a String array is not in request scope.  If
-       such a bean is not found, nothing will be rendered.
-    </p>
-    </info>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The parameter key to retrieve the message from request scope.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Name of the property for which messages should be
-         retrieved.  If not specified, all messages (regardless
-         of property) are retrieved.
-      </p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>message</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>By default the tag will retrieve the request scope bean it will
-         iterate over from the <code>Globals.ERROR_KEY</code> constant string,
-         but if this attribute is set to 'true' the request scope bean
-         will be retrieved from the <code>Globals.MESSAGE_KEY</code>
-         constant string.  Also if this is set to 'true', any value
-         assigned to the name attribute will be ignored.
-      </p>
-      </info>
-    </attribute>
-
-  </tag>
-
-  <tag>
-
-    <name>messagesPresent</name>
-    <summary>
-    Generate the nested body content of this tag if the specified
-    message is present in this request.
-    </summary>
-    <tagclass>org.apache.struts.taglib.logic.MessagesPresentTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <since>Struts 1.1</since>
-    <info>
-    <p>Evaluates the nested body content of this tag if
-       an <code>ActionMessages</code>
-       object, <code>ActionErrors</code> object, a String,
-       or a String array is in request scope.  If
-       such a bean is not found, nothing will be rendered.
-    </p>
-    </info>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The parameter key to retrieve the message from request scope.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Name of the property for which messages should be
-         retrieved.  If not specified, all messages (regardless
-         of property) are retrieved.
-      </p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>message</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>By default the tag will retrieve the request scope bean it will
-         iterate over from the <code>Globals.ERROR_KEY</code> constant string,
-         but if this attribute is set to 'true' the request scope bean
-         will be retrieved from the <code>Globals.MESSAGE_KEY</code>
-         constant string.  Also if this is set to 'true', any value
-         assigned to the name attribute will be ignored.
-      </p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>notEmpty</name>
-    <summary>
-    Evaluate the nested body content of this tag if the requested variable is
-    neither <code>null</code>, nor an empty string, nor an empty java.util.Collection
-    (tested by the .isEmpty() method on the java.util.Collection interface).
-    </summary>
-    <tagclass>org.apache.struts.taglib.logic.NotEmptyTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-    <p>This tag evaluates its nested body content only if the specified value
-    is present (i.e. not <code>null</code>) and is not an empty string (i.e. a
-    <code>java.lang.String</code> with a length of zero).</p>
-    
-    <p>
-    <strong>JSTL</strong>:  The equivalent JSTL tag is &lt;c:if&gt; using the 
-    <code>! empty</code> operator.  For example,
-    <br/>
-    <code>
-    	&lt;c:if test="${ ! empty sessionScope.myBean.myProperty}"&gt;
-    	  do something
-    	&lt;/c:if&gt;
-    </code>
-    </p>
-    </info>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the JSP bean specified by this
-      attribute, if <code>property</code> is not specified, or the value
-      of the specified property of this bean, if <code>property</code>
-      is specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the property (of the bean specified
-      by the <code>name</code> attribute) specified by this attribute.
-      The property reference can be simple, nested, and/or indexed.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The bean scope within which to search for the bean named by the
-      <code>name</code> property, or "any scope" if not specified.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>notEqual</name>
-    <summary>
-    Evaluate the nested body content of this tag if the requested
-    variable is not equal to the specified value.
-    </summary>
-    <tagclass>org.apache.struts.taglib.logic.NotEqualTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-    <p>Compares the variable specified by one of the selector attributes
-    against the specified constant value.  The nested body content of this
-    tag is evaluated if the variable and value are <strong>not equal</strong>.
-    </p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the value of the cookie whose
-      name is specified by this attribute.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the value of the header whose
-      name is specified by this attribute.  The name match is performed
-      in a case insensitive manner.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the JSP bean specified by this
-      attribute, if <code>property</code> is not specified, or the value
-      of the specified property of this bean, if <code>property</code>
-      is specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the first, or only, value of the
-      request parameter specified by this attribute.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be compared is the property (of the bean specified
-      by the <code>name</code> attribute) specified by this attribute.
-      The property reference can be simple, nested, and/or indexed.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The bean scope within which to search for the bean named by the
-      <code>name</code> property, or "any scope" if not specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The constant value to which the variable, specified by other
-      attribute(s) of this tag, will be compared.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>notMatch</name>
-    <summary>
-    Evaluate the nested body content of this tag if the specified value
-    is not an appropriate substring of the requested variable.
-    </summary>
-    <tagclass>org.apache.struts.taglib.logic.NotMatchTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-    <p>Matches the variable specified by one of the selector attributes
-    (as a String) against the specified constant value.  If the value is
-    not a substring (appropriately limited by the <code>location</code>
-    attribute), the nested body content of this tag is evaluated.</p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be matched is the value of the cookie whose
-      name is specified by this attribute.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be matched is the value of the header whose
-      name is specified by this attribute.  The name match is performed
-      in a case insensitive manner.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>location</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>If not specified, a match between the variable and the value may
-      occur at any position within the variable string.  If specified, the
-      match must occur at the specified location (either <code>start</code>
-      or <code>end</code>) of the variable string.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be matched is the JSP bean specified by this
-      attribute, if <code>property</code> is not specified, or the value
-      of the specified property of this bean, if <code>property</code>
-      is specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be matched is the first, or only, value of the
-      request parameter specified by this attribute.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The variable to be matched is the property (of the bean specified
-      by the <code>name</code> attribute) specified by this attribute.
-      The property reference can be simple, nested, and/or indexed.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The bean scope within which to search for the bean named by the
-      <code>name</code> property, or "any scope" if not specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The constant value which is checked for existence as a substring
-      of the specified variable.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>notPresent</name>
-    <summary>
-    Generate the nested body content of this tag if the specified
-    value is not present in this request.
-    </summary>
-    <tagclass>org.apache.struts.taglib.logic.NotPresentTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-    <p>Depending on which attribute is specified, this tag checks the
-    current request, and evaluates the nested body content of this tag
-    only if the specified value <strong>is not</strong> present.  Only one
-    of the attributes may be used in one occurrence of this tag, unless
-    you use the <code>property</code> attribute, in which case the
-    <code>name</code> attribute is also required.</p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Checks for the existence of a cookie with the specified name.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Checks for the existence of an HTTP header with the specified
-      name.  The name match is performed in a case insensitive manner.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Checks for the existence of a JSP bean, in any scope, with the
-      specified name.  If <code>property</code> is also specified, checks
-      for a non-null property value for the specified property.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Checks for the existence of at least one occurrence of the
-      specified request parameter on this request, even if the parameter
-      value is a zero-length string.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Checks for the existence of a non-null property value, returned
-      by a property getter method on the JSP bean (in any scope) that is
-      specified by the <code>name</code> attribute.  Property references
-      can be simple, nested, and/or indexed.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>role</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Checks whether the currently authenticated user (if any) has been
-      associated with the specified security role.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The bean scope within which to search for the bean named by the
-      <code>name</code> property, or "any scope" if not specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>user</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Checks whether the currently authenticated user principal has the
-      specified name.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-  <tag>
-
-    <name>present</name>
-    <summary>
-    Generate the nested body content of this tag if the specified
-    value is present in this request.
-    </summary>
-    <tagclass>org.apache.struts.taglib.logic.PresentTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-    <p>Depending on which attribute is specified, this tag checks the
-    current request, and evaluates the nested body content of this tag
-    only if the specified value <strong>is</strong> present.  Only one
-    of the attributes may be used in one occurrence of this tag, unless
-    you use the <code>property</code> attribute, in which case the
-    <code>name</code> attribute is also required.</p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Checks for the existence of a cookie with the specified name.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Checks for the existence of an HTTP header with the specified
-      name.  The name match is performed in a case insensitive manner.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Checks for the existence of a JSP bean, in any scope, with the
-      specified name.  If <code>property</code> is also specified, checks
-      for a non-null property value for the specified property.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Checks for the existence of at least one occurrence of the
-      specified request parameter on this request, even if the parameter
-      value is a zero-length string.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Checks for the existence of a non-null property value, returned
-      by a property getter method on the JSP bean (in any scope) that is
-      specified by the <code>name</code> attribute.  Property references
-      can be simple, nested, and/or indexed.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>role</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Checks whether the currently authenticated user (if any) has been
-      associated with any of the specified security roles. Use a comma-delimited
-      list to check for multiple roles. Example:
-      <code>&lt;logic:present role="role1,role2,role3"&gt;
-                code.....
-            &lt;/logic:present&gt;</code></p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>The bean scope within which to search for the bean named by the
-      <code>name</code> property, or "any scope" if not specified.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>user</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Checks whether the currently authenticated user principal has the
-      specified name.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-
-        <tag>
-
-                <name>redirect</name>
-                <summary>Render an HTTP Redirect</summary>
-                <tagclass>org.apache.struts.taglib.logic.RedirectTag</tagclass>
-                <body-content>empty</body-content>
-                <info>
-
-                <p>Performs an <code>HttpServletResponse.sendRedirect()</code>
-                call to the hyperlink specified by the attributes to this
-                tag.  URL rewriting will be applied automatically, to
-                maintain session state in the absence of cookies.</p>
-
-                <p>The base URL for this redirect is calculated based on
-                which of the following attributes you specify (you must
-                specify exactly one of them):</p>
-                <ul>
-                <li><em>forward</em> - Use the value of this attribute as the
-                    name of a global <code>ActionForward</code> to be looked
-                    up, and use the application-relative or context-relative
-                    URI found there.</li>
-                <li><em>href</em> - Use the value of this attribute unchanged.
-                    </li>
-                <li><em>page</em> - Use the value of this attribute as an
-                    application-relative URI, and generate a server-relative
-                    URI by including the context path.</li>
-                </ul>
-
-                <p>Normally, the redirect you specify with one of the
-                attributes described in the previous paragraph will be left
-                unchanged (other than URL rewriting if necessary).  However,
-                there are two ways you can append one or more dynamically
-                defined query parameters to the hyperlink -- specify a single
-                parameter with the <code>paramId</code> attribute (and its
-                associated attributes to select the value), or specify the
-                <code>name</code> (and optional <code>property</code>)
-                attributes to select a <code>java.util.Map</code> bean that
-                contains one or more parameter ids and corresponding values.
-                </p>
-
-                <p>To specify a single parameter, use the <code>paramId</code>
-                attribute to define the name of the request parameter to be
-                submitted.  To specify the corresponding value, use one of the
-                following approaches:</p>
-                <ul>
-                <li><em>Specify only the <code>paramName</code> attribute</em>
-                    - The named JSP bean (optionally scoped by the value of the
-                    <code>paramScope</code> attribute) must identify a value
-                    that can be converted to a String.</li>
-                <li><em>Specify both the <code>paramName</code> and
-                    <code>paramProperty</code> attributes</em> - The specified
-                    property getter method will be called on the JSP bean
-                    identified by the <code>paramName</code> (and optional
-                    <code>paramScope</code>) attributes, in order to select
-                    a value that can be converted to a String.</li>
-                </ul>
-
-                <p>If you prefer to specify a <code>java.util.Map</code> that
-                contains all of the request parameters to be added to the
-                hyperlink, use one of the following techniques:</p>
-                <ul>
-                <li><em>Specify only the <code>name</code> attribute</em> -
-                    The named JSP bean (optionally scoped by the value of
-                    the <code>scope</code> attribute) must identify a
-                    <code>java.util.Map</code> containing the parameters.</li>
-                <li><em>Specify both <code>name</code> and
-                    <code>property</code> attributes</em> - The specified
-                    property getter method will be called on the bean
-                    identified by the <code>name</code> (and optional
-                    <code>scope</code>) attributes, in order to return the
-                    <code>java.util.Map</code> containing the parameters.</li>
-                </ul>
-
-                <p>As the <code>Map</code> is processed, the keys are assumed
-                to be the names of query parameters to be appended to the
-                hyperlink.  The value associated with each key must be either
-                a String or a String array representing the parameter value(s).
-                If a String array is specified, more than one value for the
-                same query parameter name will be created.</p>
-                </info>
-
-                <attribute>
-                  <name>anchor</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>Optional anchor tag ("#xxx") to be added to the generated
-                  hyperlink.  Specify this value <strong>without</strong> any
-                  "#" character.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>forward</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>Logical name of a global <code>ActionForward</code> that
-                  contains the actual content-relative URI of the destination
-                  of this redirect.  This URI may be dynamically
-                  modified by the inclusion of query parameters, as described
-                  in the tag description.  You <strong>must</strong> specify
-                  exactly one of the <code>forward</code> attribute, the
-                  <code>href</code> attribute, the <code>linkName</code>
-                  attribute, or the <code>page</code> attribute.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>href</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The URL to which this redirect will transfer control.
-                  This URL may be dynamically modified
-                  by the inclusion of query parameters, as described in the
-                  tag description.  You <strong>must</strong> specify
-                  exactly one of the <code>forward</code> attribute, the
-                  <code>href</code> attribute, the <code>linkName</code>
-                  attribute, or the <code>page</code> attribute.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>name</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of a JSP bean that contains a <code>Map</code>
-                  representing the query parameters (if <code>property</code>
-                  is not specified), or a JSP bean whose property getter is
-                  called to return a <code>Map</code> (if <code>property</code>
-                  is specified).</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>page</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The context-relative path (beginning with a "/"
-                  character) to which this hyperlink will transfer control
-                  if activated.  This hyperlink may be dynamically modified
-                  by the inclusion of query parameters, as described in the
-                  tag description.  You <strong>must</strong> specify exactly
-                  one of the <code>forward</code> attribute, the
-                  <code>href</code> attribute, the <code>linkName</code>
-                  attribute, or the <code>page</code> attribute.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>paramId</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of the request parameter that will be dynamically
-                  added to the generated hyperlink.  The corresponding value is
-                  defined by the <code>paramName</code> and (optional)
-                  <code>paramProperty</code> attributes, optionally scoped by
-                  the <code>paramScope</code> attribute</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>paramName</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of a JSP bean that is a String containing the
-                  value for the request parameter named by <code>paramId</code>
-                  (if <code>paramProperty</code> is not specified), or a JSP
-                  bean whose property getter is called to return a String
-                  (if <code>paramProperty</code> is specified).  The JSP bean
-                  is constrained to the bean scope specified by the
-                  <code>paramScope</code> property, if it is specified.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>paramProperty</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of a property of the bean specified by the
-                  <code>paramName</code> attribute, whose return value must
-                  be a String containing the value of the request parameter
-                  (named by the <code>paramId</code> attribute) that will be
-                  dynamically added to this hyperlink.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>paramScope</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The scope within which to search for the bean specified
-                  by the <code>paramName</code> attribute.  If not specified,
-                  all scopes are searched.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>property</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The name of a property of the bean specified by the
-                  <code>name</code> attribute, whose return value must be
-                  a <code>java.util.Map</code> containing the query parameters
-                  to be added to the hyperlink.  You <strong>must</strong>
-                  specify the <code>name</code> attribute if you specify
-                  this attribute.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>scope</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                  <p>The scope within which to search for the bean specified
-                  by the <code>name</code> attribute.  If not specified, all
-                  scopes are searched.</p>
-                  </info>
-                </attribute>
-
-                <attribute>
-                  <name>transaction</name>
-                  <required>false</required>
-                  <rtexprvalue>true</rtexprvalue>
-                  <info>
-                    <p>Set to <code>true</code> if you want the current
-                    transaction control token included in the generated
-                    URL for this redirect.</p>
-                  </info>
-                </attribute>
-
-        </tag>
-
-
-</taglib>
-
-</body>
-
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/struts-nested.xml b/build-legacy/core/xdocs/userGuide/struts-nested.xml
deleted file mode 100644
index c7a5c7c..0000000
--- a/build-legacy/core/xdocs/userGuide/struts-nested.xml
+++ /dev/null
@@ -1,4052 +0,0 @@
-<?xml version="1.0"?>
-<document url="struts-nested.html" authors="false">
-
-<properties>
-  <title>The Struts Framework Project - Nested Tags</title>
-</properties>
-
-<body>
-
-<taglib>
-  <tlibversion>1.0</tlibversion>
-  <jspversion>1.1</jspversion>
-  <shortname>nested</shortname>
-  <display-name>Struts Nested Tags</display-name>
-  <uri>http://jakarta.apache.org/struts/tags-nested</uri>
-  <info>
-    <p>[Since Struts 1.1]</p>
-    <p>This tag library brings a nested context to the functionality of the
-    Struts custom tag library.</p>
-
-    <p>It's written in a layer that extends the current Struts tags, building on
-    their logic and functionality. The layer enables the tags to be aware of the
-    tags which surround them so they can correctly provide the nesting property
-    reference to the Struts system.
-    </p>
-
-    <p><strong>It's all about nesting beans...</strong><br />
-    A bean holds a reference to another bean internally, and all access to that
-    bean is handled through the current bean. This act of having one bean's
-    access go through another bean is known as "nesting beans". The first bean
-    is known as the parent bean. The bean which it references, is known as a
-    child bean. The terms "parent" and "child" are commonly used to describe the
-    model's hierarchy.
-    </p>
-
-    <p><strong>A simple example... </strong><br />
-     Take an object which represents a monkey. The monkey's job is to pick
-     bunches of bananas. On each bunch picked hangs many bananas. If this case
-     was translated to bean objects, the monkey object would have a reference to
-     the bunch objects he picked, and each bunch object would hold a reference
-     to the bananas hanging in the bunch.
-    </p>
-
-    <p><strong>To describe this... </strong><br />
-     The monkey object is the parent to the bunch object, and the bunch object
-     is a child of the monkey object. The bunch object is parent to its child
-     banana objects, and the child banana objects children of the bunch object.
-     The monkey is higher in the hierarchy than the bananas, and the bananas
-     lower in the hierarchy to the bunches.
-     </p>
-
-    <p>One special term to remember is for the most parent class, which is known
-    as the "root" object which starts the hierarchy.</p>
-
-    <p>Nested tags are all about efficiently managing this style of hierarchy
-    structure within your JSP markup.</p>
-
-    <p>
-    <strong>Important Note:</strong> Nearly all these tags extend tags from
-    other libraries to bring their functionality into the nested context.
-    Nesting relies on the tags working against the one bean model, and managing
-    the properties so that they become relative to the properties they are
-    nested within. In doing so, the tags will set the "name" attribute internally
-    (where applicable), and in many cases will rely on the "property" attribute
-    being set so it can be updated internally to become nested. The original tags
-    on occasion provide options that don't use the "name" and "property"
-    attributes. These uses will then fall outside the nested context, and will
-    most likely cause error. To take advantage of these options, markup using
-    the original tag for these cases. For an example see the
-    <a href="#options"><code>&lt;nested:options&gt;</code></a> tag.
-    </p>
-  </info>
-
-  <tag>
-    <name>nest</name>
-    <summary>
-      Defines a new level of nesting for child tags to reference to
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.NestedPropertyTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>
-      This tag provides a simple method of defining a logical nesting level in
-      the nested hierarchy. It run no explicit logic, is simply a place holder.
-      It also means you can remove the need for explicit setting of level
-      properties in child tags.
-      </p>
-      <p>
-      Just as the iterate tag provide a parent to other tags, this does the same
-      but there is no logic for iterating or otherwise.
-      </p>
-      <p>
-      Example...</p>
-      <pre>
-&lt;nested:write property="myNestedLevel.propertyOne" /&gt;
-&lt;nested:write property="myNestedLevel.propertyTwo" /&gt;
-&lt;nested:write property="myNestedLevel.propertyThree" /&gt;
-      </pre>
-      <p>Can instead become...</p>
-      <pre>
-&lt;nested:nest property="myNestedLevel" &gt;
-  &lt;nested:write property="propertyOne" /&gt;
-  &lt;nested:write property="propertyTwo" /&gt;
-  &lt;nested:write property="propertyThree" /&gt;
-&lt;/nested:nest &gt;
-      </pre>
-    </info>
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-        This specifies the property by which this tag and all child tags
-        will be relative to.
-      </info>
-    </attribute>
-  </tag>
-
-  <tag>
-    <name>writeNesting</name>
-    <summary>
-      Writes or makes a scripting variable of the current nesting level.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.NestedWriteNestingTag</tagclass>
-    <teiclass>org.apache.struts.taglib.nested.NestedWriteNestingTei</teiclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      This tag provides a way of accessing the nested property reference used by
-      the nested tags. Can expose a scripting variable, or simply write out the
-      value.
-    </info>
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-        If not supplied, will simply write out as if "./" or "this/" was supplied.
-      </info>
-    </attribute>
-    <attribute>
-      <name>id</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-        If <i>id</i> is supplied, then what would have been written out into the
-        response stream, will instead be made available as a String object
-        defined by the variable name provided.
-      </info>
-    </attribute>
-    <attribute>
-      <name>filter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-        true/false value, describing to the tag if the result if to be URLEncoded.
-        Helps JavaScript along if the result is required for URL hacking.
-      </info>
-    </attribute>
-  </tag>
-  <tag>
-    <name>root</name>
-    <summary>To start off a nested hierarchy without the need for a form</summary>
-    <tagclass>org.apache.struts.taglib.nested.NestedRootTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>
-        This tag is provided to allow the nested tags to find a common bean
-        reference without the need for a form and its relative overhead. As
-        long as the <code>name</code> attribute of this tag matches the name
-        of a bean in scope of the JSP (ie: Struts tags can find it via usual
-        means). For example you can load a bean for use with the
-        <code>jsp:useBean</code> tag.
-      </p>
-      <p>
-        The tag can also be used without specifying the <code>name</code>
-        attribute, but this is only in the case that the current JSP is a
-        dynamic include specified in another file. You will not be able to run
-        the tag without a name unless this inclusion is in place. Otherwise
-        the nested tags will not have the bean and property references that they
-        need to provide their logic.
-      </p>
-      <p>
-        <strong>Note</strong>: The access to a bean via the <code>name</code>
-        attribute takes priority over looking for the reference from other
-        parent tags. So if a name is specified, a bean will have to be there
-        waiting for it. It was made this way so that you could use separate
-        beans within a JSP that itself is an inclusion into another.
-      </p>
-    </info>
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-        The name of the bean by which all child nested tags will derive their
-        bean reference from.
-      </info>
-    </attribute>
-  </tag>
-
-
-<!-- BEAN extended tags
-********************************************************************************
-********************************************************************************
--->
-  <tag document-attributes="false">
-    <name>define</name>
-    <summary>Nested Extension -
-      Define a scripting variable based on the value(s) of the specified
-      bean property.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.bean.NestedDefineTag</tagclass>
-    <teiclass>org.apache.struts.taglib.nested.bean.NestedDefineTei</teiclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-bean.html#define"><code>&lt;bean:define&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>id</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>toScope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>type</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-
-  <tag document-attributes="false">
-
-    <name>message</name>
-    <summary>Nested Extension -
-    Render an internationalized message string to the response.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.bean.NestedMessageTag</tagclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-bean.html#message"><code>&lt;bean:message&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>arg0</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>arg1</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>arg2</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>arg3</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>arg4</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>bundle</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>key</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>locale</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-
-  <tag document-attributes="false">
-
-    <name>size</name>
-    <summary>Nested Extension -
-      Define a bean containing the number of elements in a Collection or Map.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.bean.NestedSizeTag</tagclass>
-    <teiclass>org.apache.struts.taglib.bean.SizeTei</teiclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-bean.html#size"><code>&lt;bean:size&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>collection</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>id</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-
-  <tag document-attributes="false">
-
-    <name>write</name>
-    <summary>Nested Extension -
-    Render the value of the specified bean property to the current
-    JspWriter.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.bean.NestedWriteTag</tagclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-bean.html#write"><code>&lt;bean:write&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>bundle</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>filter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>format</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>formatKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>ignore</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>locale</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-
-
-<!-- HTML extended tags
-********************************************************************************
-********************************************************************************
--->
-  <tag document-attributes="false">
-    <name>checkbox</name>
-    <summary>Nested Extension - Render A Checkbox Input Field</summary>
-    <tagclass>org.apache.struts.taglib.nested.html.NestedCheckboxTag</tagclass>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-html.html#checkbox"><code>&lt;html:checkbox&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>accesskey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>alt</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>altKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>disabled</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>indexed</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onblur</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onchange</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-
-    <attribute>
-      <name>ondblclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onfocus</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-
-    <attribute>
-      <name>onkeydown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeypress</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeyup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousedown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousemove</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseout</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseover</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>style</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleClass</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleId</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>tabindex</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>title</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>titleKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-  </tag>
-
-  <tag document-attributes="false">
-     <name>errors</name>
-     <summary>
-        Nested Extension - Conditionally display a set of accumulated error messages.
-     </summary>
-     <tagclass>org.apache.struts.taglib.nested.html.NestedErrorsTag</tagclass>
-
-     <bodycontent>empty</bodycontent>
-     <info>
-       <p>This tag is an extension of the
-       <a href="struts-html.html#errors"><code>&lt;html:errors&gt;</code></a>
-       tag. Please consult its documentation for information on tag attributes
-       and usage details.
-       </p>
-     </info>
-
-     <attribute>
-         <name>bundle</name>
-         <required>false</required>
-         <rtexprvalue>true</rtexprvalue>
-     </attribute>
-
-     <attribute>
-         <name>locale</name>
-         <required>false</required>
-         <rtexprvalue>true</rtexprvalue>
-     </attribute>
-
-     <attribute>
-       <name>name</name>
-       <required>false</required>
-       <rtexprvalue>true</rtexprvalue>
-     </attribute>
-
-     <attribute>
-       <name>property</name>
-       <required>false</required>
-       <rtexprvalue>true</rtexprvalue>
-     </attribute>
-  </tag>
-
-
-  <tag document-attributes="false">
-    <name>file</name>
-    <summary>Nested Extension -
-      Render A File Select Input Field
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.html.NestedFileTag</tagclass>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-html.html#file"><code>&lt;html:file&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>accesskey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>accept</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>alt</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>altKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>disabled</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>indexed</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>maxlength</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onblur</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onchange</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>ondblclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onfocus</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeydown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeypress</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeyup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousedown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousemove</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseout</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseover</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>size</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>style</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleClass</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleId</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>tabindex</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>title</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>titleKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-  </tag>
-
-  <tag document-attributes="false">
-    <name>form</name>
-    <summary>Nested Extension - Define An Input Form</summary>
-    <tagclass>org.apache.struts.taglib.nested.html.NestedFormTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-html.html#form"><code>&lt;html:form&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>action</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>enctype</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>focus</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>method</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onreset</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onsubmit</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>style</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleClass</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleId</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>target</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-
-  <tag document-attributes="false">
-   <name>hidden</name>
-    <summary>Nested Extension -
-        Render A Hidden Field
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.html.NestedHiddenTag</tagclass>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-html.html#hidden"><code>&lt;html:hidden&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>alt</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>altKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>indexed</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>title</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>titleKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-    
-    <attribute>
-        <name>styleId</name>
-        <required>false</required>
-        <rtexprvalue>true</rtexprvalue>
-        <info>
-            Identifier to be assigned to this HTML element (renders
-            an "id" attribute).
-        </info>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-  </tag>
-
-  <tag document-attributes="false">
-    <name>image</name>
-    <summary>Nested Extension -
-    Render an input tag of type "image"
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.html.NestedImageTag</tagclass>
-    <info>
-    <p>This tag is an extension of the
-    <a href="struts-html.html#image"><code>&lt;html:image&gt;</code></a>
-    tag. Please consult its documentation for information on tag attributes
-    and usage details.
-    </p>
-    </info>
-
-    <attribute>
-      <name>accesskey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>align</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>alt</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>altKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>border</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>bundle</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>disabled</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>indexed</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>locale</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onblur</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onchange</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>ondblclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onfocus</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeydown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeypress</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeyup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousedown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousemove</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseout</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseover</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>page</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>pageKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>src</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>srcKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>style</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleClass</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>tabindex</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>title</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>titleKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-
-  <tag document-attributes="false">
-    <name>img</name>
-    <summary>Nested Extension - Render an HTML "img" tag</summary>
-    <tagclass>org.apache.struts.taglib.nested.html.NestedImgTag</tagclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-    <p>This tag is an extension of the
-    <a href="struts-html.html#img"><code>&lt;html:img&gt;</code></a>
-    tag. Please consult its documentation for information on tag attributes
-    and usage details.
-    </p>
-    </info>
-
-    <attribute>
-      <name>accesskey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>align</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>alt</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>altKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>border</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>bundle</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>height</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>hspace</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>imageName</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>ismap</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>locale</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>lowsrc</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeydown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeypress</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeyup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>paramId</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>page</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>pageKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>paramName</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>paramProperty</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>paramScope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>src</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>srcKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>style</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleClass</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleId</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>title</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>titleKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>usemap</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>vspace</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>width</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-
-  <tag document-attributes="false">
-    <name>link</name>
-    <summary>Nested Extension - Render an HTML anchor or hyperlink</summary>
-    <tagclass>org.apache.struts.taglib.nested.html.NestedLinkTag</tagclass>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-html.html#link"><code>&lt;html:link&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-      </info>
-
-    <attribute>
-      <name>accesskey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>action</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>anchor</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>forward</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>href</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>indexed</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>indexId</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>linkName</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onblur</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>ondblclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onfocus</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeydown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeypress</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeyup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousedown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousemove</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseout</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseover</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>page</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>paramId</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>paramName</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>paramProperty</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>paramScope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>style</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleClass</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleId</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>tabindex</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>target</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>title</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>titleKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>transaction</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-
-   <tag document-attributes="false">
-      <name>messages</name>
-      <summary>
-         Nested Extension - Conditionally display a set of accumulated messages.
-      </summary>
-      <tagclass>org.apache.struts.taglib.nested.html.NestedMessagesTag</tagclass>
-      <teiclass>org.apache.struts.taglib.html.MessagesTei</teiclass>
-      <bodycontent>JSP</bodycontent>
-       <info>
-         <p>This tag is an extension of the
-         <a href="struts-html.html#messages"><code>&lt;html:messages&gt;</code></a>
-         tag. Please consult its documentation for information on tag attributes
-         and usage details.
-         </p>
-       </info>
-
-      <attribute>
-        <name>id</name>
-        <required>true</required>
-        <rtexprvalue>true</rtexprvalue>
-      </attribute>
-
-      <attribute>
-          <name>bundle</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-      </attribute>
-
-      <attribute>
-          <name>locale</name>
-          <required>false</required>
-          <rtexprvalue>true</rtexprvalue>
-      </attribute>
-
-      <attribute>
-        <name>name</name>
-        <required>false</required>
-        <rtexprvalue>true</rtexprvalue>
-      </attribute>
-
-      <attribute>
-        <name>property</name>
-        <required>false</required>
-        <rtexprvalue>true</rtexprvalue>
-      </attribute>
-
-      <attribute>
-        <name>header</name>
-        <required>false</required>
-        <rtexprvalue>true</rtexprvalue>
-      </attribute>
-
-      <attribute>
-        <name>footer</name>
-        <required>false</required>
-        <rtexprvalue>true</rtexprvalue>
-      </attribute>
-
-      <attribute>
-        <name>message</name>
-        <required>false</required>
-        <rtexprvalue>true</rtexprvalue>
-      </attribute>
-
-   </tag>
-
-  <tag document-attributes="false">
-    <name>multibox</name>
-    <summary>Nested Extension -
-        Render A Checkbox Input Field
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.html.NestedMultiboxTag</tagclass>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-html.html#multibox"><code>&lt;html:multibox&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>accesskey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>alt</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>altKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>disabled</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onblur</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onchange</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-
-    <attribute>
-      <name>ondblclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onfocus</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-
-    <attribute>
-      <name>onkeydown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeypress</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeyup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousedown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousemove</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseout</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseover</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>style</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleClass</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleId</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>tabindex</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>title</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>titleKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-
-  <tag document-attributes="false">
-    <name>options</name>
-    <summary>Nested Extension - Render a Collection of Select Options</summary>
-    <tagclass>org.apache.struts.taglib.nested.html.NestedOptionsTag</tagclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-html.html#options"><code>&lt;html:options&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-      <p>
-      <strong>Note:</strong> The nested context of this tag relies on the use
-      of the "property" property, and the internal use of the "name" property.
-      The nested tags rely on these properties and will attempt to set them
-      itself. The <code>&lt;html:options&gt;</code> tag this tag extended
-      allows other options for the tag which don't use these properties.
-      To take advantage of these options, markup using the
-      <code>&lt;html:options&gt;</code> tag instead of the nested tag.
-      </p>
-      <p>
-      For example, the "collections" option allows you to specify a separate
-      bean reference which itself is a list of objects with properties
-      to access the title and value parts of the html option tag. You can use
-      this in a nested context (the list is a property of a nested bean) by
-      using the nested define tag and the original options tag.
-      </p>
-<pre>
-&lt;nested:nest property="myNestedLevel" /&gt;
-  &lt;nested:define property="collectionList" /&gt;
-  &lt;html:options collection="collectionList"
-                  property="labelProperty"
-             valueProperty="valueProperty" /&gt;
-&lt;/nested:nest &gt;
-</pre>
-    </info>
-
-    <attribute>
-      <name>collection</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>labelName</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>labelProperty</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>style</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleClass</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-
-  <tag document-attributes="false">
-    <name>optionsCollection</name>
-    <summary>Nested Extension -
-        Render a Collection of Select Options
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.html.NestedOptionsCollectionTag</tagclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-html.html#optionsCollection"
-      ><code>&lt;html:optionsCollection&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>label</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>style</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleClass</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-  </tag>
-
-  <tag document-attributes="false">
-    <name>password</name>
-    <summary>Nested Extension -
-        Render A Password Input Field
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.html.NestedPasswordTag</tagclass>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-html.html#password"><code>&lt;html:password&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-
-    <attribute>
-      <name>accesskey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>alt</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>altKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>disabled</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>indexed</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>maxlength</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onblur</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onchange</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-
-    <attribute>
-      <name>ondblclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onfocus</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-
-    <attribute>
-      <name>onkeydown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeypress</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeyup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousedown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousemove</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseout</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseover</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>readonly</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>redisplay</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>style</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleClass</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleId</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>size</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>tabindex</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>title</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>titleKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-
-  <tag document-attributes="false">
-    <name>radio</name>
-    <summary>Nested Extension -
-        Render A Radio Button Input Field
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.html.NestedRadioTag</tagclass>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-html.html#radio"><code>&lt;html:radio&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>accesskey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>alt</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>altKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>disabled</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>indexed</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onblur</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onchange</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-
-    <attribute>
-      <name>ondblclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onfocus</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-
-    <attribute>
-      <name>onkeydown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeypress</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeyup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousedown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>style</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleClass</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleId</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>tabindex</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>title</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>titleKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-  </tag>
-
-  <tag document-attributes="false">
-    <name>select</name>
-    <summary>Nested Extension -
-    Render A Select Element
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.html.NestedSelectTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-html.html#select"><code>&lt;html:select&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>accesskey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>alt</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>altKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>disabled</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>indexed</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>multiple</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onblur</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onchange</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-
-    <attribute>
-      <name>ondblclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onfocus</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-
-    <attribute>
-      <name>onkeydown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeypress</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeyup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousedown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousemove</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseout</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseover</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>style</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleClass</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleId</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>tabindex</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>size</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>title</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>titleKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-  <tag document-attributes="false">
-
-    <name>submit</name>
-    <summary>Nested Extension - Render A Submit Button</summary>
-    <tagclass>org.apache.struts.taglib.nested.html.NestedSubmitTag</tagclass>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-html.html#submit"><code>&lt;html:submit&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>accesskey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>alt</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>altKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>disabled</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>indexed</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onblur</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onchange</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-
-    <attribute>
-      <name>ondblclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onfocus</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-
-    <attribute>
-      <name>onkeydown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeypress</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeyup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousedown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousemove</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseout</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseover</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>style</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleClass</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleId</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>tabindex</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>title</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>titleKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-  <tag document-attributes="false">
-
-    <name>text</name>
-    <summary>Nested Extension -
-        Render An Input Field of Type text
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.html.NestedTextTag</tagclass>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-html.html#text"><code>&lt;html:text&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-
-    <attribute>
-      <name>accesskey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>alt</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>altKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>disabled</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>indexed</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>maxlength</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onblur</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onchange</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>ondblclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onfocus</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeydown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeypress</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeyup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousedown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousemove</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseout</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseover</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>readonly</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>size</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>style</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleClass</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleId</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>tabindex</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>title</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>titleKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-  <tag document-attributes="false">
-
-    <name>textarea</name>
-    <summary>Nested Extension - Render A Textarea</summary>
-    <tagclass>org.apache.struts.taglib.nested.html.NestedTextareaTag</tagclass>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-html.html#textarea"><code>&lt;html:textarea&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>accesskey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>alt</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>altKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>cols</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>disabled</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>indexed</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onblur</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onchange</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>ondblclick</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onfocus</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeydown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeypress</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onkeyup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousedown</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmousemove</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseout</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseover</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>onmouseup</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>readonly</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>rows</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>style</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleClass</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>styleId</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>tabindex</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>title</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>titleKey</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-
-
-
-
-
-<!-- LOGIC extended tags
-********************************************************************************
-********************************************************************************
--->
-
-  <tag document-attributes="false">
-
-    <name>empty</name>
-    <summary>Nested Extension -
-    Evaluate the nested body content of this tag if the requested variable is
-    either <code>null</code> or an empty string.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.logic.NestedEmptyTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-logic.html#empty"><code>&lt;logic:empty&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-  <tag document-attributes="false">
-
-    <name>equal</name>
-    <summary>Nested Extension -
-    Evaluate the nested body content of this tag if the requested
-    variable is equal to the specified value.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.logic.NestedEqualTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-logic.html#equal"><code>&lt;logic:equal&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-  <tag document-attributes="false">
-
-    <name>greaterEqual</name>
-    <summary>Nested Extension - Evaluate the nested body content of this tag if the requested
-    variable is greater than or equal to the specified value.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.logic.NestedGreaterEqualTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-logic.html#greaterEqual"><code>&lt;logic:greaterEqual&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-  <tag document-attributes="false">
-
-    <name>greaterThan</name>
-    <summary>Nested Extension -
-      Evaluate the nested body content of this tag if the requested
-      variable is greater than the specified value.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.logic.NestedGreaterThanTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-logic.html#greaterThan"><code>&lt;logic:greaterThan&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-  <tag document-attributes="false">
-
-    <name>iterate</name>
-    <summary>Nested Extension -
-      Repeat the nested body content of this tag over a specified collection.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.logic.NestedIterateTag</tagclass>
-    <teiclass>org.apache.struts.taglib.nested.logic.NestedIterateTei</teiclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-logic.html#iterate"><code>&lt;logic:iterate&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>collection</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>id</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>indexId</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>length</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>offset</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>type</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-  <tag document-attributes="false">
-
-    <name>lessEqual</name>
-    <summary>Nested Extension -
-      Evaluate the nested body content of this tag if the requested
-      variable is greater than or equal to the specified value.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.logic.NestedLessEqualTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-logic.html#lessEqual"><code>&lt;logic:lessEqual&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-  <tag document-attributes="false">
-
-    <name>lessThan</name>
-    <summary>Nested Extension -
-      Evaluate the nested body content of this tag if the requested
-      variable is less than the specified value.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.logic.NestedLessThanTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-logic.html#lessThan"><code>&lt;logic:lessThan&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-  <tag document-attributes="false">
-
-    <name>match</name>
-    <summary>Nested Extension -
-      Evaluate the nested body content of this tag if the specified value
-      is an appropriate substring of the requested variable.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.logic.NestedMatchTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-logic.html#match"><code>&lt;logic:match&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>location</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-
-  <tag document-attributes="false">
-
-    <name>messagesNotPresent</name>
-    <summary>
-       Nested Extension -
-       Generate the nested body content of this tag if the specified
-       message is not present in this request.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.logic.NestedMessagesNotPresentTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-logic.html#messagesNotPresent"><code>&lt;logic:messagesNotPresent&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>message</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-
-  <tag document-attributes="false">
-
-    <name>messagesPresent</name>
-    <summary>
-       Nested Extension -
-       Generate the nested body content of this tag if the specified
-       message is present in this request.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.logic.NestedMessagesPresentTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-logic.html#messagesPresent"><code>&lt;logic:messagesPresent&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>message</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-
-
-  <tag document-attributes="false">
-
-    <name>notEmpty</name>
-    <summary>Nested Extension -
-      Evaluate the nested body content of this tag if the requested variable is
-      neither <code>null</code> nor an empty string.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.logic.NestedNotEmptyTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-logic.html#notEmpty"><code>&lt;logic:notEmpty&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-  <tag document-attributes="false">
-
-    <name>notEqual</name>
-    <summary>Nested Extension -
-      Evaluate the nested body content of this tag if the requested
-      variable is not equal to the specified value.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.logic.NestedNotEqualTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-logic.html#notEqual"><code>&lt;logic:notEqual&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-  <tag document-attributes="false">
-
-    <name>notMatch</name>
-    <summary>Nested Extension -
-      Evaluate the nested body content of this tag if the specified value
-      is not an appropriate substring of the requested variable.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.logic.NestedNotMatchTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-logic.html#notMatch"><code>&lt;logic:notMatch&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>location</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-  <tag document-attributes="false">
-
-    <name>notPresent</name>
-    <summary>Nested Extension -
-      Generate the nested body content of this tag if the specified
-      value is not present in this request.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.logic.NestedNotPresentTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-logic.html#notPresent"><code>&lt;logic:notPresent&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>role</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>user</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-  <tag document-attributes="false">
-
-    <name>present</name>
-    <summary>Nested Extension -
-      Generate the nested body content of this tag if the specified
-      value is present in this request.
-    </summary>
-    <tagclass>org.apache.struts.taglib.nested.logic.NestedPresentTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-    <info>
-      <p>This tag is an extension of the
-      <a href="struts-logic.html#present"><code>&lt;logic:present&gt;</code></a>
-      tag. Please consult its documentation for information on tag attributes
-      and usage details.
-      </p>
-    </info>
-
-    <attribute>
-      <name>cookie</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>header</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>parameter</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>property</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>role</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-    <attribute>
-      <name>user</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-    </attribute>
-
-  </tag>
-
-</taglib>
-
-</body>
-
-</document>
diff --git a/build-legacy/core/xdocs/userGuide/struts-tiles.xml b/build-legacy/core/xdocs/userGuide/struts-tiles.xml
deleted file mode 100644
index 04e3949..0000000
--- a/build-legacy/core/xdocs/userGuide/struts-tiles.xml
+++ /dev/null
@@ -1,822 +0,0 @@
-<?xml version="1.0"?>
-<document url="struts-tiles.html" authors="false">
-
-<properties>
-  <title>Tiles Tag Library</title>
-</properties>
-
-<body>
-
-
-<taglib>
-
-  <!-- ============== Tag Library Description Elements ============= -->
-
-  <tlibversion>1.0</tlibversion>
-  <jspversion>1.1</jspversion>
-  <shortname>tiles</shortname>
-  <display-name>Tiles Tag Library</display-name>
-  <uri>http://jakarta.apache.org/struts/tags-tiles</uri>
-  <info>
-    <p>This tag library provides tiles tags.</p>
-    <p>Tiles were previously called Components. For historical reasons, names, pages, components and templates
-    are used indifferently to design a tile. Also, a lot of tags and attribute names are
-    left for backward compatibility.</p>
-    <p>To know more about tags defined in this library, check the associated documentation:
-    tiles-doc.</p>
-  </info>
-
- <!-- ===================== Include Tags ====================== -->
-
-  <tag>
-    <name>insert</name>
-    <summary>
-    Insert a tiles/component/template.
-    </summary>
-    <info>
-    <p>Insert a tiles/component/template with the possibility to pass parameters
-    (called attribute).
-    A tile can be seen as a procedure that can take parameters or attributes.
-    <code>&lt;template:insert&gt;</code> allows to define these attributes and pass them to the inserted jsp page,
-    called template.
-    Attributes are defined using nested tag <code>&lt;template:put&gt;</code> or
-    <code>&lt;template:putList&gt;</code>.
-    </p>
-    <p>
-    You must specify one of this tag attribute :
-    </p>
-      <ul>
-      <li><code>template</code>, for inserting a tiles/component/template page,</li>
-      <li><code>component</code>, for inserting a tiles/component/template page, (same as template)</li>
-      <li><code>page</code> for inserting a JSP page, (same as template)</li>
-      <li><code>definition</code>, for inserting a definition from definitions factory</li>
-      <li><code>attribute</code>, surrounding tiles's attribute name whose value is used.
-        <br/>If attribute is associated to 'direct' flag (see put), and flag is true, write
-        attribute value (no insertion).
-      </li>
-      <li><code>name</code>, to let 'insert' determine the type of entities to insert. In this later
-      case, search is done in this order : definitions, tiles/components/templates, pages.
-      </li>
-      </ul>
-      <p>
-      In fact, Page, component and template, are equivalent as a tile, component or template are jsp page.
-      </p>
-      <p><strong>Example : </strong></p>
-        <pre><code>
-          &lt;template:insert page="/basic/myLayout.jsp" flush="true"&gt;
-            &lt;template:put name="title"  value="My first page" /&gt;
-            &lt;template:put name="header" value="/common/header.jsp" /&gt;
-            &lt;template:put name="footer" value="/common/footer.jsp" /&gt;
-            &lt;template:put name="menu"   value="/basic/menu.jsp" /&gt;
-            &lt;template:put name="body"   value="/basic/helloBody.jsp" /&gt;
-          &lt;/template:insert&gt;</code></pre>
-    </info>
-    <tagclass>org.apache.struts.taglib.tiles.InsertTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-
-    <attribute>
-      <name>template</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-        <p>A string representing the URI of a tile or template (a JSP page).</p>
-        <p>'page', 'component' and 'template' are synonyms : they have exactly the same behavior.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>component</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-        <p>Path (relative or absolute to webapps) of the component to insert.</p>
-        <p>'page', 'component' and 'template' are synonyms : they have exactly the same behavior.</p>
-      </info>
-   </attribute>
-
-    <attribute>
-      <name>page</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-        <p>Path (relative or absolute to webapps) of the page to insert.</p>
-        <p>'page', 'component' and 'template' are synonyms : they have exactly the same behavior.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>definition</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-        Name of the definition to insert. Definition are defined in a centralized file.
-        For now, only definition from factory can be inserted with this attribute.
-        To insert a definition defined with tag &lt;template:definition&gt;, use beanName="".
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>attribute</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-        Name of an attribute in current tile/component context. Value of this attribute is passed to
-        'name' (see attribute 'name').
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-        Name of an entity to insert. Search is done in this order : definition, attribute,
-        [tile/component/template/page].
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>beanName</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Name of the bean used as value. Bean is retrieved from specified context, if any. Otherwise,
-      method pageContext.findAttribute is used.
-      If beanProperty is also specified, retrieve value from the corresponding bean property.</p>
-      <p>If found bean (or property value) is instance of one of Attribute class (Direct,
-      Instance, ...), insertion is done according to the class type. Otherwise, the toString method is
-      called on the bean, and returned String is used as name to insert (see 'name' attribute).</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>beanProperty</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      Bean property name. If specified, value is retrieve from this property. Support nested/indexed
-      properties.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>beanScope</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      Scope into which bean is searched. If not specified, method pageContext.findAttribute is used.
-      Scope can be any JSP scope, 'component', or 'template'.
-      In these two later cases, bean is search in tile/component/template context.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>flush</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-        True or false. If true, current page out stream is flushed before insertion.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>ignore</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      If this attribute is set to true, and the attribute specified by the name
-      does not exist, simply return without writing anything. The default value is false, which will
-      cause a runtime exception to be thrown.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>role</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      If the user is in the specified role, the tag is taken into account;
-      otherwise, the tag is ignored (skipped).
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>controllerUrl</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Url of a controller called immediately before page is inserted.</p>
-      <p>
-      Url usually denote a Struts action. Controller (action) is used to prepare data
-      to be render by inserted Tile.
-      </p>
-      <p>See also controlerClass. Only one of controllerUrl or controllerClass should be used.</p>
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>controllerClass</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>Class type of a controller called immediately before page is inserted.</p>
-      <p>Controller is used to prepare data to be render by inserted Tile.</p>
-      <p>See also controlerUrl</p>
-      <p>Class must implements or extends one of the following :</p>
-      <ul>
-        <li>org.apache.struts.tiles.Controller</li>
-        <li>org.apache.struts.tiles.ControllerSupport</li>
-        <li>org.apache.struts.action.Action (wrapper org.apache.struts.action.ActionController is used)</li>
-      </ul>
-      <p>
-      See also controllerUrl. Only one of controllerUrl or controllerClass should be used.
-      </p>
-      </info>
-    </attribute>
-
-  </tag>
-
-  <tag>
-    <name>definition</name>
-    <summary>
-    Create a tile /component / template definition bean.
-    </summary>
-    <info>
-    Create a tile/component/template definition as a bean.
-    Newly created bean will be saved under specified "id", in the requested "scope".
-    Definition tag has same syntax as <code>insert</code> tag.
-    The new definition can extends a definition described in factory (XML file), and overload
-    any previously defined parameters.
-    </info>
-        <tagclass>org.apache.struts.taglib.tiles.DefinitionTag</tagclass>
-        <bodycontent>JSP</bodycontent>
-
-    <attribute>
-      <name>id</name>
-      <required>true</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      Specifies the name under which the newly created definition bean will be saved.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      Specifies the variable scope into which the newly defined bean will be created.
-      If not specified, the bean will be created in page scope.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>template</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      A string representing the URI of a tile/component/template (a JSP page).
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>page</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      URL of the template / component to insert. Same as "template".
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>role</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      Role to check before inserting this definition. If role is not defined for current user,
-      definition is not inserted. Checking is done at insert time, not during definition process.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>extends</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      Name of a parent definition that is used to initialize this new definition.
-      Parent definition is searched in definitions factory.
-      </info>
-    </attribute>
-
-  </tag>
-
-  <tag>
-    <name>put</name>
-    <summary>
-      Put an attribute into tile/component/template context.
-    </summary>
-    <info>
-      Define an attribute to pass to tile/component/template.
-      This tag can only be used inside 'insert' or 'definition' tag.
-      Value (or content) is specified using attribute 'value' (or 'content'), or using the tag body.
-      It is also possible to specify the type of the value :
-      <ul>
-      <li>string : Content is written directly.</li>
-      <li>page | template : Content is included from specified URL. Name is used as an URL.</li>
-      <li>definition : Content come from specified definition (from factory). Name is used as definition name.</li>
-      </ul>
-      If type is specified, it is taken into account by 'get' or 'insert' inside the inserted tile.
-      <p>If 'type' attribute is not specified, content is 'untyped', unless it comes from a typed bean.</p>
-      <p>Note that using 'direct="true"' is equivalent to 'type="string"'.</p>
-    </info>
-    <tagclass>org.apache.struts.taglib.tiles.PutTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-        Name of the attribute.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>value</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-        Attribute value. Could be a String or an Object.
-       Value can come from a direct assignment (value="aValue") or from a bean.
-       One of 'value' 'content' or 'beanName' must be present.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>content</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      Content that's put into tile scope.
-      Synonym to value. Attribute added for compatibility with JSP Template.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>direct</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      Determines how content is handled: true means content is
-      printed <em>direct</em>ly; false, the default, means content
-      is included.
-      This is another way to specify content type. If 'direct=true' content is 'string', if
-      'direct=false', content is 'page'.
-      Attribute added for compatibility with JSP Template.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>type</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      Specify content type: string, page, template or definition.
-      <ul>
-      <li>String : Content is printed directly.</li>
-      <li>page | template : Content is included from specified URL. Name is used as an URL.</li>
-      <li>definition : Value is the name of a definition defined in factory (xml file). Definition will be searched
-      in the inserted tile, in a <code>&lt;template:insert attribute="attributeName"&gt;</code> tag, where 'attributeName'
-      is the name used for this tag.</li>
-      </ul>
-      If 'type' attribute is not specified, content is 'untyped', unless it comes from a typed bean.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>beanName</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      Name of the bean used as value. Bean is retrieved from specified context, if any. Otherwise,
-      method pageContext.findAttribute is used.
-      If beanProperty is specified, retrieve value from the corresponding bean property.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>beanProperty</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      Bean property name. If specified, value is retrieve from this property. Support nested/indexed
-      properties.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>beanScope</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      Scope into which bean is searched. If not specified, method pageContext.findAttribute is used.
-      Scope can be any JSP scope, 'tile', 'component', or 'template'.
-      In these three later cases, bean is search in tile/component/template context.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>role</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      If the user is in the specified role, the tag is taken into account;
-      otherwise, the tag is ignored (skipped).
-      </info>
-    </attribute>
-
-  </tag>
-
-  <tag>
-    <name>putList</name>
-    <summary>
-      Declare a list that will be pass as attribute to tile.
-    </summary>
-    <info>
-      Declare a list that will be pass as attribute to tile.
-      List elements are added using the tag 'add'.
-      This tag can only be used inside 'insert' or 'definition' tag.
-    </info>
-    <tagclass>org.apache.struts.taglib.tiles.PutListTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-
-    <attribute>
-      <name>name</name>
-      <required>true</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-        Name of the list.
-      </info>
-    </attribute>
-  </tag>
-
-  <tag>
-    <name>add</name>
-    <summary>
-       Add an element to the surrounding list.
-       Equivalent to 'put', but for list element.
-    </summary>
-    <info>
-       Add an element to the surrounding list.
-       This tag can only be used inside putList tag.
-       Value can come from a direct assignment (value="aValue") or from a bean.
-       One of 'value' or 'beanName' must be present.
-    </info>
-    <tagclass>org.apache.struts.taglib.tiles.AddTag</tagclass>
-    <bodycontent>JSP</bodycontent>
-
-    <attribute>
-      <name>value</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-        Element value. Can be a String or Object.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>content</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      Element value. Can be a String or Object.
-      Synonym to value. Attribute added for compatibility with JSP Template.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>direct</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      Determines how content is handled: true means content is
-      printed <em>direct</em>ly; false, the default, means content
-      is included.
-      This is another way to specify content type. If 'direct=true' content is 'string', if
-      'direct=false', content is 'page'.
-      Attribute added for compatibility with JSP Template.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>type</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      Specify content type: string, page, template or instance.
-      <ul>
-      <li>String : Content is printed directly.</li>
-      <li>page | template : Content is included from specified URL. Name is used as an URL.</li>
-      <li>definition : Value denote a definition defined in factory (xml file). Definition will be searched
-      in the inserted tile, in a <code>&lt;insert attribute="attributeName"&gt;</code> tag, where 'attributeName'
-      is the name used for this tag.</li>
-      </ul>
-      If 'type' attribute is not specified, content is 'untyped', unless it comes from a typed bean.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>beanName</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      Name of the bean used as value. Bean is retrieved from specified context, if any. Otherwise,
-      method pageContext.findAttribute is used.
-      If beanProperty is specified, retrieve value from the corresponding bean property.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>beanProperty</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      Bean property name. If specified, value is retrieve from this property. Support nested/indexed
-      properties.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>beanScope</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-      Scope into which bean is searched. If not specified, method pageContext.findAttribute is used.
-      Scope can be any JSP scope, 'component', or 'template'.
-      In these two later cases, bean is search in tile/component/template context.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>role</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      <p>If the user is in the specified role, the tag is taken into account;
-      otherwise, the tag is ignored (skipped).</p>
-      <p>
-      The role isn't taken into account if &lt;add&gt; tag is used in a definition.</p>
-      </info>
-    </attribute>
-
-  </tag>
-
-  <tag>
-
-    <name>get</name>
-    <summary>
-    Gets the content from request scope that was put there by a
-    put tag.
-    </summary>
-    <tagclass>org.apache.struts.taglib.tiles.GetTag</tagclass>
-    <bodycontent>empty</bodycontent>
-    <info>
-    <p>Retrieve content from tile context and include it.</p>
-    <p>Take into account the 'type' attribute.</p>
-    </info>
-
-    <attribute>
-      <name>name</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      The name of the content to get from tile/component scope.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>ignore</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      If this attribute is set to true, and the attribute specified by the name
-      does not exist, simply return without writing anything. The default value is false, which will
-      cause a runtime exception to be thrown.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>flush</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-        True or false. If true, current page  out stream is flushed before insertion.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>role</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      If the user is in the specified role, the tag is taken into account;
-      otherwise, the tag is ignored (skipped).
-      </info>
-    </attribute>
-
-  </tag>
-
-  <tag>
-    <name>getAsString</name>
-    <summary>
-      Render the value of the specified tile/component/template attribute to the current JspWriter
-    </summary>
-    <info>
-      Retrieve the value of the specified tile/component/template attribute property, and render it to the current JspWriter as a String.
-      The usual toString() conversions is applied on found value.
-      <p>Throw a JSPException if named value is not found.</p>
-    </info>
-    <tagclass>org.apache.struts.taglib.tiles.GetAttributeTag</tagclass>
-    <bodycontent>empty</bodycontent>
-    <attribute>
-      <name>name</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-        Attribute name.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>ignore</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      If this attribute is set to true, and the attribute specified by the name
-      does not exist, simply return without writing anything. The default value is false, which will
-      cause a runtime exception to be thrown.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>role</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      If the user is in the specified role, the tag is taken into account;
-      otherwise, the tag is ignored (skipped).
-      </info>
-    </attribute>
-
-  </tag>
-
-  <tag>
-    <name>useAttribute</name>
-    <summary>
-      Use attribute value inside page.
-    </summary>
-    <info>
-      <p>
-      Declare a Java variable, and an attribute in the specified scope, using tile attribute value.
-      </p>
-      <p>
-      Java variable and attribute will have the name specified by 'id', or the original name if not
-      specified.
-      </p>
-    </info>
-    <tagclass>org.apache.struts.taglib.tiles.UseAttributeTag</tagclass>
-    <teiclass>org.apache.struts.taglib.tiles.UseAttributeTei</teiclass>
-    <bodycontent>empty</bodycontent>
-    <attribute>
-      <name>id</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-        Declared attribute and variable name.
-      </info>
-    </attribute>
-    <attribute>
-      <name>classname</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-        Class of the declared variable.
-      </info>
-    </attribute>
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-        Scope of the declared attribute. Default to 'page'.
-      </info>
-    </attribute>
-    <attribute>
-      <name>name</name>
-      <required>true</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-        Tile's attribute name.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>ignore</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      If this attribute is set to true, and the attribute specified by the name
-      does not exist, simply return without error. The default value is false, which will
-      cause a runtime exception to be thrown.
-      </info>
-    </attribute>
-
-  </tag>
-
-  <tag>
-    <name>importAttribute</name>
-    <summary>
-      Import Tile's attribute in specified context.
-    </summary>
-    <info>
-      Import attribute from tile to requested scope.
-      Attribute name and scope are optional. If not specified, all tile
-      attributes are imported in page scope.
-      Once imported, an attribute can be used as any other beans from jsp contexts.
-    </info>
-    <tagclass>org.apache.struts.taglib.tiles.ImportAttributeTag</tagclass>
-    <bodycontent>empty</bodycontent>
-    <attribute>
-      <name>name</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-        Tile's attribute name. If not specified, all attributes are imported.
-      </info>
-    </attribute>
-    <attribute>
-      <name>scope</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-        Scope into which attribute is imported. Default to page.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>ignore</name>
-      <required>false</required>
-      <rtexprvalue>true</rtexprvalue>
-      <info>
-      If this attribute is set to true, and the attribute specified by the name
-      does not exist, simply return without error. The default value is false, which will
-      cause a runtime exception to be thrown.
-      </info>
-    </attribute>
-
-  </tag>
-
-  <tag>
-    <name>initComponentDefinitions</name>
-    <summary>
-      Initialize Tile/Component definitions factory.
-    </summary>
-    <info>
-      <p>Initialize Tile/Components definitions factory.</p>
-      <p>
-      In order to use Tile/Component definitions factory, you need to initialize the factory.
-      This is generally done in a initializing servlet. In particular, it is done in
-      "ComponentActionServlet" if you use it.
-      If you don't initialize factory in a servlet, you can initialize it using this tag. You need
-      to provide the description file name, and optionally the factory classname.
-      Initialization is done only once, at the first call of this tag. Subsequent calls
-      are ignored (tag checks existence of the factory.
-      </p>
-    </info>
-    <tagclass>org.apache.struts.taglib.tiles.InitDefinitionsTag</tagclass>
-    <bodycontent>empty</bodycontent>
-    <attribute>
-      <name>file</name>
-      <required>true</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-        Definition file name.
-      </info>
-    </attribute>
-
-    <attribute>
-      <name>classname</name>
-      <required>false</required>
-      <rtexprvalue>false</rtexprvalue>
-      <info>
-        If specified, classname of the factory to create and initialized.
-      </info>
-    </attribute>
-
-  </tag>
-
-</taglib>
-
-</body>
-
-</document>
diff --git a/build-legacy/core/xdocs/using.xml b/build-legacy/core/xdocs/using.xml
deleted file mode 100644
index e8ec9f2..0000000
--- a/build-legacy/core/xdocs/using.xml
+++ /dev/null
@@ -1,193 +0,0 @@
-<?xml version="1.0"?>
-<document url="./using.xml">
-
-<!--
-// ======================================================================== 78
--->
-
-<properties>
-    <title>Using - The Apache Struts Web Application Framework</title>
-</properties>
-
-<body>
-
-<section name="Using Struts">
-
-    <p>
-    In the normal course of using an application framework like Struts,
-    you may wish to
-    </p>
-
-    <ul>
-
-    <li>
-        <a href="#Bugs">report a bug or feature request</a>,
-    </li>
-
-    <li>
-        <a href="#Patches">contribute a patch</a>,
-    </li>
-
-    <li>
-        <a href="#Lists">join the mailing lists</a>,
-    </li>
-
-    <li>
-        <a href="#Questions">post a question</a>,
-    </li>
-
-    <li>
-        or otherwise <a href="#Involved">become involved</a> with the Struts 
-        Community.
-    </li>
-
-    </ul>
-
-    </section>
-
-    <section name="Reporting Bugs and Feature Requests" href="Bugs">
-
-    <p>
-    Tracking of bug reports and enhancement requests for Struts is handled
-    through the <a href="http://jakarta.apache.org/site/bugs.html"> Apache Bug 
-    Database</a>. 
-    Please select <strong>Struts</strong> from the product list, along with 
-    the details of which component of Struts you feel this report
-    relates to, and details of your operating environment. 
-    You will automatically be notified by email as the status of your bug or
-    enhancement report changes. 
-    Please be sure to read
-    <a href="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html">How to 
-    Report Bugs Effectively</a> before posting.
-    </p>
-
-</section>
-
-<section name="Contributing Patches to Code or Documentation" href="Patches">
-
-    <p>
-    You can upload a proposed <a href="http://jakarta.apache.org/site/source.html#Patches">
-    patch</a> to either the code or documentation by creating a feature request in
-    <a href="#Bugs">Bugzilla</a>. 
-    <strong>After creating the ticket</strong>, you can go back and upload a file 
-    containing your patch.
-    </p>
-
-    <p>
-    The documentation is maintained in the <code>doc</code> folder of the Subversion 
-    repository 
-    in a XML format. 
-    In the Nightly Build, there is a "compile.website" target in the 
-    <code>build.xml</code> file, which renders the XML into the HTML we post 
-    to the Website. 
-    If you would like to help with the documentation, it is important to 
-    provide patches and new pages in the XML source. 
-    Otherwise, some other volunteer will have to do this for you, and it may 
-    never get done. 
-    (Sad but true.) 
-    If you are submitting new material, it is important to decide exactly 
-    where you would put this in relation to the rest of the documentation. 
-    Someone has to figure that out before it can be added, and that someone 
-    might as well be you.
-    </p>
-
-    <p>
-        If you have comments on existing material, you can make comments via the Struts Wiki. Just follow the
-        "Comments?" link on any page.
-        If you are making a substantial contribution, such as a new HOW-TO, please consider submitting a document in
-        the XML format we use.
-        This will make it easier to add your contribution to the official documentation so that it becomes part of the
-        WAR distributed with Struts.
-    </p>
-
-    <p>
-    For more, see the <a href="./faqs/helping.html">How to Help FAQ</a>.
-    </p>
-
-</section>
-
-<section name="Joining the Mailing Lists" href="Lists">
-
-    <p>
-    Before joining any mailing list at Jakarta, please be sure to read the
-    <a href="http://jakarta.apache.org/site/mail.html">Mailing Lists - 
-    Guidelines</a>.
-    If you have read and understood these guidelines, you are welcome to join 
-    the Jakarta Struts mailing lists:
-    </p>
-    
-    <ul>
-        
-    <li>
-      <strong>STRUTS-USER Mailing List</strong> - Subscribe to this list
-      to communicate with other developers that are using
-      Struts for their own applications, including questions about the
-      installation of Struts, and the usage of particular Struts features.<br/>
-      [<a href="mailto:struts-user-subscribe@jakarta.apache.org">Subscribe</a>]<br/>
-      [<a href="mailto:struts-user-unsubscribe@jakarta.apache.org">Unsubscribe</a>]
-    </li>
-      
-    <li>
-      <strong>STRUTS-DEV Mailing List</strong> - Subscribe to this mailing 
-      list to communicate with other developers interested in expanding and 
-      improving the functionality supported by Struts itself.<br/>
-      [<a href="mailto:struts-dev-subscribe@jakarta.apache.org">Subscribe</a>]<br/>
-      [<a href="mailto:struts-dev-unsubscribe@jakarta.apache.org">Unsubscribe</a>]
-    </li>
-    
-    <li>
-      <strong>STRUTS-USER Digest</strong> - Subscribe to this list to receive 
-      a daily digest of the Struts USER list.<br/>
-      [<a href="mailto:struts-user-digest-subscribe@jakarta.apache.org">Subscribe</a>]<br/>
-      [<a href="mailto:struts-user-digest-unsubscribe@jakarta.apache.org">Unsubscribe</a>]<br/>
-      If you subscribe to the Digest, you can also post to the User list. 
-      (Just don't quote the entire Digest mailing in a reply!)
-    </li>
-    
-    <li>
-      <strong>STRUTS-USER Newsgroup</strong> - The User list is also mirrored online,
-      so that you can participate <strong>without</strong> subscribing to the regular mailing
-      list.<br/>
-      [<a href="http://www.proj.com/subscribe.jsp">Struts Newsgroup</a>]<br/>
-      This is another way to post to the User list without subscribing to the 
-      regular list. <br/>
-      </li>
-    </ul>
-
-</section>
-
-<section name="Posting a Question to a Mailing List" href="Questions">
-
-    <p>
-    Before posting a new question, be sure to consult the
-    <a href="http://mail-archives.apache.org/eyebrowse/SummarizeList?listId=42">
-    <strong>MAILING LIST ARCHIVE</strong></a> and the very excellent
-    <a href="http://www.catb.org/~esr/faqs/smart-questions.html">
-    How To Ask Questions The Smart Way</a> by Eric Raymond.
-    </p>
-
-    <p>
-    Please do be sure to <a href="http://expita.com/nomime.html">turn off  HTML</a> in your email client before posting.
-    </p>
-
-    </section>
-
-    <section name="Getting Involved" href="Involved">
-
-    <p>
-        All work on Struts and the other Jakarta subprojects is provided on a volunteer basis.
-        For more about what you can do, see the Jakarta
-        <a href="http://jakarta.apache.org/site/getinvolved.html">Getting Involved Overview</a> and the Struts
-        <a href="./faqs/helping.html">How to Help FAQ</a>.
-    </p>
-
-</section>
-
-<section>
-    <p class="right">
-    <strong>Next:</strong> <a href="volunteers.html">Who We Are</a>
-    </p>
-</section>
-
-</body>
-</document>
diff --git a/build-legacy/core/xdocs/volunteers.xml b/build-legacy/core/xdocs/volunteers.xml
deleted file mode 100644
index b6d8f1c..0000000
--- a/build-legacy/core/xdocs/volunteers.xml
+++ /dev/null
@@ -1,394 +0,0 @@
-<?xml version="1.0"?>
-<document url="./volunteers.xml">
-   <properties>
-      <title>Who We Are - The Apache Struts Web Application Framework</title>
-
-   </properties>
-
-   <body>
-      
-         <section name="Community Support" href="support">
-            <p>In August 2003, there were 2700 subscribers to STRUTS-USER (including the digest version). It's the largest user mailing list at Jakarta, exceeding the TOMCAT-USER list of about 2400 subscribers. In addition to the regular subscribers, an unknown number of developers read the lists through newsfeed mirrors and through several list archives.</p>
-
-            <p>According to recently released 
-            <a href="http://www.apache.org/~vgritsenko/stats/projects/struts">statistics</a>, Struts downloads range between 10,000 and 30,000 a week, roughly the same as Jakarta Tomcat.</p>
-
-         </section>
-
-         <section name="Source Code Contributors" href="contributors.source">
-            <p>More than fifty developers have contributed code or documentation to Struts. We've tried to list all of our volunteers on this page (and apologize to anyone we missed!).</p>
-
-            <ul>
-               <li>Arron Bates</li>
-               <li>Arun M. Thomas</li>
-               <li>Cedric Dumoulin</li>
-               <li>Chris Audley</li>
-               <li>Craig R. McClanahan</li>
-               <li>David Geary</li>
-               <li>David Graham</li>
-               <li>David Winterfeldt</li>
-               <li>Dominique Plante</li>
-               <li>Don Brown</li>
-               <li>Don Clasen</li>
-               <li>Florent Carpentier</li>
-               <li>Greg Ludington</li>  
-               <li>James Holmes</li>
-               <li>James Turner</li>
-               <li>Jeff Hutchison</li>
-               <li>Jimmy Larsson</li>
-               <li>Kurt Post</li>
-               <li>Leonardo Quijano</li>
-               <li>Luis Arias</li>
-               <li>Marcus Brito</li>    
-               <li>Marius Barduta</li>
-               <li>Martin Cooper</li>
-               <li>Mike Schachter</li>
-               <li>Niall Pemberton</li>
-               <li>Ralph Schaer</li>
-               <li>Rob Leland</li>
-               <li>Saul Q Yuan</li>              
-               <li>Sean M. Kelley</li>
-               <li>Steve Raeburn</li>
-               <li>Steve Stair</li>   
-               <li>Ted Husted</li>
-            </ul>
-         </section>
-
-         <section name="Documentation Contributors" href="contributors.documentation">
-            <ul>
-               <li>Craig R. McClanahan</li>
-
-               <li>David Geary</li>
-
-               <li>Mike Schachter</li>
-
-               <li>Ted Husted</li>
-
-               <li>Martin Cooper</li>
-
-               <li>Arron Bates</li>
-
-               <li>Cedric Dumoulin</li>
-
-               <li>David Winterfeldt</li>
-
-               <li>Chris Assenza</li>
-
-               <li>dIon Gillard</li>
-
-               <li>Dominique Plante</li>
-
-               <li>Ed Burns</li>
-
-               <li>Eric Wu</li>
-
-               <li>James DeVries</li>
-
-               <li>John Rousseau</li>
-
-               <li>John Ueltzhoeffer</li>
-
-               <li>Larry McCay</li>
-
-               <li>Mark Budai</li>
-
-               <li>Matthias Kerkhoff</li>
-
-               <li>Paul Runyan</li>
-
-               <li>Robert Hayden</li>
-
-               <li>Rob Leland</li>
-
-               <li>Stanley Santiago</li>
-
-               <li>Wong Kok Kai</li>
-
-               <li>Donald Ball</li>
-
-               <li>Dan Walker</li>
-
-               <li>Eddie Bush</li>
-
-               <li>Yann Cebron</li>
-
-               <li>David Graham</li>
-
-               <li>Steve Ditlinger</li>
-
-               <li>David M. Karr</li>
-
-               <li>Tim O'Brien</li>
-
-               <li>Edgar Dollin</li>
-
-               <li>Phil Steitz</li>
-
-               <li>Steve Raeburn</li>
-
-               <li>Tetsuo Ajima</li>
-
-               <li>Tatsuo Takahashi</li>
-
-               <li>Satoshi Hioki</li>
-
-               <li>Yoshinori Ashizawa</li>
-            </ul>
-         </section>
-
-         <section name="Active Committers" href="committers">
-            <ul>
-               <li>
-               <strong>Craig R. McClanahan</strong>
-
-               (craigmcc at apache.org)</li>
-
-               <li>
-               <strong>Ted Husted</strong>
-
-               (husted at apache.org)</li>
-
-               <li>
-               <strong>Rob Leland</strong>
-
-               (rleland at apache.org)</li>
-
-               <li>
-               <strong>Cedric Dumoulin</strong>
-
-               (cedric.dumoulin at lifl.fr)</li>
-
-               <li>
-               <strong>Martin Cooper</strong>
-
-               (martinc at apache.org)</li>
-
-               <li>
-               <strong>Arron Bates</strong>
-
-               (arron at apache.org)</li>
-
-               <li>
-               <strong>James Holmes</strong>
-
-               (jholmes at apache.org)</li>
-
-               <li>
-               <strong>David M. Karr</strong>
-
-               (dmkarr at apache.org)</li>
-
-               <li>
-               <strong>David Graham</strong>
-
-               (dgraham at apache.org)</li>
-
-               <li>
-               <strong>James Mitchell</strong>
-
-               (jmitchell at apache.org)</li>
-
-               <li>
-               <strong>James Turner</strong>
-
-               (turner at blackbear.com)</li>
-
-               <li>
-               <strong>Steve Raeburn</strong>
-
-               (sraeburn at apache.org)</li>
-               
-               <li>
-               <strong>Don Brown</strong>
-
-               (mrdon at apache.org)</li>
-               
-               <li>
-               <strong>Joe Germuska</strong>
-
-               (germuska at apache.org)</li>
-               <li>
-               <strong>Niall Pemberton</strong>
-
-               (niallp at apache.org)</li>
-            </ul>
-         </section>
-
-         <section name="Emeritus Committers" href="comitters.emeritus">
-            <ul>
-               <li>David Geary</li>
-
-               <li>Luis Arias</li>
-
-               <li>Pierre Delilse</li>
-
-               <li>Michael Schachter</li>
-
-               <li>
-                  <strong>Vincent Massol</strong>
-               </li>
-
-               <li>
-                  <strong>David Winterfeldt</strong>
-               </li>
-
-               <li>
-                  <strong>Oleg Alexeev</strong>
-               </li>
-
-               <li>
-                  <strong>Eddie Bush</strong>
-               </li>
-            </ul>
-         </section>
-
-         <section name="More About Us" href="about">
-            <h4 id="craigmcc">Craig R. McClanahan -- Committer</h4>
-
-            <p>I've been involved with servlet and JSP technology since around 1998. It started out that I needed a way to build some web applications for several projects, and liked Java a lot better than the alternatives. I also liked the price tag of open source software, and started using Apache JServ -- later, getting involved in the project (like many people, I was whining about the twelve months it took to get from version 0.9 to version 1.0, and my son said "Dad, you know Java -- go help them finish it!" -- so I did :-).</p>
-
-            <p>For quite a while, I was participating a lot the JSP-INTEREST and SERVLET-INTEREST 
-            <a href="http://archives.java.sun.com">mailing lists</a>
-
-            , especially the topic of good architectures for web applications. I was disgusted with the hash that many beginners created when they used (or abused) scriptlets in JSP pages, and built (for my former employer) a pretty comprehensive framework that could considered ("Struts 0.01 without the custom tags"). It was proprietary code, but I was able to describe the concepts, and there started to a feeling the lists that this "Model 2" thing was pretty cool -- but there were no good examples to look at, so it was mostly hand waving types of discussions.</p>
-
-            <p>Over the same time period, I got involved as an individual contributor in the 
-            <a href="http://java.sun.com/jcp">Java Community Process</a>
-
-            , and joined the expert group that defined the servlet 2.2 and JSP 1.1 specs. Sun was impressed enough to offer me a job as the technical lead the team within Sun (currently five other individuals) that works 
-            <a href="http://jakarta.apache.org/tomcat">Tomcat</a>
-
-            -- the architecture for Catalina, which is the servlet container part of Tomcat 4.0, is also mine -- so I am in the really nice position of getting paid to work open source software :-). And, participate the expert groups for Servlet 2.3 and JSP 1.2. And, speak at various conferences, including ApacheCon and JavaOne. And, talk to groups within Sun about using Struts and JSP/servlet technology. And ... (there's some really interesting things being considered for the future).</p>
-
-            <p>The original design of what came to Struts has been in my head for a long time, since those interesting mailing list discussions, but the first version of the actual code was written my laptop a Memorial Day weekend vacation trip (end of May, 2000) to the Oregon coast -- in between watching the surf and having the house shaken by a windstorm at night. Since then, it has gathered attention and popularity as we approach our first official release, and it delights me to see my "baby" grow up so well :-). Of course, it is no longer just me -- there have been incredible numbers of good ideas from all over, and a peek at the TODO list for 1.1 says that even more good stuff is coming in the future.</p>
-
-            <p>One motivation factor was 
-            <a href="http://www.servlets.com/soapbox/problems-jsp.html">Jason Hunter's</a>
-
-            article about the Problems with JSP. Jason and I get along fine, even though we have different preferences about presentation technologies. Besides being the author of a very popular book about servlets, with a second edition coming soon, Jason is also the representative for the Apache Software Foundation the Executive Committee of the Java Community Process.</p>
-
-            <p>Personally, I live in Portland, Oregon (even though my team at Sun is mostly in Cupertino, CA -- staying here was part of the job deal :-). I like to support Oregon sports teams (Oregon State Beavers, Oregon Ducks, Portland Trailblazers) and work cool software.</p>
-
-            <p>I figured out I was getting pretty old when I realized that 2000 was the 25th year I had been paid to work in some aspect of software development :-). I've got a son who is a full-time software developer (primarily in PHP so far, but I'm going to corrupt him with Java eventually :-), and a daughter in college. I'll happily let the other committers speak for themselves.</p>
-
-            <h4 id="mschachter">Mike Schachter -- Committer</h4>
-
-            <p>I'm currently a student of computer science at Drexel University in Philadelphia, PA. I've been working at HP Middleware, formerly Bluestone Software for 3 years programming in Java and recently J2EE technologies. I'm a full time worker from September until April and a student and part time worker from April until August. In my spare time I've been known to run monkey-knife fights in a shady south philly warehouse. Err... I mean... nothing.</p>
-
-            <h4 id="husted">Ted Husted -- Committer</h4>
-
-            <p>My primary interest in Struts is to put it to work writing lots of real-life Web applications:-) To do that effectively means having good documentation and code samples at my fingertips, so that's been my focus with the Struts product so far.</p>
-
-            <p>I've been writing software for hire since 1984, but only recently jumped the Java bandwagon. My initial interest was with electronic publishing, and started by converting my various print projects to electronic media. The "Information Superhighway" was still the private stomping ground of Universities and government agencies then. The rest of us had to make do with diskettes and bulletin boards.</p>
-
-            <p>Between 1985 and 1994, I created and marketed several software products for publishing disk, the most popular being "Dart" and "Iris". In 1992, Dart was awarded the Digital Quill for software excellence, featured in PC Magazine (February 1992), and bundled with McGraw Hill's bookset,"Paperless Publishing" by Colin Hayes (McGraw Hill 1994). Dart won a second Digital Quill in 1993. Several titles that used Iris for a publishing system have also won awards and been widely distributed, including "Hermitville USA." I was also fortunate to find kindred souls CompuServe and America Online, who helped me pioneer resources areas there in 1993 and 1994 for the nascent electronic publishing industry.</p>
-
-            <p>I finally cut loose the Internet in 1995, launching Epub News, an electronic newspage about electronic publishing. After taking several private contracts, I opened the Husted dot Com Website (www.husted.com) in 1996. I've drifted away from electronic books, but have noticed that several products are now making their way into the consumer mainstream -- as usual, I was twenty minutes into the future:-)</p>
-
-            <p>My favorite all-time project is the Hitchhikers Guide to Science Fiction. This was one of my earliest hypertext projects (it started as a print-book idea), and I had a lot of fun bringing it forward onto the Web. (Now, if I only had time to bring it current and dress it up!)</p>
-
-            <p>Currently, I'm working with the Department of Environmental Quality for a midwestern state. We are revamping the permit application system as a web application and centralizing the database system between the various DEQ divisions.</p>
-
-            <h4 id="cedric">Cedric Dumoulin -- Committer</h4>
-
-            <p>As a dreamer / researcher I have thought a lot about a framework like Struts. But, as a lazy developer I have first checked what already exists, and I have found Struts. Struts goals fulfilled nearly all I needed for my (now old) portal project, except the capability to reuse and assemble easily pieces of pages or components. So, I have proposed the Components framework. This framework can seen as a superset of the Templates tag library contributed by David Geary, and contains lot of interesting features.</p>
-
-            <p>From a professional point of view, I have a Ph.D. in computer science. I have worked for 3 years in the R&amp;D department of a worldwide company developing Internet banking solutions. I am now a researcher at a university, and work European research projects. My main research interest is WWW, Distributed Systems and Object Oriented Design. When developing code, I always try to first propose reusable pieces of code.</p>
-
-            <h4 id="martinc">Martin Cooper -- Committer</h4>
-            <p>
-              Early in the year 2000, I was asked, by my employer at that time,
-              to investigate the best way to develop a new web-based application
-              for the administration and management of an existing product.
-              After exploring a number of technologies, I settled on Java, along
-              with servlets and JSP, as the way to go. Then I started looking
-              for methodologies and "best practices", since others must surely
-              have been down that path before me.
-            </p>
-            <p>
-              In addition to rummaging around on the web, I subscribed to the
-              SERVLET-INTEREST and JSP-INTEREST mailing lists, along with
-              several others, and monitored the discussions for a while. It was
-              clear that others were seeking the same answers as I was, and it
-              was also clear that many people were building their applications
-              in truly horrible ways.
-            </p>
-            <p>
-              At some point -- I don't recall when, exactly -- the concept of
-              "Model 1" versus "Model 2" applications came up, and there was a
-              great deal of discussion around that. Model 2 seemed very much
-              like A Good Thing to me, and I paid it close attention.
-            </p>
-            <p>
-              Then, in May of 2000, I saw a message from Craig McClanahan
-              about a new framework called Struts that was designed to ease
-              the process of building Model 2 applications, and provide
-              solutions for some of the important issues at the same time. I
-              hopped on over to the web site and took a look around. This was
-              exactly what I had been looking for.
-            </p>
-            <p>
-              My first postings to the Struts mailing list were, of course,
-              questions to help me understand how to do things and why Struts
-              is the way it is. Over time, I became more involved in both the
-              user and developer communities, started submitting bug reports,
-              patches and change requests, and eventually became a committer.
-              Not long after that, I volunteered to take on the release process,
-              and became the release manager for Struts 1.0.1 and beyond. Little
-              did I know what I was letting myself in for!
-            </p>
-            <p>
-              A large majority of the people who contribute to Apache projects
-              are volunteers who are not paid for their contributions. Like most
-              of those volunteers, I also have a "day job" to put bread on the
-              table. Currently, I am a UI Architect at Informatica, where I work
-              on the architecture, design and implementation of web applications.
-              Working with, and on, Struts has provided me with an excellent
-              perspective with which to do that!
-            </p>
-
-            <h4 id="dwinterfeldt">David Winterfeldt -- Committer</h4>
-
-            <p>As I worked web based projects I started looking for something that would really help save time during development. I ran across Struts in the Summer of 2000 and decided it was a good solution for web development. As I used Struts it really helped to remove a lot of the repetitive work, but validation still seemed very repetitive. I had an idea to create validation rules in an xml file and have them easily integrated with Struts. It started out simple and continued to develop over time. The validation project was eventually incorporated into Struts and the core was moved to Jakarta Commons. I'm happy to see Struts continue to grow and develop.</p>
-
-            <p>I currently am employed at Forbes.com. I occasionally get to do some internal projects using Struts. The last interesting project was a publishing system using Message Driven EJBs in JBoss and Struts was used to display the status of each publishing process.</p>
-
-            <h4 id="rleland">Rob Leland -- Committer</h4>
-
-            <p>I have gone from Unix -to- Windows -to- Unix based development about ever 6 years now. When moving to Windows I was amazed at how primitive the OS was compared to Unix. While developing for Win32 I had the pleasure of discovering Delphi and developed many GUI/databases, telephony, Internet enabled applications. I remain impressed with its design. Delphi, always enabled development of a simple elegant solution, much like the language itself. I was convinced after 10 years of development with C/C++ that it was a kinder gentler language.</p>
-
-            <p>Then in July 2000 I decided to move into Java, and Web development. This is after using the Internet since 1985 and occasionally teaching classes about it. I was hired as a consultant to take over a JSP based application. I realized it had been written with the equivalent of "goto's"(Model 1) and had to be redesigned. I searched for a better way to design the code and by late August I had found Struts. It is also a simple elegant solution.</p>
-
-            <p>To date I have mainly served to pitch in where needed. I continue to amazed at the Struts committers' generous contributions of time, insight, and good will. I feel fortunate to part of the struts team.</p>
-
-            <h4 id="dgraham">David Graham -- Committer</h4>
-
-            <p>I, like many others, discovered Struts when contemplating writing my own MVC Java framework for the web. Struts had everything I needed and more so I scrapped plans for my own and joined the mailing lists. After playing with it for several months I started submitting documentation and a few source patches. I'm excited about helping Struts evolve and am continually amazed by the framework and the community surrounding it.</p>
-
-            <h4 id="jmitchell">James Mitchell -- Committer</h4>
-
-            <p>James has been so busy answering users questions and adding test cases that he hasn't taken the time to brag about himself. I thought that I would add a place marker for him until and if he does decide to --blow his own horn-- ! -Rob :-D !</p>
-
-            <h4 id="jturner">James Turner -- Committer</h4>
-
-            <p>I discovered Struts somewhat by accident. In 2001 I began writing a book for SAMS on JSP web development (MySQL and JSP Web Development), and as part of it, I decided to write a chapter on Struts in the advanced section. In the process of learning enough about Struts to write about it, I realized that it could simplify some of the projects that I was working on for clients.</p>
-
-            <p>After a half a year of working with Struts, I was asked by SAMS to write another book, this time concentrating on Struts specifically. That book, co-authored with a former co-worker named Kevin Bedell, became Struts Kick Start.</p>
-
-            <p>In the process of writing that book, I began to realize that there were things I could do to contribute to Struts beyond writing about it. One thing in particular was to clean up and add some functionality to the Commons Validator project, which eventually led to me release-managing (with a lot of help!) the Commons Validator 1.0 release.</p>
-
-            <p>More generally, I've been a software developer for over 22 years, starting with work as a Research Specialist at the MIT AI Lab. I spent nearly a decade working in LISP, before moving on to C/Unix, a stint managing the Web Site for the Christian Science Monitor, and finally Java based e-Commerce development, which has kept me busy for the last five years.</p>
-
-            <p>In addition to the two books mentioned above, I also write for a number of publications, including WIRED and the aforementioned Christian Science Monitor. You can get a look at my portfolio 
-            <a href="http://www.blackbear.com/monitor.html">here</a>
-            </p>
-         </section>
-
-         <section>
-            <p class="right">Next: 
-            <a href="announce.html">Announcements</a>
-            </p>
-         </section>
-   </body>
-</document>
-
diff --git a/build-legacy/el/LICENSE.CheckStyle b/build-legacy/el/LICENSE.CheckStyle
deleted file mode 100644
index db57f1b..0000000
--- a/build-legacy/el/LICENSE.CheckStyle
+++ /dev/null
@@ -1,19 +0,0 @@
-/\*\s*
- \*\s*\$Header.*\$
- \*\s*\$Revision.*\$
- \*\s*\$Date.*\$
- \*\s*
- \*\s*Copyright \d{4}(-\d{4}|,\d{4})* The Apache Software Foundation\.
- \*\s*
- \*\s*Licensed under the Apache License, Version 2\.0 \(the "License"\);
- \*\s*you may not use this file except in compliance with the License\.
- \*\s*You may obtain a copy of the License at
- \*\s*
- \*\s*http://www\.apache\.org/licenses/LICENSE\-2\.0
- \*\s*
- \*\s*Unless required by applicable law or agreed to in writing, software
- \*\s*distributed under the License is distributed on an "AS IS" BASIS,
- \*\s*WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied\.
- \*\s*See the License for the specific language governing permissions and
- \*\s*limitations under the License\.
- \*/\s*
diff --git a/build-legacy/el/LICENSE.txt b/build-legacy/el/LICENSE.txt
deleted file mode 100644
index dd5b3a5..0000000
--- a/build-legacy/el/LICENSE.txt
+++ /dev/null
@@ -1,174 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
diff --git a/build-legacy/el/conf/qa/CheckStyle.xml b/build-legacy/el/conf/qa/CheckStyle.xml
deleted file mode 100644
index 834fccc..0000000
--- a/build-legacy/el/conf/qa/CheckStyle.xml
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE module PUBLIC
-    "-//Puppy Crawl//DTD Check Configuration 1.1//EN"
-    "http://www.puppycrawl.com/dtds/configuration_1_1.dtd">
-
-
-<!--
-  
-  These checks still need to be Voted on for Validator, but
-  at least serve to cut down on some of the noise. 
-
-
-  A Checkstyle configuration that checks against the recommendations
-  in Joshua Bloch, Effective Java (highliy recommended read!)
-
-  This file does NOT duplicate the checks for whitespace settings,
-  placement of curly braces, etc.  Only the rules that are explicitly
-  mentioned in the book are enforced.
-
-  Currently the amount of rules that can be automatically checked by
-  Checkstyle is not very large, but adding more checks of this quality
-  is a high priority goal for the development team.
-
--->
-
-<module name="Checker">
-
-   <module name="TreeWalker">
-
-    <!-- Item 4 - Avoid creating duplicate objects -->
-    <module name="IllegalInstantiation">
-      <property name="classes" value="java.lang.Boolean, java.lang.String"/>
-    </module>
-
-    <!-- Item 6 - Avoid finalizers -->
-    <!-- this will not find violations that contain linebreaks -->
-    <module name="GenericIllegalRegexp">
-      <property name="format"
-                value="((public)|(protected))\s+void\s+finalize\(\s*\)"/>
-    </module>
-
-    <!-- Item 8 - Always override hashCode when you override equals -->
-    <module name="EqualsHashCode"/>
-
-    <!-- Item 12 - Make all fields private -->
-    <module name="VisibilityModifier"/>
-
-    <!-- Item 15 - Design and document for inheritance or else prohibit it -->
-    <!-- the module actually implements a very strict rule, it would be
-         interesting to know whether Joshua meant what checkstyle implements.
-         We feel this implementation is well suited as a warning,
-         i.e. if you get error messages from this check you should be
-         able to name a good reason to implement your code the way you do it,
-         especially if you are designing a library and not an application. -->
-    <module name="DesignForExtension">
-      <property name="severity" value="warning"/>
-    </module>
-
-    <!-- Item 17 - Use interfaces only to define types -->
-    <module name="InterfaceIsType"/>
-
-    <!-- Item 25 - Design method signatures carefully -->
-    <!-- Avoid long parameter lists -->
-    <module name="ParameterNumber">
-      <property name="max" value="3"/>
-    </module>
-
-    <!-- Item 26 - Use overloading judiciously -->
-    <!-- rfe #659735 -->
-
-    <!-- Item 27 - Return zero-length array, not nulls -->
-    <!-- no rfe yet -->
-
-    <!-- Item 28 - Write doc comments for all exposed API elements -->
-    <module name="JavadocType">
-      <property name="scope" value="protected"/>
-    </module>
-    <module name="JavadocMethod"> <!-- also covers Item 44 -->
-      <property name="scope" value="protected"/>
-    </module>
-    <module name="JavadocVariable">
-      <property name="scope" value="protected"/>
-    </module>
-
-    <!-- Item 29 - Minimize the scope of local variables -->
-    <!-- no rfe yet -->
-
-
-    <!-- Item 38 - Adhere to generally accepted naming conventions -->
-    <module name="PackageName">
-      <!-- no uppercase letters, between 2 and 10 characters -->
-      <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]{1,9})*$"/>
-    </module>
-    <module name="TypeName"/>
-    <module name="ConstantName"/>
-    <module name="LocalFinalVariableName"/>
-    <module name="LocalVariableName"/>
-    <module name="MemberName"/>
-    <module name="MethodName"/>
-    <module name="ParameterName"/>
-    <module name="StaticVariableName"/>
-
-    <!-- Item 47 - Don't ignore exceptions -->
-    <module name="EmptyBlock">
-      <property name="tokens" value="LITERAL_CATCH"/>
-      <!-- require a comment, change to stmt to require a statement -->
-      <property name="option" value="text"/>
-    </module>
-
-    <!-- Item 50 - Never invoke wait outside a loop -->
-    <!-- rfe #712798 -->
-
-    <!-- Item 57 - Provide a readResolve method when necessary -->
-    <!-- no rfe yet -->
-    
-    <!-- don't allow tabs -->
-    <module name="TabCharacter"/>
-
-    <!-- enforce License Header using a RegExp file to allow some variations
-         like the years in copyrights or values of SVN variables. -->
-    <module name="RegexpHeader">
-       <property name="headerFile" value="LICENSE.CheckStyle"/>
-    </module>
-
-  </module>
-
-  <!-- enforce package documentation -->
-  <module name="PackageHtml"/>
-  
-</module>
diff --git a/build-legacy/el/conf/share/.cvsignore b/build-legacy/el/conf/share/.cvsignore
deleted file mode 100644
index e69de29..0000000
--- a/build-legacy/el/conf/share/.cvsignore
+++ /dev/null
diff --git a/build-legacy/el/conf/test/cactus.properties b/build-legacy/el/conf/test/cactus.properties
deleted file mode 100644
index 4d93d25..0000000
--- a/build-legacy/el/conf/test/cactus.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-# Configuration file for Cactus Testing for Struts 1.1
-
-cactus.contextURL = http://localhost:9090/test
-cactus.enableLogging = true
-cactus.filterRedirectorName = FilterRedirector
-cactus.jspRedirectorName = JspRedirector
-cactus.servletRedirectorName = ServletRedirector
diff --git a/build-legacy/el/conf/test/log_server.properties b/build-legacy/el/conf/test/log_server.properties
deleted file mode 100644
index b4c5a2b..0000000
--- a/build-legacy/el/conf/test/log_server.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-# Configuration file for Cactus Logging for Struts 1.1 (Server Side)
-
-log4j.appender.cactus = org.apache.log4j.FileAppender
-log4j.appender.cactus.File = cactus_server.log
-log4j.appender.cactus.Append = false
-log4j.appender.cactus.layout = org.apache.log4j.PatternLayout
-log4j.appender.cactus.layout.ConversionPattern = %d(ABSOLUTE) [%t] %-5p %-30.30c(2) %x - %m %n
-log4j.rootCategory=DEBUG, cactus
-log4j.category.org.apache.cactus = WARN, cactus
-log4j.additivity.org.apache.cactus=false
diff --git a/build-legacy/el/conf/test/struts-config.xml b/build-legacy/el/conf/test/struts-config.xml
deleted file mode 100644
index 998f8a8..0000000
--- a/build-legacy/el/conf/test/struts-config.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-
-<!DOCTYPE struts-config PUBLIC
-          "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"
-          "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">
-
-<!--
-     This is a test Struts configuration file
--->
-
-
-<struts-config>
-
-
-  <!-- ========== Data Source Configuration =============================== -->
-<!--
-  <data-sources>
-    <data-source
-       autoCommit="false"
-      description="Example Data Source Configuration"
-      driverClass="org.postgresql.Driver"
-         maxCount="4"
-         minCount="2"
-         password="mypassword"
-              url="jdbc:postgresql://localhost/mydatabase"
-             user="myusername"
-    />
-  </data-sources>
--->
-
-  <!-- ========== Form Bean Definitions =================================== -->
-  <form-beans>
-
-    <!-- Example logon form bean 
-    <form-bean      name="logonForm"
-                    type="org.apache.struts.example.LogonForm"/>
-     -->
-
-  </form-beans>
-
-
-  <!-- ========== Global Forward Definitions ============================== -->
-  <global-forwards>
-
-    <!-- Example logon forward 
-     <forward   name="logon"                path="/logon.jsp"/>
-     -->
-
-  </global-forwards>
-
-
-  <!-- ========== Action Mapping Definitions ============================== -->
-  <action-mappings>
-
-    <!-- Example logon action 
-    <action    path="/logon"
-               type="org.apache.struts.example.LogonAction"
-               name="logonForm"
-              scope="request"
-              input="/logon.jsp">
-    </action>
-    -->
-
-    <!-- Example logoff action 
-    <action    path="/logoff"
-               type="org.apache.struts.example.LogoffAction">
-      <forward name="success"              path="/index.jsp"/>
-    </action>
-    -->
-
-
-    <!-- The standard administrative actions available with Struts -->
-    <!-- These would be either omitted or protected by security -->
-    <!-- in a real application deployment -->
-    <action    path="/admin/addFormBean"
-               type="org.apache.struts.actions.AddFormBeanAction"/>
-    <action    path="/admin/addForward"
-               type="org.apache.struts.actions.AddForwardAction"/>
-    <action    path="/admin/addMapping"
-               type="org.apache.struts.actions.AddMappingAction"/>
-    <action    path="/admin/reload"
-               type="org.apache.struts.actions.ReloadAction"/>
-    <action    path="/admin/removeFormBean"
-               type="org.apache.struts.actions.RemoveFormBeanAction"/>
-    <action    path="/admin/removeForward"
-               type="org.apache.struts.actions.RemoveForwardAction"/>
-    <action    path="/admin/removeMapping"
-               type="org.apache.struts.actions.RemoveMappingAction"/>
-
-
-  </action-mappings>
-
-</struts-config>
diff --git a/build-legacy/el/conf/test/tomcat40/server.xml b/build-legacy/el/conf/test/tomcat40/server.xml
deleted file mode 100644
index fb5346c..0000000
--- a/build-legacy/el/conf/test/tomcat40/server.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<Server port="8005" shutdown="SHUTDOWN" debug="0">
-
-  <Service name="Tomcat-Standalone">
-
-    <Connector className="org.apache.catalina.connector.http.HttpConnector"
-               port="9090" minProcessors="5" maxProcessors="75"
-               acceptCount="10" debug="0"/>
-
-    <Engine name="Standalone" defaultHost="localhost" debug="0">
-
-      <Logger className="org.apache.catalina.logger.FileLogger"
-              directory="@out.tomcat.40.full.dir@"
-                 prefix="cactus_test"
-                 suffix=".log"/>
-
-      <Realm className="org.apache.catalina.realm.MemoryRealm" />
-
-      <Host name="localhost" debug="0" appBase="@out.tomcat.40.full.dir@/webapps">
-      </Host>
-
-    </Engine>
-
-  </Service>
-
-</Server>
diff --git a/build-legacy/el/conf/test/tomcat41/server.xml b/build-legacy/el/conf/test/tomcat41/server.xml
deleted file mode 100644
index 17e694b..0000000
--- a/build-legacy/el/conf/test/tomcat41/server.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<Server port="8005" shutdown="SHUTDOWN" debug="0">
-
-  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
-            debug="0"/>
-  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
-            debug="0"/>
-
-  <GlobalNamingResources>
-
-    <!-- Editable user database that can also be used by
-         UserDatabaseRealm to authenticate users -->
-    <Resource name="UserDatabase" auth="Container"
-              type="org.apache.catalina.UserDatabase"
-       description="User database that can be updated and saved">
-    </Resource>
-    <ResourceParams name="UserDatabase">
-      <parameter>
-        <name>factory</name>
-        <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
-      </parameter>
-      <parameter>
-        <name>pathname</name>
-        <value>conf/tomcat-users.xml</value>
-      </parameter>
-    </ResourceParams>
-
-  </GlobalNamingResources>
-
-  <Service name="Tomcat-Standalone">
-
-    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
-               port="9090" minProcessors="5" maxProcessors="75"
-               enableLookups="true" redirectPort="8443"
-               acceptCount="10" debug="0" connectionTimeout="20000"
-               useURIValidationHack="false"/>
-
-    <Engine name="Standalone" defaultHost="localhost" debug="0">
-
-      <Logger className="org.apache.catalina.logger.FileLogger"
-              directory="@out.tomcat.41.full.dir@"
-                 prefix="cactus_test"
-                 suffix=".log"/>
-
-      <Realm  className="org.apache.catalina.realm.UserDatabaseRealm"
-                  debug="0" resourceName="UserDatabase" />
-
-      <Host name="localhost" debug="0" appBase="@out.tomcat.41.full.dir@/webapps">
-      </Host>
-
-    </Engine>
-
-  </Service>
-
-</Server>
diff --git a/build-legacy/el/conf/test/web.xml b/build-legacy/el/conf/test/web.xml
deleted file mode 100644
index 2558dc8..0000000
--- a/build-legacy/el/conf/test/web.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<!DOCTYPE web-app
-    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
-    "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
-
-<web-app>
-
-<!--
-    <filter>
-        <filter-name>FilterRedirectory</filter-name>
-        <filter-class>
-            org.apache.cactus.server.FilterTestRedirector
-        </filter-class>
-    </filter>
-
-    <filter-mapping>
-        <filter-name>FilterRedirector</filter-name>
-        <url-pattern>/FilterRedirector</url-pattern>
-    </filter-mapping>
--->
-
-    <servlet>
-        <servlet-name>ServletRedirector</servlet-name>
-        <servlet-class>
-            org.apache.cactus.server.ServletTestRedirector
-        </servlet-class>
-    </servlet>
-
-    <servlet>
-        <servlet-name>JspRedirector</servlet-name>
-        <jsp-file>/jspRedirector.jsp</jsp-file>
-    </servlet>
-    
-    <servlet-mapping>
-        <servlet-name>ServletRedirector</servlet-name>
-        <url-pattern>/ServletRedirector</url-pattern>
-    </servlet-mapping>
-
-    <servlet-mapping>
-        <servlet-name>JspRedirector</servlet-name>
-        <url-pattern>/JspRedirector</url-pattern>
-    </servlet-mapping>
-    
-</web-app>
diff --git a/build-legacy/el/project.properties b/build-legacy/el/project.properties
deleted file mode 100644
index 211216f..0000000
--- a/build-legacy/el/project.properties
+++ /dev/null
@@ -1,120 +0,0 @@
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-#
-# $Id$
-#
-# Do not change this file. Please use build.properties in this directory
-# to do site or installation specific changes to the project build.
-# -------------------------------------------------------------------
-maven.repo.remote=http://www.ibiblio.org/maven/,http://cvs.apache.org/repository/
-
-#keep ant & maven directories separate.
-maven.build.dir=m-target
-
-maven.checkstyle.properties = conf/qa/CheckStyle.xml
-
-# display the date on the site
-maven.xdoc.date = left
-# Display the version the web site is documenting
-maven.xdoc.version = ${pom.currentVersion}
-# Days to report in the change log
-maven.changelog.range=30
-
-compile.debug = on
-compile.optimize = off
-compile.deprecation = on
-maven.compile.deprecation = on
-
-# -------------------------------------------------------------------
-# D E P L O Y M E N T  P R O P E R T I E S
-# -------------------------------------------------------------------
-#- maven.repo.central and maven.repo.central.directory are used to deploy
-#- jars to be used by other projects.  
-#
-#- For nightly builds, use:
-#-    maven jar:deploy-snapshot 
-#- This will deploy to the 'default' directory, which corresponds to the "remote" repository
-#-  http://cvs.apache.org/repository/
-#- For production builds, use:
-#-    maven -Dmaven.repo.central.directory=/www/www.apache.org/dist/java-repository/ jar:deploy
-#- That directory is periodically mirrored with the "standard" Maven repo at ibiblio
-#- Specify your username at the remote repository (cvs.apache.org) 
-#- with the maven property 'maven.username'
-maven.repo.central=cvs.apache.org
-maven.repo.central.directory=/www/cvs.apache.org/repository/ # nightly builds
-#maven.repo.central.directory=/www/www.apache.org/dist/java-repository/ # releases
-
-# -------------------------------------------------------------------
-# X D O C   P R O P E R T I E S
-# -------------------------------------------------------------------
-#maven.xdoc.includeProjectDocumentation=no
-#Comment out the following line to use the standard Maven stylesheet
-maven.xdoc.jsl=struts.jsl
-# Links to Struts Development Process doc instead of Maven default doc
-maven.xdoc.developmentProcessUrl=/releases.html
-
-#Powered By logo 
-#maven.xdoc.poweredby.image=struts-power.gif
-#maven.xdoc.poweredby.title=Powered by Struts
-#maven.xdoc.poweredby.url=http://jakarta.apache.org/struts/
-maven.xdoc.poweredby.image=
-maven.xdoc.poweredby.title=
-maven.xdoc.poweredby.url=
-
-maven.ui.banner.background=#ffffff
-maven.ui.banner.foreground=#000000
-maven.ui.banner.border.top=#ffffff
-maven.ui.banner.border.bottom=#ffffff
-
-maven.ui.navcol.background=#ffffff
-maven.ui.navcol.border.top=#ffffff
-maven.ui.navcol.border.right=#ffffff
-maven.ui.navcol.border.bottom=#ffffff
-
-maven.ui.breadcrumbs.background=#ffffff
-maven.ui.breadcrumbs.foreground=#666666
-maven.ui.breadcrumbs.border.top=#ffffff
-maven.ui.breadcrumbs.border.bottom=#000000
-
-
-# -------------------------------------------------------------------
-# C A C T U S   P L U G - I N   P R O P E R T I E S
-# -------------------------------------------------------------------
-cactus.src.dir = src/test
-cactus.src.includes = org/apache/struts/action/TestActionServlet.java,org/apache/struts/taglib/**/Test*.java
-
-## Cactus Plug-in: Tomcat 4 specific 
-# cactus.tomcat4x.config (optional)
-# Location of the Tomcat 4.x configuration file if you don't want to use the cactus-provided one.
-# cactus.tomcat4x.conf.dir (optional)
-# Location of custom Tomcat 4.x configuration file that will be copied, overwriting the Cactus-provided configuration files.
-cactus.tomcat4x.conf.dir = conf/test/tomcat41
-# cactus.tomcat4x.conf.includes (optional)
-# Configuration files located at${cactus.tomcat4x.conf.dir that should be included in the Tomcat 4.x container set up by Cactus.
-# cactus.tomcat4x.conf.excludes (optional)
-# Configuration files located at${cactus.tomcat4x.conf.dir that should not be included in the Tomcat 4.x container set up by Cactus.
-# cactus.tomcat4x.tmpdir (optional)
-# Directory to which the container will be installed for the tests. By default the system temporary directory is used.
-
-# -------------------------------------------------------------------
-# A P A C H E  R E P O S I T O R Y  P R O P E R T I E S
-# -------------------------------------------------------------------
-#This is the host that Maven will attempt
-#to deploy the distribution to during a dist:deploy. 	
-maven.repo.central=minotaur.apache.org	
-
-#This is the directory that Maven will
-#copy the distribution to during a dist:deploy. 	
-
-maven.repo.central.directory=/www/www.apache.org/dist/java-repository
-
-# Because the repository user name is different for each person, it should not
-# be defined in the shared "project.properties"  
-# Define this on the command line, or in your own build.properties file:
-# in order to deploy to the repository:
-#ssh configuration settings just require your apache id to log on with
-#maven.username=<apache-user-name> (DON'T UNCOMMENT THIS LINE IN SHARED project.propert
-
-maven.changelog.factory = org.apache.maven.svnlib.SvnChangeLogFactory
-
-
diff --git a/build-legacy/el/struts.jsl b/build-legacy/el/struts.jsl
deleted file mode 100644
index c7da3d4..0000000
--- a/build-legacy/el/struts.jsl
+++ /dev/null
@@ -1,507 +0,0 @@
-<?xml version="1.0"?>
-<!-- $Id: struts.jsl 51220 2003-12-11 20:08:07Z sraeburn $ -->
-<jsl:stylesheet select="$doc"
-  xmlns:define="jelly:define"
-  xmlns:j="jelly:core"
-  xmlns:jsl="jelly:jsl"
-  xmlns:log="jelly:log"
-  xmlns:util="jelly:util"
-  xmlns:x="jelly:xml"
-  xmlns:doc="doc"
-  xmlns="dummy" trim="false">
-  <jsl:template match="document" trim="false">
-    <j:useBean var="navbean" class="org.apache.maven.NavBean"/>
-    <j:set var="location" value="${outFile.substring(destdir.length())}"/>
-    <util:replace var="location" oldChar="\" newChar="/" value="${location}"/>
-
-    <!-- Stores location for publish date / version -->
-    <j:set var="date">${maven.xdoc.date}</j:set>
-      
-    <j:setProperties 
-        object="${navbean}"
-        document="${doc}"
-        location="${location}"/>
-    
-    <x:doctype name="html"
-      publicId="-//W3C//DTD XHTML 1.0 Transitional//EN"
-      systemId="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
-
-    <html>
-      <head>
-        <j:set var="docTitle">
-          <x:expr select="./properties/title"/>
-        </j:set>
-        <x:if select="$nav/title">
-          <title>
-            <x:expr select="$nav/title"/> - ${docTitle}
-          </title>
-        </x:if>
-        <x:if select="not($nav/title)">
-          <title>${pom.name} - ${docTitle}</title>
-        </x:if>
-        
-        <style type="text/css"><![CDATA[
-          @import url("${relativePath}/style/struts.css");
-          @import url("${relativePath}/style/maven.css");
-        ]]></style>
-        
-        <util:file var="projectCssFile" name="${maven.docs.src}/style/project.css"/>
-        <j:if test="${projectCssFile.exists()}">
-          <style type="text/css"><![CDATA[
-            @import url("${relativePath}/style/project.css");
-          ]]></style>
-        </j:if>
-        
-        <!-- FIXME: once someone works out how to stop this breaking
-        <x:element name="script"><x:attribute name="type">text/javascript</x:attribute>
-          if (document.layers) {
-                document.writeln(''+
-                '<link rel="stylesheet" type="text/css" href="${relativePath}/style/ns4_only.css" media="screen" /><link rel="stylesheet" type="text/css" href="${relativePath}/style/maven_ns4_only.css" media="screen"/>');
-              }
-            </x:element>
-        -->
-        <link rel="stylesheet" type="text/css" href="${relativePath}/style/print.css" media="print"/>
-        <meta http-equiv="Content-Type" content="text/html; charset=${outputencoding}"></meta>
-        <x:forEach var="author" select="./properties/author">
-          <meta name="author" content="${author.text}"/>
-          <meta name="email" content="${author.attribute('email').value}"/>
-        </x:forEach>
-        
-        <jsl:applyTemplates select="$doc/document/head/*"/>
-        
-      </head>
-
-      <x:element name="body"><j:whitespace trim="true">
-        <x:attribute name="class">composite</x:attribute>
-        <x:forEach var="attr" select="$doc/document/body/@*">
-          <x:attribute name="${attr.name}">${attr.value}</x:attribute>
-        </x:forEach>
-        </j:whitespace>
-
-        <div id="banner">
-          <table border="0" cellspacing="0" cellpadding="8" width="100%">
-            <tr>
-              <!-- organization logo -->
-              <td>
-                <j:set var="logo" value="${pom.organization.logo}"/>
-                <j:if test="${!empty(logo)}">
-                  <!-- set url to org or project url -->
-                  <j:set var="url" value="${pom.organization.url}"/>
-                  <j:if test="${!empty(url)}">
-                    <j:set var="home" value="${pom.organization.url}"/>
-                  </j:if>
-                  <j:if test="${empty(url)}">
-                    <j:set var="home" value="${pom.url}"/>
-                  </j:if>
-                  <!-- set image to relative or complete -->
-                  <j:set var="image" value="${pom.organization.logo}"/>
-                  <j:if test="${!image.startsWith('http://')}">
-                    <j:set var="image" value="${relativePath}${image}"/>
-                  </j:if>
-                  <a href="${home}">
-                    <img src="${image}" align="left" alt="${pom.organization.name}" border="0"/>
-                  </a>
-                </j:if>
-              </td>
-
-              <!-- project logo and link -->
-              <td>
-                <div align="right" id="login">
-                  <j:set var="logo" value="${pom.logo}"/>
-                  <j:if test="${logo != null and logo != ''}">
-                    <!-- set image to relative or complete -->
-                    <j:set var="image" value="${pom.logo}"/>
-                    <j:if test="${!image.startsWith('http://')}">
-                      <j:set var="image" value="${relativePath}${image}"/>
-                    </j:if>
-
-                    <a href="${pom.url}">
-                      <img src="${image}" align="right" alt="${pom.name}" border="0"/>
-                    </a>
-                  </j:if>
-                </div>
-              </td>
-            </tr>
-          </table>
-        </div>
-        <div id="breadcrumbs">
-          <table border="0" cellspacing="0" cellpadding="4" width="100%">
-            <tr>
-              <j:if test="${date == 'left'}">
-                <j:set var="version" value="${maven.xdoc.version}"/>
-                <td>Last published: ${build.date}
-                  <j:if test="${!empty(version)}">| Doc for ${version}</j:if>
-                </td>
-              </j:if>
-              <td>
-                <div align="right">
-                  <j:if test="${date == 'right'}">
-                    Last published: ${build.date}
-                    <x:if select="$nav/body/links">|</x:if>
-                  </j:if>
-                  <!-- render links -->
-                  <x:if select="$nav/body/links">
-                    <jsl:applyTemplates select="$nav/body/links"/>
-                  </x:if>
-                  <x:if select="not($nav/body/links)">
-                    <!-- FIXME &nbsp; -->
-                  </x:if>
-                </div>
-              </td>
-            </tr>
-          </table>
-        </div>
-        <!-- Body of the page -->
-        <table border="0" cellspacing="0" cellpadding="8" width="100%"> <!--id="main" -->
-          <tr valign="top">
-            <td id="leftcol" width="20%">
-              <div id="navcolumn">
-                <j:if test="${date == 'navigation-top'}">
-                  <div>
-                    <small>Last published: ${build.date}</small>
-                  </div>
-                </j:if>
-
-                <x:if select="$nav">
-                  <jsl:applyTemplates select="$nav/body/menu[not(@type) | @type='header'] | $nav/body/search"/>
-                </x:if>
-
-                <jsl:applyTemplates select="$projectNav/body/menu"/>
-                
-                <!-- Standard Maven Navigation -->
-                <j:set var="fileName">${file}</j:set>
-
-                <j:set var="poweredbyimage">${maven.xdoc.poweredby.image}</j:set>
-                <j:set var="poweredbytitle">${maven.xdoc.poweredby.title}</j:set>
-                <j:set var="poweredbyurl">${maven.xdoc.poweredby.url}</j:set>
-                <j:if test="${!empty(poweredbyimage)}">
-                    <div style="margin-top: 20px; width: 100%; text-align: center;">
-                        <a href="${poweredbyurl}" title="${poweredbytitle}"><img alt="${maven.xdoc.poweredby.title}" style="border: 1px solid black" src="${relativePath}/images/logos/${poweredbyimage}"/></a>
-                    </div>
-                </j:if>
-              
-                <j:if test="${date == 'navigation-bottom'}">
-                  <div>
-                    <small>Last published: ${build.date}</small>
-                  </div>
-                </j:if>
-              </div>
-            </td>
-            <td rowspan="2">
-              <div id="bodycol">
-                <!-- Insert MAIN body here -->
-                <div class="app">
-                  <!-- FIXME really shouldn't use $doc, but jelly loses it's context again -->
-                  <jsl:applyTemplates select="$doc/document/body/section"/>
-                  <jsl:applyTemplates select="$doc/document/body/glossary" />
-                  <jsl:applyTemplates select="$doc/document/body/release" />
-                  <jsl:applyTemplates select="$doc/document/body/changelog" />
-                  <jsl:applyTemplates select="$doc/document/body/taskList" />
-                  <jsl:applyTemplates select="$doc/document/body/goals" />
-                </div>
-              </div>
-            </td>
-          </tr>
-        </table>
-        <div id="footer">
-          <table style='width:100%' border="0" cellspacing="0" cellpadding="4">
-            <jsl:applyTemplates select="$nav/body/footer"/>
-            <tr>
-              <td>
-                <j:if test="${!empty(pom.organization.name)}">
-                  <j:if test="${!empty(pom.inceptionYear)}">
-                    <j:if test="${pom.inceptionYear == mavenCurrentYear}">
-                      &#169; ${mavenCurrentYear}, ${pom.organization.name}
-                    </j:if>
-                    <j:if test="${pom.inceptionYear != mavenCurrentYear}">
-                      &#169; ${pom.inceptionYear}-${mavenCurrentYear}, ${pom.organization.name}
-                    </j:if>
-                  </j:if>
-                  <j:if test="${empty(pom.inceptionYear)}">
-                    &#169; ${mavenCurrentYear}, ${pom.organization.name}
-                  </j:if>
-                </j:if>
-
-                <j:if test="${date == 'bottom'}">
-                  - Last published: ${build.date}
-                </j:if>
-              </td>
-              <j:if test="${date == 'bottom-right'}">
-                <td style='width: auto; text-align:right'>Last published: ${build.date}</td>
-              </j:if>
-            </tr>
-          </table>
-        </div>
-      </x:element>
-    </html>
-  </jsl:template>
-
-  <!-- process the properties of the doc -->
-  <jsl:template match="properties" trim="false">
-    <!-- stick head block here later -->
-  </jsl:template>
-
-  <!-- Process a menu for the navigation bar -->
-  <jsl:template match="menu" trim="false">
-    <div>
-      <strong><x:expr select="@name"/></strong>
-      <jsl:applyTemplates select="item"/>
-    </div>
-  </jsl:template>
-
-  <jsl:template match="item" trim="false">
-    <x:set var="item" select="."/>
-    <x:set var="_name" select="string(@name)"/>
-    <x:set var="_link" select="string(@href)"/>
-    <x:set var="_img" select="string(@img)"/>
-    <x:set var="_childCount" select="count(./item)"/>
-    <j:set var="_isCollapsed" value="${navbean.isCollapsed(item.get(0))}"/>
-    <j:set var="_state" value="none"/>
-    
-    <j:if test="${_childCount.intValue() gt 0}">
-        <j:if test="${!_isCollapsed}">
-          <j:set var="_state" value="expanded"/>
-        </j:if>
-        <j:if test="${_isCollapsed}">
-          <j:set var="_state" value="collapsed"/>
-        </j:if>
-    </j:if>
-           
-    
-    <div>
-      <small>
-        <j:if test="${navbean.isSelected(item.get(0))}">
-            <b><doc:itemLink name="${_name}" link="${_link}" img="${_img}" state="${_state}"/></b>
-        </j:if>
-        <j:if test="${!navbean.isSelected(item.get(0))}">
-            <doc:itemLink name="${_name}" link="${_link}" img="${_img}" state="${_state}"/>
-        </j:if>
-      </small>
-      <j:if test="${!navbean.isCollapsed(item.get(0))}">
-        <jsl:applyTemplates select="item"/>
-      </j:if>
-    </div>
-  </jsl:template>
-
-  <!-- Process the breadcrumb navbar -->
-  <jsl:template match="links" trim="false">
-    <j:set var="linkCount" value="1"/>
-    <x:forEach var="link" select="item">
-      <j:if test="${linkCount != 1}">|</j:if>
-      <j:set var="_name"><x:expr select="@name"/></j:set>
-      <j:set var="_link"><x:expr select="@href"/></j:set>
-      <doc:itemLink name="${_name}" link="${_link}"/>
-      <j:set var="linkCount" value="${1+linkCount}"/>
-    </x:forEach>
-  </jsl:template>
-
-  <!-- Google site search -->
-  <jsl:template match="search" trim="false">
-    <!-- Search code: http://www.google.com/searchcode.html -->
-    <!-- Google logos: http://www.google.com/stickers.html -->
-    <!-- Terms: http://www.google.com./services/terms_free.html -->
-    <div>
-      <strong>Search ${pom.name}</strong>
-      <form method="get" action="http://www.google.com/search">
-        <a class="navlink" href="http://www.google.com">
-          <img src="http://www.google.com/logos/Logo_25wht.gif" 
-               alt="Google" border="0" />
-        </a><p/>
-        <j:set var="siteURL" value="${pom.url}"/>
-        <!-- google fails on urls that end with / -->
-        <j:if test="${siteURL.endsWith('/')}">
-          <j:set var="URLLength" value="${siteURL.length() - 1}"/>
-          <j:set var="siteURL" value="${siteURL.substring(0, URLLength.intValue())}"/>
-        </j:if>
-        <input type="text" size="15" name="q" maxlength="255" value=""/>
-        <input type="submit" value="Go" name="btnG"/>
-        <input type="hidden" name="domains" value="${siteURL}"/>
-        <input type="hidden" id="search" name="sitesearch" value="${siteURL}"/>
-      </form>
-    </div>
-  </jsl:template>
-
-  <!-- process a documentation section -->
-  <jsl:template match="section" trim="false">
-    <div class="h3">
-      <j:set var="_sectionName"><x:expr select="@name"/></j:set>
-      <j:if test="${!empty(_sectionName)}">
-        <h3>
-          <a name="${_sectionName}">${_sectionName}</a>
-        </h3>
-      </j:if>
-      <jsl:applyTemplates select="*"/>
-    </div>
-  </jsl:template>
-
-  <jsl:template match="subsection" trim="false">
-    <div class="h4">
-      <j:set var="_sectionName"><x:expr select="@name"/></j:set>
-      <j:if test="${!empty(_sectionName)}">
-        <h4>
-          <a name="${_sectionName}">${_sectionName}</a>
-        </h4>
-      </j:if>
-      <jsl:applyTemplates select="*"/>
-    </div>
-  </jsl:template>
-
-  <jsl:template match="source" trim="false">
-    <div id="source">
-      <pre><x:expr select="."/></pre>
-    </div>
-  </jsl:template>
-
-  <jsl:template match="footer" trim="false">
-    <tr>
-      <td>
-        <jsl:applyTemplates select="*"/>
-      </td>
-    </tr>
-  </jsl:template>
-
-  <jsl:template match="table" trim="false">
-    <j:set var="rowcount" value="0"/>
-    <table cellpadding="3" cellspacing="2" border="1" width="100%">
-      <jsl:applyTemplates select="*"/>
-    </table>
-  </jsl:template>
-
-  <jsl:template match="tr" trim="false">
-    <j:choose>
-      <j:when test="${rowMode == 'a'}">
-        <j:set var="rowMode" value="b"/>
-      </j:when>
-      <j:otherwise>
-        <j:set var="rowMode" value="a"/>
-      </j:otherwise>
-    </j:choose>
-
-    <!-- copy attributes FIXME: Shouldn't this only be colspan|rowspan? -->
-    <x:element name="tr"><j:whitespace trim="true">
-      <x:attribute name="class">${rowMode}</x:attribute>
-      <x:forEach var="attr" select="@*">
-        <x:attribute name="${attr.name}">${attr.value}</x:attribute>
-      </x:forEach>
-      <jsl:applyTemplates select="*"/>
-</j:whitespace></x:element>
-  </jsl:template>
-
-  <!--************************-->
-  <!-- glossary documentation -->
-  <!--************************-->
-  <jsl:template match="glossary" trim="false">
-    <jsl:applyTemplates select="glossary-entries/glossary-entry" />
-  </jsl:template>
-      
-  <jsl:template match="glossary-entry" trim="false">
-    <strong><x:expr select="name" /></strong>
-    <br/>
-    <x:expr select="definition" />
-    <p/>
-  </jsl:template>
-
-      <!--************************-->
-      <!-- goals documentation    -->
-      <!--************************-->
-      <jsl:template match="goals" trim="false">
-        <!-- reset row alternation -->
-        <j:set var="rowMode" value="" />
-        <div class="h3">
-          <h3><a name="Goals">Goals</a></h3>
-          <table>
-            <tr width='100%'><th>Goal</th><th>Description</th></tr>
-            <jsl:applyTemplates select="goal"/>
-          </table>
-        </div>
-      </jsl:template>
-      
-      <!-- a goal -->
-        <!-- FIXME: this is copied from tr - there must be a way of
-             calling templates in jsl? -->
-      <jsl:template match="goal" trim="false">
-        <j:choose>
-          <j:when test="${rowMode == 'a'}">
-            <j:set var="rowMode" value="b"/>
-          </j:when>
-          <j:otherwise>
-            <j:set var="rowMode" value="a"/>
-          </j:otherwise>
-        </j:choose>
-        
-        <x:element name="tr"><j:whitespace trim="true">
-          <x:attribute name="class">${rowMode}</x:attribute>
-          <j:set var="_goalName"><x:expr select="./name" /></j:set>
-          <td width='20%'><a name="${_goalName}">${_goalName}</a></td>
-          <td width='80%'><jsl:applyTemplates select="description" /></td>
-</j:whitespace></x:element>
-      </jsl:template>   
-      
-      <jsl:template match="description">
-        <jsl:copy trim="false">
-          <jsl:applyTemplates trim="false"/>
-        </jsl:copy>
-      </jsl:template>
-
-      <!--************************-->
-      <!-- changelog documentation-->
-      <!--************************-->
-      <jsl:template match="changelog" trim="false">
-        <j:set var="rowMode" value="" />
-        <table width="100%">
-          <tr>
-            <th>Date</th><th>Author</th><th>Files/Message</th>
-          </tr>
-          <jsl:applyTemplates select="changelog-entry" />
-        </table>
-      </jsl:template>
-
-      <!-- transform a changelog entry -->
-      <!-- FIXME: tr code copied from above -->
-      <jsl:template match="changelog-entry" trim="false">
-        <j:choose>
-          <j:when test="${rowMode == 'a'}">
-            <j:set var="rowMode" value="b"/>
-          </j:when>
-          <j:otherwise>
-            <j:set var="rowMode" value="a"/>
-          </j:otherwise>
-        </j:choose>
-        
-        <x:element name="tr"><j:whitespace trim="true">
-          <x:attribute name="class">${rowMode}</x:attribute>
-          
-          <td><x:expr select="date" /> <x:expr select="time" /></td>
-          <td><x:expr select="author"/></td>
-          <td><jsl:applyTemplates select="*" />
-            <pre><x:expr select="msg"/></pre>
-          </td>
-</j:whitespace></x:element>
-      </jsl:template>
-
-      <jsl:template match="file">
-        <j:set var="url">${pom.repository.url}<x:expr select="name"/></j:set>
-        <j:set var="revUrl">${url}?<x:expr select="revision"/>&amp;content-type=text/vnd.viewcvs-markup</j:set>
-        <a href="${url}"><x:expr select="name"/></a> - 
-        <a href="${revUrl}">v<x:expr select="revision"/></a>
-        <br/>
-      </jsl:template>
-
-  <!-- remove the space at the end of parsed "a" anchors -->
-  <jsl:template match="a" trim="false">
-    <jsl:copy trim="true">
-      <jsl:applyTemplates trim="true"/>
-    </jsl:copy>
-  </jsl:template>
-
-  <!-- copy any other elements through -->
-  <jsl:template match="*" trim="false"><jsl:copy trim="false">
-      <jsl:applyTemplates trim="false"/></jsl:copy></jsl:template>
-
-   <!-- element values don't pass through as text -->
-   <jsl:template match="@*"/>
-
-   <!-- CDATA and text nodes pass-thru -->
-   <jsl:template match="text()"><x:expr select="."/></jsl:template>
-
-</jsl:stylesheet>
diff --git a/build-legacy/taglib/LICENSE.CheckStyle b/build-legacy/taglib/LICENSE.CheckStyle
deleted file mode 100755
index db57f1b..0000000
--- a/build-legacy/taglib/LICENSE.CheckStyle
+++ /dev/null
@@ -1,19 +0,0 @@
-/\*\s*
- \*\s*\$Header.*\$
- \*\s*\$Revision.*\$
- \*\s*\$Date.*\$
- \*\s*
- \*\s*Copyright \d{4}(-\d{4}|,\d{4})* The Apache Software Foundation\.
- \*\s*
- \*\s*Licensed under the Apache License, Version 2\.0 \(the "License"\);
- \*\s*you may not use this file except in compliance with the License\.
- \*\s*You may obtain a copy of the License at
- \*\s*
- \*\s*http://www\.apache\.org/licenses/LICENSE\-2\.0
- \*\s*
- \*\s*Unless required by applicable law or agreed to in writing, software
- \*\s*distributed under the License is distributed on an "AS IS" BASIS,
- \*\s*WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied\.
- \*\s*See the License for the specific language governing permissions and
- \*\s*limitations under the License\.
- \*/\s*
diff --git a/build-legacy/taglib/conf/cactus-web.xml b/build-legacy/taglib/conf/cactus-web.xml
deleted file mode 100755
index 506ebb1..0000000
--- a/build-legacy/taglib/conf/cactus-web.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!-- 

-/*

- * Copyright 2001-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.

- */

- -->

-

-<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

-

-<web-app>

-</web-app>

diff --git a/build-legacy/taglib/conf/merge/global-forwards.xml b/build-legacy/taglib/conf/merge/global-forwards.xml
deleted file mode 100755
index 5502360..0000000
--- a/build-legacy/taglib/conf/merge/global-forwards.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<global-forwards>

-

-    <forward name="simpleForward"

-             path="/path/to/non/existing/jsp.jsp"/>

-

-    <forward name="testIncludeTagForward"

-             path="/org/apache/struts/taglib/bean/resources/IncludeTagTest.jsp"/>

-

-</global-forwards>

-

diff --git a/build-legacy/taglib/conf/merge/servlet-mappings.xml b/build-legacy/taglib/conf/merge/servlet-mappings.xml
deleted file mode 100755
index 221f85c..0000000
--- a/build-legacy/taglib/conf/merge/servlet-mappings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<servlet-mapping>

-    <servlet-name>action</servlet-name>

-    <url-pattern>*.do</url-pattern>

-</servlet-mapping>

diff --git a/build-legacy/taglib/conf/merge/servlets.xml b/build-legacy/taglib/conf/merge/servlets.xml
deleted file mode 100755
index 7647bd2..0000000
--- a/build-legacy/taglib/conf/merge/servlets.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<servlet>

-    <servlet-name>action</servlet-name>

-    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

-    <init-param>

-        <param-name>config</param-name>

-        <param-value>/WEB-INF/struts-config.xml</param-value>

-    </init-param>

-    <load-on-startup>1</load-on-startup>

-</servlet>

-

-        <!-- [INSERT FRAGMENT HERE] -->

-

diff --git a/build-legacy/taglib/conf/merge/struts-actions.xml b/build-legacy/taglib/conf/merge/struts-actions.xml
deleted file mode 100755
index cfe07ee..0000000
--- a/build-legacy/taglib/conf/merge/struts-actions.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<action path="/testIncludeTagTransaction"

-        type="org.apache.struts.taglib.bean.resources.IncludeTagTransactionTestAction">

-    <forward name="success"

-             path="/org/apache/struts/taglib/bean/resources/IncludeTagTest.jsp"/>

-</action>

-

-<action path="/simpleAction"

-        type="does.not.exist.SimpleAction">

-    <forward name="success"

-             path="/does/not/exist/jsp.jsp"/>

-</action>

-

-<action path="/testFormTag"

-        type="org.apache.struts.taglib.html.resources.FormTagTestAction"

-        name="testFormBean"

-        scope="request">

-    <forward name="success"

-             path="/org/apache/struts/taglib/html/TestFormTag1.jsp"/>

-</action>

diff --git a/build-legacy/taglib/conf/merge/struts-forms.xml b/build-legacy/taglib/conf/merge/struts-forms.xml
deleted file mode 100755
index c6d4afe..0000000
--- a/build-legacy/taglib/conf/merge/struts-forms.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<form-bean name="testDynaFormBean"

-           type="org.apache.struts.validator.DynaValidatorForm">

-    <form-property name="field1" type="java.lang.String"/>

-    <form-property name="field2" type="java.lang.String"/>

-</form-bean>

-

-

-        <!-- Registration form bean -->

-<form-bean name="testFormBean"

-           type="org.apache.struts.taglib.SimpleBeanForTesting"/>

-

-

diff --git a/build-legacy/taglib/conf/merge/struts-message-resources.xml b/build-legacy/taglib/conf/merge/struts-message-resources.xml
deleted file mode 100755
index 7ec2d72..0000000
--- a/build-legacy/taglib/conf/merge/struts-message-resources.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<message-resources

-        parameter="org.apache.struts.taglib.bean.resources.ApplicationResources"/>

-

-<message-resources

-        parameter="org.apache.struts.taglib.bean.resources.AlternateApplicationResources"

-        key="alternate"/>

diff --git a/build-legacy/taglib/conf/qa/CheckStyle.xml b/build-legacy/taglib/conf/qa/CheckStyle.xml
deleted file mode 100644
index 46d6153..0000000
--- a/build-legacy/taglib/conf/qa/CheckStyle.xml
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE module PUBLIC
-        "-//Puppy Crawl//DTD Check Configuration 1.1//EN"
-        "http://www.puppycrawl.com/dtds/configuration_1_1.dtd">
-
-
-<!--
-  
-  These checks still need to be Voted on for Validator, but
-  at least serve to cut down on some of the noise. 
-
-
-  A Checkstyle configuration that checks against the recommendations
-  in Joshua Bloch, Effective Java (highliy recommended read!)
-
-  This file does NOT duplicate the checks for whitespace settings,
-  placement of curly braces, etc.  Only the rules that are explicitly
-  mentioned in the book are enforced.
-
-  Currently the amount of rules that can be automatically checked by
-  Checkstyle is not very large, but adding more checks of this quality
-  is a high priority goal for the development team.
-
--->
-
-<module name="Checker">
-
-    <module name="TreeWalker">
-
-        <!-- Item 4 - Avoid creating duplicate objects -->
-        <module name="IllegalInstantiation">
-            <property name="classes"
-                      value="java.lang.Boolean, java.lang.String"/>
-        </module>
-
-        <!-- Item 6 - Avoid finalizers -->
-        <!-- this will not find violations that contain linebreaks -->
-        <module name="GenericIllegalRegexp">
-            <property name="format"
-                      value="((public)|(protected))\s+void\s+finalize\(\s*\)"/>
-        </module>
-
-        <!-- Item 8 - Always override hashCode when you override equals -->
-        <module name="EqualsHashCode"/>
-
-        <!-- Item 12 - Make all fields private -->
-        <module name="VisibilityModifier"/>
-
-        <!-- Item 15 - Design and document for inheritance or else prohibit it -->
-        <!-- the module actually implements a very strict rule, it would be
-interesting to know whether Joshua meant what checkstyle implements.
-We feel this implementation is well suited as a warning,
-i.e. if you get error messages from this check you should be
-able to name a good reason to implement your code the way you do it,
-especially if you are designing a library and not an application. -->
-        <module name="DesignForExtension">
-            <property name="severity" value="warning"/>
-        </module>
-
-        <!-- Item 17 - Use interfaces only to define types -->
-        <module name="InterfaceIsType"/>
-
-        <!-- Item 25 - Design method signatures carefully -->
-        <!-- Avoid long parameter lists -->
-        <module name="ParameterNumber">
-            <property name="max" value="3"/>
-        </module>
-
-        <!-- Item 26 - Use overloading judiciously -->
-        <!-- rfe #659735 -->
-
-        <!-- Item 27 - Return zero-length array, not nulls -->
-        <!-- no rfe yet -->
-
-        <!-- Item 28 - Write doc comments for all exposed API elements -->
-        <module name="JavadocType">
-            <property name="scope" value="protected"/>
-        </module>
-        <module name="JavadocMethod"> <!-- also covers Item 44 -->
-            <property name="scope" value="protected"/>
-        </module>
-        <module name="JavadocVariable">
-            <property name="scope" value="protected"/>
-        </module>
-
-        <!-- Item 29 - Minimize the scope of local variables -->
-        <!-- no rfe yet -->
-
-
-        <!-- Item 38 - Adhere to generally accepted naming conventions -->
-        <module name="PackageName">
-            <!-- no uppercase letters, between 2 and 10 characters -->
-            <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]{1,9})*$"/>
-        </module>
-        <module name="TypeName"/>
-        <module name="ConstantName"/>
-        <module name="LocalFinalVariableName"/>
-        <module name="LocalVariableName"/>
-        <module name="MemberName"/>
-        <module name="MethodName"/>
-        <module name="ParameterName"/>
-        <module name="StaticVariableName"/>
-
-        <!-- Item 47 - Don't ignore exceptions -->
-        <module name="EmptyBlock">
-            <property name="tokens" value="LITERAL_CATCH"/>
-            <!-- require a comment, change to stmt to require a statement -->
-            <property name="option" value="text"/>
-        </module>
-
-        <!-- Item 50 - Never invoke wait outside a loop -->
-        <!-- rfe #712798 -->
-
-        <!-- Item 57 - Provide a readResolve method when necessary -->
-        <!-- no rfe yet -->
-
-        <!-- don't allow tabs -->
-        <module name="TabCharacter"/>
-
-        <!-- enforce License Header using a RegExp file to allow some variations
-like the years in copyrights or values of SVN variables. -->
-        <module name="RegexpHeader">
-            <property name="headerFile" value="LICENSE.CheckStyle"/>
-        </module>
-
-    </module>
-
-    <!-- enforce package documentation -->
-    <module name="PackageHtml"/>
-
-</module>
diff --git a/build-legacy/taglib/project.properties b/build-legacy/taglib/project.properties
deleted file mode 100644
index b1ea73d..0000000
--- a/build-legacy/taglib/project.properties
+++ /dev/null
@@ -1,124 +0,0 @@
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S - Modeled after Turbine project.properties
-#
-# $Id: project.properties 105881 2004-11-19 21:00:43Z germuska $
-#
-# Do not change this file. Please use build.properties in this directory
-# to do site or installation specific changes to the project build.
-# -------------------------------------------------------------------
-
-maven.repo.remote=http://www.ibiblio.org/maven/,http://cvs.apache.org/repository/
-
-maven.checkstyle.properties = conf/qa/CheckStyle.xml
-
-#keep ant & maven directories separate.
-#We do this in struts core, but I think as we move to use Maven more, we will
-# probably use the normal "target" dir.
-#maven.build.dir=m-target
-
-# doc.dir is a property used in the original Ant-oriented build.xml.
-# define it here to make it easier to port ant tasks to maven.xml
-doc.dir=doc
-
-# display the date on the site
-maven.xdoc.date = left
-# Display the version the web site is documenting
-maven.xdoc.version = ${pom.currentVersion}
-# Days to report in the change log
-maven.changelog.range=30
-
-compile.debug = on
-compile.optimize = off
-compile.deprecation = on
-maven.compile.deprecation = on
-
-# -------------------------------------------------------------------
-# D E P L O Y M E N T  P R O P E R T I E S
-# -------------------------------------------------------------------
-#- maven.repo.central and maven.repo.central.directory are used to deploy
-#- jars to be used by other projects.  
-#
-#- For nightly builds, use:
-#-    maven jar:deploy-snapshot 
-#- This will deploy to the 'default' directory, which corresponds to the "remote" repository
-#-  http://cvs.apache.org/repository/
-#- For production builds, use:
-#-    maven -Dmaven.repo.central.directory=/www/www.apache.org/dist/java-repository/ jar:deploy
-#- That directory is periodically mirrored with the "standard" Maven repo at ibiblio
-#- Specify your username at the remote repository (cvs.apache.org) 
-#- with the maven property 'maven.username'
-maven.repo.central=cvs.apache.org
-maven.repo.central.directory=/www/cvs.apache.org/repository/ # nightly builds
-#maven.repo.central.directory=/www/www.apache.org/dist/java-repository/ # releases
-
-# -------------------------------------------------------------------
-# N I G H T L Y   B U I L D   P R O P E R T I E S
-# -------------------------------------------------------------------
-
-validator.nightly.dist.dir = \
-    /www/jakarta.apache.org/builds/jakarta-struts/nightly
-    
-# -------------------------------------------------------------------
-# X D O C   P R O P E R T I E S
-# -------------------------------------------------------------------
-#maven.xdoc.includeProjectDocumentation=no
-#Comment out the following line to use the standard Maven stylesheet
-maven.xdoc.jsl=struts.jsl
-# Links to Struts Development Process doc instead of Maven default doc
-maven.xdoc.developmentProcessUrl=/releases.html
-
-#Powered By logo 
-#maven.xdoc.poweredby.image=struts-power.gif
-#maven.xdoc.poweredby.title=Powered by Struts
-#maven.xdoc.poweredby.url=http://jakarta.apache.org/struts/
-maven.xdoc.poweredby.image=
-maven.xdoc.poweredby.title=
-maven.xdoc.poweredby.url=
-
-maven.ui.banner.background=#ffffff
-maven.ui.banner.foreground=#000000
-maven.ui.banner.border.top=#ffffff
-maven.ui.banner.border.bottom=#ffffff
-
-maven.ui.navcol.background=#ffffff
-maven.ui.navcol.border.top=#ffffff
-maven.ui.navcol.border.right=#ffffff
-maven.ui.navcol.border.bottom=#ffffff
-
-maven.ui.breadcrumbs.background=#ffffff
-maven.ui.breadcrumbs.foreground=#666666
-maven.ui.breadcrumbs.border.top=#ffffff
-maven.ui.breadcrumbs.border.bottom=#000000
-
-# -------------------------------------------------------------------
-# C A C T U S   P L U G - I N   P R O P E R T I E S
-# -------------------------------------------------------------------
-cactus.src.dir = src/test
-cactus.src.includes = org/apache/struts/action/TestActionServlet.java,org/apache/struts/taglib/**/Test*.java
-
-## Cactus Plug-in: Tomcat 4 specific 
-# cactus.tomcat4x.config (optional)
-# Location of the Tomcat 4.x configuration file if you don't want to use the cactus-provided one.
-# cactus.tomcat4x.conf.dir (optional)
-# Location of custom Tomcat 4.x configuration file that will be copied, overwriting the Cactus-provided configuration files.
-cactus.tomcat4x.conf.dir = conf/test/tomcat41
-# cactus.tomcat4x.conf.includes (optional)
-# Configuration files located at${cactus.tomcat4x.conf.dir that should be included in the Tomcat 4.x container set up by Cactus.
-# cactus.tomcat4x.conf.excludes (optional)
-# Configuration files located at${cactus.tomcat4x.conf.dir that should not be included in the Tomcat 4.x container set up by Cactus.
-# cactus.tomcat4x.tmpdir (optional)
-# Directory to which the container will be installed for the tests. By default the system temporary directory is used.
-
-# -------------------------------------------------------------------
-# A P A C H E  R E P O S I T O R Y  P R O P E R T I E S
-# -------------------------------------------------------------------
-# Because the repository user name is different for each person, it should not
-# be defined in the shared "project.properties"  
-# Define this on the command line, or in your own build.properties file:
-# in order to deploy to the repository:
-#ssh configuration settings just require your apache id to log on with
-#maven.username=<apache-user-name> (DON'T UNCOMMENT THIS LINE IN SHARED project.propert
-
-maven.changelog.factory = org.apache.maven.svnlib.SvnChangeLogFactory
-
-
diff --git a/build-legacy/taglib/struts.jsl b/build-legacy/taglib/struts.jsl
deleted file mode 100755
index c7da3d4..0000000
--- a/build-legacy/taglib/struts.jsl
+++ /dev/null
@@ -1,507 +0,0 @@
-<?xml version="1.0"?>
-<!-- $Id: struts.jsl 51220 2003-12-11 20:08:07Z sraeburn $ -->
-<jsl:stylesheet select="$doc"
-  xmlns:define="jelly:define"
-  xmlns:j="jelly:core"
-  xmlns:jsl="jelly:jsl"
-  xmlns:log="jelly:log"
-  xmlns:util="jelly:util"
-  xmlns:x="jelly:xml"
-  xmlns:doc="doc"
-  xmlns="dummy" trim="false">
-  <jsl:template match="document" trim="false">
-    <j:useBean var="navbean" class="org.apache.maven.NavBean"/>
-    <j:set var="location" value="${outFile.substring(destdir.length())}"/>
-    <util:replace var="location" oldChar="\" newChar="/" value="${location}"/>
-
-    <!-- Stores location for publish date / version -->
-    <j:set var="date">${maven.xdoc.date}</j:set>
-      
-    <j:setProperties 
-        object="${navbean}"
-        document="${doc}"
-        location="${location}"/>
-    
-    <x:doctype name="html"
-      publicId="-//W3C//DTD XHTML 1.0 Transitional//EN"
-      systemId="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
-
-    <html>
-      <head>
-        <j:set var="docTitle">
-          <x:expr select="./properties/title"/>
-        </j:set>
-        <x:if select="$nav/title">
-          <title>
-            <x:expr select="$nav/title"/> - ${docTitle}
-          </title>
-        </x:if>
-        <x:if select="not($nav/title)">
-          <title>${pom.name} - ${docTitle}</title>
-        </x:if>
-        
-        <style type="text/css"><![CDATA[
-          @import url("${relativePath}/style/struts.css");
-          @import url("${relativePath}/style/maven.css");
-        ]]></style>
-        
-        <util:file var="projectCssFile" name="${maven.docs.src}/style/project.css"/>
-        <j:if test="${projectCssFile.exists()}">
-          <style type="text/css"><![CDATA[
-            @import url("${relativePath}/style/project.css");
-          ]]></style>
-        </j:if>
-        
-        <!-- FIXME: once someone works out how to stop this breaking
-        <x:element name="script"><x:attribute name="type">text/javascript</x:attribute>
-          if (document.layers) {
-                document.writeln(''+
-                '<link rel="stylesheet" type="text/css" href="${relativePath}/style/ns4_only.css" media="screen" /><link rel="stylesheet" type="text/css" href="${relativePath}/style/maven_ns4_only.css" media="screen"/>');
-              }
-            </x:element>
-        -->
-        <link rel="stylesheet" type="text/css" href="${relativePath}/style/print.css" media="print"/>
-        <meta http-equiv="Content-Type" content="text/html; charset=${outputencoding}"></meta>
-        <x:forEach var="author" select="./properties/author">
-          <meta name="author" content="${author.text}"/>
-          <meta name="email" content="${author.attribute('email').value}"/>
-        </x:forEach>
-        
-        <jsl:applyTemplates select="$doc/document/head/*"/>
-        
-      </head>
-
-      <x:element name="body"><j:whitespace trim="true">
-        <x:attribute name="class">composite</x:attribute>
-        <x:forEach var="attr" select="$doc/document/body/@*">
-          <x:attribute name="${attr.name}">${attr.value}</x:attribute>
-        </x:forEach>
-        </j:whitespace>
-
-        <div id="banner">
-          <table border="0" cellspacing="0" cellpadding="8" width="100%">
-            <tr>
-              <!-- organization logo -->
-              <td>
-                <j:set var="logo" value="${pom.organization.logo}"/>
-                <j:if test="${!empty(logo)}">
-                  <!-- set url to org or project url -->
-                  <j:set var="url" value="${pom.organization.url}"/>
-                  <j:if test="${!empty(url)}">
-                    <j:set var="home" value="${pom.organization.url}"/>
-                  </j:if>
-                  <j:if test="${empty(url)}">
-                    <j:set var="home" value="${pom.url}"/>
-                  </j:if>
-                  <!-- set image to relative or complete -->
-                  <j:set var="image" value="${pom.organization.logo}"/>
-                  <j:if test="${!image.startsWith('http://')}">
-                    <j:set var="image" value="${relativePath}${image}"/>
-                  </j:if>
-                  <a href="${home}">
-                    <img src="${image}" align="left" alt="${pom.organization.name}" border="0"/>
-                  </a>
-                </j:if>
-              </td>
-
-              <!-- project logo and link -->
-              <td>
-                <div align="right" id="login">
-                  <j:set var="logo" value="${pom.logo}"/>
-                  <j:if test="${logo != null and logo != ''}">
-                    <!-- set image to relative or complete -->
-                    <j:set var="image" value="${pom.logo}"/>
-                    <j:if test="${!image.startsWith('http://')}">
-                      <j:set var="image" value="${relativePath}${image}"/>
-                    </j:if>
-
-                    <a href="${pom.url}">
-                      <img src="${image}" align="right" alt="${pom.name}" border="0"/>
-                    </a>
-                  </j:if>
-                </div>
-              </td>
-            </tr>
-          </table>
-        </div>
-        <div id="breadcrumbs">
-          <table border="0" cellspacing="0" cellpadding="4" width="100%">
-            <tr>
-              <j:if test="${date == 'left'}">
-                <j:set var="version" value="${maven.xdoc.version}"/>
-                <td>Last published: ${build.date}
-                  <j:if test="${!empty(version)}">| Doc for ${version}</j:if>
-                </td>
-              </j:if>
-              <td>
-                <div align="right">
-                  <j:if test="${date == 'right'}">
-                    Last published: ${build.date}
-                    <x:if select="$nav/body/links">|</x:if>
-                  </j:if>
-                  <!-- render links -->
-                  <x:if select="$nav/body/links">
-                    <jsl:applyTemplates select="$nav/body/links"/>
-                  </x:if>
-                  <x:if select="not($nav/body/links)">
-                    <!-- FIXME &nbsp; -->
-                  </x:if>
-                </div>
-              </td>
-            </tr>
-          </table>
-        </div>
-        <!-- Body of the page -->
-        <table border="0" cellspacing="0" cellpadding="8" width="100%"> <!--id="main" -->
-          <tr valign="top">
-            <td id="leftcol" width="20%">
-              <div id="navcolumn">
-                <j:if test="${date == 'navigation-top'}">
-                  <div>
-                    <small>Last published: ${build.date}</small>
-                  </div>
-                </j:if>
-
-                <x:if select="$nav">
-                  <jsl:applyTemplates select="$nav/body/menu[not(@type) | @type='header'] | $nav/body/search"/>
-                </x:if>
-
-                <jsl:applyTemplates select="$projectNav/body/menu"/>
-                
-                <!-- Standard Maven Navigation -->
-                <j:set var="fileName">${file}</j:set>
-
-                <j:set var="poweredbyimage">${maven.xdoc.poweredby.image}</j:set>
-                <j:set var="poweredbytitle">${maven.xdoc.poweredby.title}</j:set>
-                <j:set var="poweredbyurl">${maven.xdoc.poweredby.url}</j:set>
-                <j:if test="${!empty(poweredbyimage)}">
-                    <div style="margin-top: 20px; width: 100%; text-align: center;">
-                        <a href="${poweredbyurl}" title="${poweredbytitle}"><img alt="${maven.xdoc.poweredby.title}" style="border: 1px solid black" src="${relativePath}/images/logos/${poweredbyimage}"/></a>
-                    </div>
-                </j:if>
-              
-                <j:if test="${date == 'navigation-bottom'}">
-                  <div>
-                    <small>Last published: ${build.date}</small>
-                  </div>
-                </j:if>
-              </div>
-            </td>
-            <td rowspan="2">
-              <div id="bodycol">
-                <!-- Insert MAIN body here -->
-                <div class="app">
-                  <!-- FIXME really shouldn't use $doc, but jelly loses it's context again -->
-                  <jsl:applyTemplates select="$doc/document/body/section"/>
-                  <jsl:applyTemplates select="$doc/document/body/glossary" />
-                  <jsl:applyTemplates select="$doc/document/body/release" />
-                  <jsl:applyTemplates select="$doc/document/body/changelog" />
-                  <jsl:applyTemplates select="$doc/document/body/taskList" />
-                  <jsl:applyTemplates select="$doc/document/body/goals" />
-                </div>
-              </div>
-            </td>
-          </tr>
-        </table>
-        <div id="footer">
-          <table style='width:100%' border="0" cellspacing="0" cellpadding="4">
-            <jsl:applyTemplates select="$nav/body/footer"/>
-            <tr>
-              <td>
-                <j:if test="${!empty(pom.organization.name)}">
-                  <j:if test="${!empty(pom.inceptionYear)}">
-                    <j:if test="${pom.inceptionYear == mavenCurrentYear}">
-                      &#169; ${mavenCurrentYear}, ${pom.organization.name}
-                    </j:if>
-                    <j:if test="${pom.inceptionYear != mavenCurrentYear}">
-                      &#169; ${pom.inceptionYear}-${mavenCurrentYear}, ${pom.organization.name}
-                    </j:if>
-                  </j:if>
-                  <j:if test="${empty(pom.inceptionYear)}">
-                    &#169; ${mavenCurrentYear}, ${pom.organization.name}
-                  </j:if>
-                </j:if>
-
-                <j:if test="${date == 'bottom'}">
-                  - Last published: ${build.date}
-                </j:if>
-              </td>
-              <j:if test="${date == 'bottom-right'}">
-                <td style='width: auto; text-align:right'>Last published: ${build.date}</td>
-              </j:if>
-            </tr>
-          </table>
-        </div>
-      </x:element>
-    </html>
-  </jsl:template>
-
-  <!-- process the properties of the doc -->
-  <jsl:template match="properties" trim="false">
-    <!-- stick head block here later -->
-  </jsl:template>
-
-  <!-- Process a menu for the navigation bar -->
-  <jsl:template match="menu" trim="false">
-    <div>
-      <strong><x:expr select="@name"/></strong>
-      <jsl:applyTemplates select="item"/>
-    </div>
-  </jsl:template>
-
-  <jsl:template match="item" trim="false">
-    <x:set var="item" select="."/>
-    <x:set var="_name" select="string(@name)"/>
-    <x:set var="_link" select="string(@href)"/>
-    <x:set var="_img" select="string(@img)"/>
-    <x:set var="_childCount" select="count(./item)"/>
-    <j:set var="_isCollapsed" value="${navbean.isCollapsed(item.get(0))}"/>
-    <j:set var="_state" value="none"/>
-    
-    <j:if test="${_childCount.intValue() gt 0}">
-        <j:if test="${!_isCollapsed}">
-          <j:set var="_state" value="expanded"/>
-        </j:if>
-        <j:if test="${_isCollapsed}">
-          <j:set var="_state" value="collapsed"/>
-        </j:if>
-    </j:if>
-           
-    
-    <div>
-      <small>
-        <j:if test="${navbean.isSelected(item.get(0))}">
-            <b><doc:itemLink name="${_name}" link="${_link}" img="${_img}" state="${_state}"/></b>
-        </j:if>
-        <j:if test="${!navbean.isSelected(item.get(0))}">
-            <doc:itemLink name="${_name}" link="${_link}" img="${_img}" state="${_state}"/>
-        </j:if>
-      </small>
-      <j:if test="${!navbean.isCollapsed(item.get(0))}">
-        <jsl:applyTemplates select="item"/>
-      </j:if>
-    </div>
-  </jsl:template>
-
-  <!-- Process the breadcrumb navbar -->
-  <jsl:template match="links" trim="false">
-    <j:set var="linkCount" value="1"/>
-    <x:forEach var="link" select="item">
-      <j:if test="${linkCount != 1}">|</j:if>
-      <j:set var="_name"><x:expr select="@name"/></j:set>
-      <j:set var="_link"><x:expr select="@href"/></j:set>
-      <doc:itemLink name="${_name}" link="${_link}"/>
-      <j:set var="linkCount" value="${1+linkCount}"/>
-    </x:forEach>
-  </jsl:template>
-
-  <!-- Google site search -->
-  <jsl:template match="search" trim="false">
-    <!-- Search code: http://www.google.com/searchcode.html -->
-    <!-- Google logos: http://www.google.com/stickers.html -->
-    <!-- Terms: http://www.google.com./services/terms_free.html -->
-    <div>
-      <strong>Search ${pom.name}</strong>
-      <form method="get" action="http://www.google.com/search">
-        <a class="navlink" href="http://www.google.com">
-          <img src="http://www.google.com/logos/Logo_25wht.gif" 
-               alt="Google" border="0" />
-        </a><p/>
-        <j:set var="siteURL" value="${pom.url}"/>
-        <!-- google fails on urls that end with / -->
-        <j:if test="${siteURL.endsWith('/')}">
-          <j:set var="URLLength" value="${siteURL.length() - 1}"/>
-          <j:set var="siteURL" value="${siteURL.substring(0, URLLength.intValue())}"/>
-        </j:if>
-        <input type="text" size="15" name="q" maxlength="255" value=""/>
-        <input type="submit" value="Go" name="btnG"/>
-        <input type="hidden" name="domains" value="${siteURL}"/>
-        <input type="hidden" id="search" name="sitesearch" value="${siteURL}"/>
-      </form>
-    </div>
-  </jsl:template>
-
-  <!-- process a documentation section -->
-  <jsl:template match="section" trim="false">
-    <div class="h3">
-      <j:set var="_sectionName"><x:expr select="@name"/></j:set>
-      <j:if test="${!empty(_sectionName)}">
-        <h3>
-          <a name="${_sectionName}">${_sectionName}</a>
-        </h3>
-      </j:if>
-      <jsl:applyTemplates select="*"/>
-    </div>
-  </jsl:template>
-
-  <jsl:template match="subsection" trim="false">
-    <div class="h4">
-      <j:set var="_sectionName"><x:expr select="@name"/></j:set>
-      <j:if test="${!empty(_sectionName)}">
-        <h4>
-          <a name="${_sectionName}">${_sectionName}</a>
-        </h4>
-      </j:if>
-      <jsl:applyTemplates select="*"/>
-    </div>
-  </jsl:template>
-
-  <jsl:template match="source" trim="false">
-    <div id="source">
-      <pre><x:expr select="."/></pre>
-    </div>
-  </jsl:template>
-
-  <jsl:template match="footer" trim="false">
-    <tr>
-      <td>
-        <jsl:applyTemplates select="*"/>
-      </td>
-    </tr>
-  </jsl:template>
-
-  <jsl:template match="table" trim="false">
-    <j:set var="rowcount" value="0"/>
-    <table cellpadding="3" cellspacing="2" border="1" width="100%">
-      <jsl:applyTemplates select="*"/>
-    </table>
-  </jsl:template>
-
-  <jsl:template match="tr" trim="false">
-    <j:choose>
-      <j:when test="${rowMode == 'a'}">
-        <j:set var="rowMode" value="b"/>
-      </j:when>
-      <j:otherwise>
-        <j:set var="rowMode" value="a"/>
-      </j:otherwise>
-    </j:choose>
-
-    <!-- copy attributes FIXME: Shouldn't this only be colspan|rowspan? -->
-    <x:element name="tr"><j:whitespace trim="true">
-      <x:attribute name="class">${rowMode}</x:attribute>
-      <x:forEach var="attr" select="@*">
-        <x:attribute name="${attr.name}">${attr.value}</x:attribute>
-      </x:forEach>
-      <jsl:applyTemplates select="*"/>
-</j:whitespace></x:element>
-  </jsl:template>
-
-  <!--************************-->
-  <!-- glossary documentation -->
-  <!--************************-->
-  <jsl:template match="glossary" trim="false">
-    <jsl:applyTemplates select="glossary-entries/glossary-entry" />
-  </jsl:template>
-      
-  <jsl:template match="glossary-entry" trim="false">
-    <strong><x:expr select="name" /></strong>
-    <br/>
-    <x:expr select="definition" />
-    <p/>
-  </jsl:template>
-
-      <!--************************-->
-      <!-- goals documentation    -->
-      <!--************************-->
-      <jsl:template match="goals" trim="false">
-        <!-- reset row alternation -->
-        <j:set var="rowMode" value="" />
-        <div class="h3">
-          <h3><a name="Goals">Goals</a></h3>
-          <table>
-            <tr width='100%'><th>Goal</th><th>Description</th></tr>
-            <jsl:applyTemplates select="goal"/>
-          </table>
-        </div>
-      </jsl:template>
-      
-      <!-- a goal -->
-        <!-- FIXME: this is copied from tr - there must be a way of
-             calling templates in jsl? -->
-      <jsl:template match="goal" trim="false">
-        <j:choose>
-          <j:when test="${rowMode == 'a'}">
-            <j:set var="rowMode" value="b"/>
-          </j:when>
-          <j:otherwise>
-            <j:set var="rowMode" value="a"/>
-          </j:otherwise>
-        </j:choose>
-        
-        <x:element name="tr"><j:whitespace trim="true">
-          <x:attribute name="class">${rowMode}</x:attribute>
-          <j:set var="_goalName"><x:expr select="./name" /></j:set>
-          <td width='20%'><a name="${_goalName}">${_goalName}</a></td>
-          <td width='80%'><jsl:applyTemplates select="description" /></td>
-</j:whitespace></x:element>
-      </jsl:template>   
-      
-      <jsl:template match="description">
-        <jsl:copy trim="false">
-          <jsl:applyTemplates trim="false"/>
-        </jsl:copy>
-      </jsl:template>
-
-      <!--************************-->
-      <!-- changelog documentation-->
-      <!--************************-->
-      <jsl:template match="changelog" trim="false">
-        <j:set var="rowMode" value="" />
-        <table width="100%">
-          <tr>
-            <th>Date</th><th>Author</th><th>Files/Message</th>
-          </tr>
-          <jsl:applyTemplates select="changelog-entry" />
-        </table>
-      </jsl:template>
-
-      <!-- transform a changelog entry -->
-      <!-- FIXME: tr code copied from above -->
-      <jsl:template match="changelog-entry" trim="false">
-        <j:choose>
-          <j:when test="${rowMode == 'a'}">
-            <j:set var="rowMode" value="b"/>
-          </j:when>
-          <j:otherwise>
-            <j:set var="rowMode" value="a"/>
-          </j:otherwise>
-        </j:choose>
-        
-        <x:element name="tr"><j:whitespace trim="true">
-          <x:attribute name="class">${rowMode}</x:attribute>
-          
-          <td><x:expr select="date" /> <x:expr select="time" /></td>
-          <td><x:expr select="author"/></td>
-          <td><jsl:applyTemplates select="*" />
-            <pre><x:expr select="msg"/></pre>
-          </td>
-</j:whitespace></x:element>
-      </jsl:template>
-
-      <jsl:template match="file">
-        <j:set var="url">${pom.repository.url}<x:expr select="name"/></j:set>
-        <j:set var="revUrl">${url}?<x:expr select="revision"/>&amp;content-type=text/vnd.viewcvs-markup</j:set>
-        <a href="${url}"><x:expr select="name"/></a> - 
-        <a href="${revUrl}">v<x:expr select="revision"/></a>
-        <br/>
-      </jsl:template>
-
-  <!-- remove the space at the end of parsed "a" anchors -->
-  <jsl:template match="a" trim="false">
-    <jsl:copy trim="true">
-      <jsl:applyTemplates trim="true"/>
-    </jsl:copy>
-  </jsl:template>
-
-  <!-- copy any other elements through -->
-  <jsl:template match="*" trim="false"><jsl:copy trim="false">
-      <jsl:applyTemplates trim="false"/></jsl:copy></jsl:template>
-
-   <!-- element values don't pass through as text -->
-   <jsl:template match="@*"/>
-
-   <!-- CDATA and text nodes pass-thru -->
-   <jsl:template match="text()"><x:expr select="."/></jsl:template>
-
-</jsl:stylesheet>
diff --git a/build-legacy/tiles/maven.xml b/build-legacy/tiles/maven.xml
deleted file mode 100755
index 471ae63..0000000
--- a/build-legacy/tiles/maven.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>

-

-<project    default="apps:build-all"

-            xmlns:j="jelly:core"

-            xmlns:ant="jelly:ant"

-            xmlns:maven="jelly:maven">

-

-

-  <postGoal name="dist">

-    <attainGoal name="jar:install"/>

-  </postGoal>

-  

-  

-  <!-- Prepare additional Jar resources -->

-  <postGoal name="java:jar-resources">

-

-    <!-- Generate TLDs -->

-    ${systemScope.setProperty('javax.xml.transform.TransformerFactory','org.apache.xalan.processor.TransformerFactoryImpl')}

-	<ant:style basedir="doc/userGuide"

-		destdir="${maven.build.dir}/classes/META-INF/tlds"

-		extension=".tld"

-		style="doc/stylesheets/tld.xsl"

-		includes="struts-*.xml"/>

-  </postGoal>

-    

-</project>

diff --git a/build-legacy/tiles/project.properties b/build-legacy/tiles/project.properties
deleted file mode 100644
index b1ea73d..0000000
--- a/build-legacy/tiles/project.properties
+++ /dev/null
@@ -1,124 +0,0 @@
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S - Modeled after Turbine project.properties
-#
-# $Id: project.properties 105881 2004-11-19 21:00:43Z germuska $
-#
-# Do not change this file. Please use build.properties in this directory
-# to do site or installation specific changes to the project build.
-# -------------------------------------------------------------------
-
-maven.repo.remote=http://www.ibiblio.org/maven/,http://cvs.apache.org/repository/
-
-maven.checkstyle.properties = conf/qa/CheckStyle.xml
-
-#keep ant & maven directories separate.
-#We do this in struts core, but I think as we move to use Maven more, we will
-# probably use the normal "target" dir.
-#maven.build.dir=m-target
-
-# doc.dir is a property used in the original Ant-oriented build.xml.
-# define it here to make it easier to port ant tasks to maven.xml
-doc.dir=doc
-
-# display the date on the site
-maven.xdoc.date = left
-# Display the version the web site is documenting
-maven.xdoc.version = ${pom.currentVersion}
-# Days to report in the change log
-maven.changelog.range=30
-
-compile.debug = on
-compile.optimize = off
-compile.deprecation = on
-maven.compile.deprecation = on
-
-# -------------------------------------------------------------------
-# D E P L O Y M E N T  P R O P E R T I E S
-# -------------------------------------------------------------------
-#- maven.repo.central and maven.repo.central.directory are used to deploy
-#- jars to be used by other projects.  
-#
-#- For nightly builds, use:
-#-    maven jar:deploy-snapshot 
-#- This will deploy to the 'default' directory, which corresponds to the "remote" repository
-#-  http://cvs.apache.org/repository/
-#- For production builds, use:
-#-    maven -Dmaven.repo.central.directory=/www/www.apache.org/dist/java-repository/ jar:deploy
-#- That directory is periodically mirrored with the "standard" Maven repo at ibiblio
-#- Specify your username at the remote repository (cvs.apache.org) 
-#- with the maven property 'maven.username'
-maven.repo.central=cvs.apache.org
-maven.repo.central.directory=/www/cvs.apache.org/repository/ # nightly builds
-#maven.repo.central.directory=/www/www.apache.org/dist/java-repository/ # releases
-
-# -------------------------------------------------------------------
-# N I G H T L Y   B U I L D   P R O P E R T I E S
-# -------------------------------------------------------------------
-
-validator.nightly.dist.dir = \
-    /www/jakarta.apache.org/builds/jakarta-struts/nightly
-    
-# -------------------------------------------------------------------
-# X D O C   P R O P E R T I E S
-# -------------------------------------------------------------------
-#maven.xdoc.includeProjectDocumentation=no
-#Comment out the following line to use the standard Maven stylesheet
-maven.xdoc.jsl=struts.jsl
-# Links to Struts Development Process doc instead of Maven default doc
-maven.xdoc.developmentProcessUrl=/releases.html
-
-#Powered By logo 
-#maven.xdoc.poweredby.image=struts-power.gif
-#maven.xdoc.poweredby.title=Powered by Struts
-#maven.xdoc.poweredby.url=http://jakarta.apache.org/struts/
-maven.xdoc.poweredby.image=
-maven.xdoc.poweredby.title=
-maven.xdoc.poweredby.url=
-
-maven.ui.banner.background=#ffffff
-maven.ui.banner.foreground=#000000
-maven.ui.banner.border.top=#ffffff
-maven.ui.banner.border.bottom=#ffffff
-
-maven.ui.navcol.background=#ffffff
-maven.ui.navcol.border.top=#ffffff
-maven.ui.navcol.border.right=#ffffff
-maven.ui.navcol.border.bottom=#ffffff
-
-maven.ui.breadcrumbs.background=#ffffff
-maven.ui.breadcrumbs.foreground=#666666
-maven.ui.breadcrumbs.border.top=#ffffff
-maven.ui.breadcrumbs.border.bottom=#000000
-
-# -------------------------------------------------------------------
-# C A C T U S   P L U G - I N   P R O P E R T I E S
-# -------------------------------------------------------------------
-cactus.src.dir = src/test
-cactus.src.includes = org/apache/struts/action/TestActionServlet.java,org/apache/struts/taglib/**/Test*.java
-
-## Cactus Plug-in: Tomcat 4 specific 
-# cactus.tomcat4x.config (optional)
-# Location of the Tomcat 4.x configuration file if you don't want to use the cactus-provided one.
-# cactus.tomcat4x.conf.dir (optional)
-# Location of custom Tomcat 4.x configuration file that will be copied, overwriting the Cactus-provided configuration files.
-cactus.tomcat4x.conf.dir = conf/test/tomcat41
-# cactus.tomcat4x.conf.includes (optional)
-# Configuration files located at${cactus.tomcat4x.conf.dir that should be included in the Tomcat 4.x container set up by Cactus.
-# cactus.tomcat4x.conf.excludes (optional)
-# Configuration files located at${cactus.tomcat4x.conf.dir that should not be included in the Tomcat 4.x container set up by Cactus.
-# cactus.tomcat4x.tmpdir (optional)
-# Directory to which the container will be installed for the tests. By default the system temporary directory is used.
-
-# -------------------------------------------------------------------
-# A P A C H E  R E P O S I T O R Y  P R O P E R T I E S
-# -------------------------------------------------------------------
-# Because the repository user name is different for each person, it should not
-# be defined in the shared "project.properties"  
-# Define this on the command line, or in your own build.properties file:
-# in order to deploy to the repository:
-#ssh configuration settings just require your apache id to log on with
-#maven.username=<apache-user-name> (DON'T UNCOMMENT THIS LINE IN SHARED project.propert
-
-maven.changelog.factory = org.apache.maven.svnlib.SvnChangeLogFactory
-
-