<!--
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.5</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="Get Started"
                href="user_get_started.html" />
            <item
                name="Installation"
                href="user_installation.html" />
            <item
                name="Cluster Installation"
                href="user_cluster_installation.html" />
            <item
                name="Executing a Query"
                href="user_query.html" />
            <item
                name="Get Started with JSONiq"
                href="user_get_started_with_jsoniq.html" />
            <item
                name="Using HDFS with VXQuery"
                href="user_query_hdfs.html" />
            <item
                name="Running the Test Suite"
                href="user_running_tests.html" />
            <item
                name="XML Indexing"
                href="user_indexing.html" />
        </menu>
        <menu name="For Developers">
            <item
                name="Get Started"
                href="developer_get_started.html" />
            <item
                name="Contributing Code"
                href="development_contribution.html" />
            <item
                name="Data Handling"
                href="development_data_handling.html" />
            <item
                name="Eclipse Setup"
                href="development_eclipse_setup.html" />
            <item
                name="Release Steps"
                href="development_release.html" />
            <item
                name="Site Update Steps"
                href="development_site_update.html" />
            <item
                name="Update Local Git XQTS Results"
                href="development_update_xqts_results.html" />
            <item
                name="XMark Benchmark Status"
                href="development_xmark_status.html" />
            <item
                name="XML Data Model Example"
                href="development_xml_document.html" />
            <item
                name="JSONiq Data Model Example"
                href="development_json_document.html" />
        </menu>
        <menu ref="reports" />
        <menu ref="modules" />
        <footer><![CDATA[
          <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>