<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
/*
 * $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.
 */
-->
<project name="Apache Tiles - Framework">
    <bannerLeft>
        <name>Apache Software Foundation</name>
        <src>http://www.apache.org/images/asf-logo.gif</src>
        <href>http://www.apache.org</href>
    </bannerLeft>
    <bannerRight>
        <name>Apache Tiles&#8482;</name>
        <src>http://tiles.apache.org/images/logo.png</src>
        <href>http://tiles.apache.org</href>
    </bannerRight>
    <body>

        <links>
            <item name="Apache" href="http://www.apache.org" />
            <item name="Tiles" href="http://tiles.apache.org" />
        </links>


        <menu name="Apache Tiles&#8482;">
            <item
                   name="Home"
                   href="../index.html"/>
            <item
                   name="Tiles project start page"
                   href="./index.html"/>
            <item
                   name="Security bulletins"
                   href="security/index.html"/>
        </menu>
        <menu name="Documentation">
            <item
                    name="What's new"
                    href="whats-new.html"/>
            <item
                    name="Tutorial"
                    href="tutorial/index.html"
                    collapse="true">
                <item
                        name="The composite view pattern"
                        href="tutorial/pattern.html"/>
                <item
                        name="Configuration"
                        href="tutorial/configuration.html"/>
                <item
                        name="Basic Usage"
                        href="tutorial/basic/index.html"
                        collapse="true">
                    <item
                            name="Tiles Concepts"
                            href="tutorial/basic/concepts.html"/>
                    <item
                            name="Creating Pages"
                            href="tutorial/basic/pages.html"/>
                </item>
                <item
                        name="Advanced Topics"
                        href="tutorial/advanced/index.html"
                        collapse="true">
                    <item
                            name="Nesting and Extending"
                            href="tutorial/advanced/nesting-extending.html"/>
                    <item
                            name="List Attributes"
                            href="tutorial/advanced/list-attributes.html"/>
                    <item
                            name="Runtime Composition"
                            href="tutorial/advanced/runtime.html"/>
                    <item
                            name="View Preparers"
                            href="tutorial/advanced/preparer.html"/>
                    <item
                            name="Rendering Utilities"
                            href="tutorial/advanced/utils.html"/>
                    <item
                            name="Localization"
                            href="tutorial/advanced/l10n.html"/>
                    <item
                            name="Wildcard support"
                            href="tutorial/advanced/wildcard.html"/>
                    <item
                            name="EL support"
                            href="tutorial/advanced/el-support.html"/>
                    <item
                            name="Attribute rendering"
                            href="tutorial/advanced/attribute-rendering.html"/>
                    <item
                            name="Multiple containers"
                            href="tutorial/advanced/multiple-containers.html"/>
                    <item
                            name="Security"
                            href="tutorial/advanced/security.html"/>
                </item>
                <item
                        name="Integrations"
                        href="tutorial/integration/index.html"
                        collapse="true">
                    <item
                            name="Frameworks"
                            href="tutorial/integration/frameworks.html"/>
                    <item
                            name="View technologies"
                            href="tutorial/integration/view.html">
                        <item
                                name="FreeMarker"
                                href="tutorial/integration/freemarker.html"/>
                        <item
                                name="Velocity"
                                href="tutorial/integration/velocity.html"/>
                    </item>
                </item>
            </item>
            <item
                    name="Wiki"
                    href="http://cwiki.apache.org/TILES/"/>
            <item
                    name="Migration"
                    href="migration/index.html"/>
        </menu>
        <menu name="Reference">
            <item
                    name="Getting Started"
                    href="getting_started.html"/>
            <item
                    name="Configuration reference"
                    href="config-reference.html"/>
            <item
                    name="Javadoc"
                    href="apidocs/index.html"/>
            <item
                    name="Taglibdoc"
                    href="tiles-jsp/tlddoc/index.html"/>
            <item
                    name="Taglib Reference"
                    href="tiles-jsp/tagreference.html"/>
            <item
                    name="DTD Doc"
                    href="tiles-core/dtddoc/index.html"/>
        </menu>

        <menu name="Developers">
            <item
                    name="Building"
                    href="/dev/building.html"/>
            <item
                    name="Snapshots"
                    href="/dev/snapshots.html"/>
            <item
                    name="Release Process"
                    href="/dev/release.html"/>
            <item
                    name="Selenium Testing"
                    href="/selenium.html"/>
        </menu>

        <menu ref="modules" />
        <menu ref="reports" />

    </body>
</project>
