<?xml version="1.0"?>
<!--
Copyright 1999-2005 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.
-->
<!--
// ======================================================================== 78
-->
<document>


    <properties>
        <title>Javadoc Index</title>
    </properties>

    <body>

        <section name="Javadoc">
            <table>
                <tr>
                    <th>
                        <a href="struts-action/apidocs/index.html">Struts
                            Action Framework</a>
                    </th>
                </tr>
                <!--
                <tr>
                  <th><a href="struts-apps/apidocs/index.html">Struts Applications</a></th>
                </tr>
                -->
                <tr>
                    <th>
                        <a href="struts-el/apidocs/index.html">Struts EL</a>
                    </th>
                </tr>
                <tr>
                    <th>
                        <a href="struts-extras/apidocs/index.html">Struts
                            Extras</a>
                    </th>
                </tr>
                <tr>
                    <th>
                        <a href="struts-flow/apidocs/index.html">Struts
                            Flow</a>
                    </th>
                </tr>
                <tr>
                    <th>
                        <a href="struts-faces/apidocs/index.html">Struts JSF
                            Integration Library</a>
                    </th>
                </tr>
                <tr>
                    <th>
                        <a href="struts-sandbox/apidocs/index.html">Struts
                            Sandbox</a>
                    </th>
                </tr>
                <tr>
                    <th>
                        <a href="struts-scripting/apidocs/index.html">Struts
                            Scripting</a>
                    </th>
                </tr>
                <tr>
                    <th>
                        <a href="struts-taglib/apidocs/index.html">Struts
                            Taglibs</a>
                    </th>
                </tr>
                <tr>
                    <th>
                        <a href="struts-tiles/apidocs/index.html">Struts
                            Tiles</a>
                    </th>
                </tr>
            </table>
            <br/>
            <table>
                <tr>
                    <th>
                        <a href="struts-shale/shale-core/apidocs/index.html">
                            Shale Core Library</a>
                    </th>
                </tr>
                <tr>
                    <th>
                        <a href="struts-shale/shale-clay/apidocs/index.html">
                            Shale Clay Plug-In</a>
                    </th>
                </tr>
                <tr>
                    <th>
                        <a href="struts-shale/shale-test/apidocs/index.html">
                            Shale Test Framework</a>
                    </th>
                </tr>
                <tr>
                    <th>
                        <a href="struts-shale/shale-usecases/apidocs/index.html">
                            Shale Use Cases Sample App</a>
                    </th>
                </tr>
                <tr>
                    <th>
                        <a href="struts-shale/shale-spring/apidocs/index.html">
                            Shale Spring Integration</a>
                    </th>
                </tr>
                <tr>
                    <th>
                        <a href="struts-shale/shale-tiles/apidocs/index.html">
                            Shale Tiles Integration</a>
                    </th>
                </tr>
                <tr>
                    <th>
                        <a href="struts-shale/shale-mailreader/apidocs/index.html">
                            Shale MailReader</a>
                    </th>
                </tr>
            </table>

        </section>

        <section>
            <p class="right">Next:
                <a href="http://svn.apache.org/viewcvs.cgi/struts/action/trunk/?root=Apache-SVN">
                    Source Repository</a>
            </p>
        </section>

    </body>
</document>
