<!--
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="Using HDFS with VXQuery"
                href="user_query_hdfs.html" />
            <item
                name="Running the Test Suite"
                href="user_running_tests.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 and Node Types"
                href="development_xml_node_details.html" />
            <item
                name="XML Data Model Example"
                href="development_xml_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>