<?xml version="1.0"?>
<!--
/*
 * $Id$
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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.
 */
-->
<document>

    <properties>
        <title>Home</title>
    </properties>

    <body>

        <section name="Tiles 2">

        <p><strong><a href="http://tiles.apache.org">Apache Tiles</a></strong>
        is a templating framework built to simplify the development of web
        application user interfaces.</p>

        <p>Tiles allows authors to define page fragments which can be assembled
        into a complete page at runtime.  These fragments, or tiles, can be used
        as simple includes in order to reduce the duplication of common page
        elements or embedded within other tiles to develop a series of reusable
        templates. These templates streamline the development of a consistent
        look and feel across an entire application.</p>
        
        <p><a href="/download-21.html">Download Tiles</a></p>
        <p><a href="security/index.html">Security bulletins</a></p>
        
        <subsection name="Documentation">
          <ul>
            <li><a href="whats-new.html"><strong>What's new in Tiles 2.1</strong></a></li>
            <li><a href="getting_started.html">Getting Started</a></li>
            <li><a href="tutorial/index.html">Tutorial</a></li>
            <li><a href="migration/index.html">Migration from Struts-Tiles</a></li>
            <li><a href="how-to/index.html">HOW-TOs</a></li>
            <li><a href="config-reference.html">Configuration Reference</a></li>
            <li><a href="apidocs/index.html">Javadocs</a></li>
            <li><a href="tlddoc/index.html">Tag library documentation</a></li>
            <li><a href="dtddoc/index.html">Tiles definition file documentation</a></li>
            <li><a href="http://cwiki.apache.org/TILES/">Wiki</a></li>
          </ul>
        </subsection>
        </section>
</body>

</document>
