<!--
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="VXQuery">
    <bannerLeft>
        <name>VXQuery</name>
        <src>images/VXQuery.png</src>
        <href>http://vxquery.apache.org/</href>
    </bannerLeft>

    <bannerRight>
        <name>Apache Software Foundation</name>
        <src>images/asf_logo_wide.png</src>
        <href>http://www.apache.org/</href>
    </bannerRight>

    <skin>
        <groupId>org.apache.maven.skins</groupId>
        <artifactId>maven-fluido-skin</artifactId>
        <version>1.3.1</version>
    </skin>

    <body>
        <menu name="Apache Software Foundation">
            <item
                name="Home"
                href="http://www.apache.org/" />
            <item
                name="Donate"
                href="http://www.apache.org/foundation/sponsorship.html" />
            <item
                name="Thanks"
                href="http://www.apache.org/foundation/thanks.html" />
            <item
                name="Security"
                href="http://www.apache.org/security/" />
        </menu>

        <menu name="Get VXQuery">
            <item
                name="Download"
                href="http://www.apache.org/dyn/closer.cgi/vxquery/" />
        </menu>

        <menu name="For Users">
            <item
                name="Installation"
                href="user_installation.html" />
            <item
                name="Executing a Query"
                href="user_query.html" />
            <item
                name="Running the Test Suite"
                href="user_running_tests.html" />
        </menu>

        <menu name="For Developers">
            <item
                name="Data Handling"
                href="development_data_handling.html" />
            <item
                name="Data XML and Node Types"
                href="development_xml_node_details.html" />
            <item
                name="Eclipse Setup"
                href="development_eclipse_setup.html" />
            <item
                name="Release Steps"
                href="release.html" />
            <item
                name="Update Local Git XQTS Results"
                href="development_update_xqts_results.html" />
            <!-- <item
                name="XQuery Benchmarks"
                href="development_benchmarks.html" /> -->
        </menu>

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

        <footer>
            <div class="row-fluid">Apache VXQuery, VXQuery, Apache, the Apache
                feather logo, and the Apache VXQuery project logo are either
                registered trademarks or trademarks of The Apache Software
                Foundation in the United States and other countries.
                All other marks mentioned may be trademarks or registered
                trademarks of their respective owners.
            </div>
        </footer>
    </body>
</project>

