<?xml version="1.0"?>
<!--
  ~ 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="Axiom">
    <skin>
        <groupId>org.apache.maven.skins</groupId>
        <artifactId>maven-fluido-skin</artifactId>
        <version>1.5</version>
    </skin>
    <bannerLeft>
        <name>Apache Axiom</name>
        <src>images/logo.png</src>
        <href>http://ws.apache.org/axiom/index.html</href>
    </bannerLeft>
    <body>
        <head>
            <![CDATA[
            <script async='' src='//www.google-analytics.com/analytics.js'> </script>
            <script>
              window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
              ga('create', 'UA-56790914-3', {'cookieDomain': 'ws.apache.org', 'cookiePath': '/axiom' });
              ga('send', 'pageview');
            </script>
            ]]>
        </head>
        <menu name="About">
            <item name="Introduction" href="index.html"/>
            <item name="Mailing Lists" href="/mail-lists.html"/>
            <item name="Project Team" href="/team-list.html"/>
            <item name="Issue Tracking" href="issue-tracking.html"/>
        </menu>
        <menu name="Downloads">
            <item name="Releases" href="download.html"/>
            <item name="Source Code" href="source-repository.html"/>
        </menu>
        <menu name="Documentation">
            <item name="Overview" href="documentation.html"/>
            <item name="Release notes" collapse="true" href="release-notes/index.html">
                <item name="1.2.9" href="release-notes/1.2.9.html"/>
                <item name="1.2.10" href="release-notes/1.2.10.html"/>
                <item name="1.2.11" href="release-notes/1.2.11.html"/>
                <item name="1.2.12" href="release-notes/1.2.12.html"/>
                <item name="1.2.13" href="release-notes/1.2.13.html"/>
                <item name="1.2.14" href="release-notes/1.2.14.html"/>
                <item name="1.2.15" href="release-notes/1.2.15.html"/>
                <item name="1.2.16" href="release-notes/1.2.16.html"/>
                <item name="1.2.17" href="release-notes/1.2.17.html"/>
                <item name="1.3.0" href="release-notes/1.3.0.html"/>
            </item>
            <item name="Quick start samples" href="quickstart-samples.html"/>
            <item name="User guide" href="userguide/userguide.html"/>
            <item name="Developer guide" href="devguide/devguide.html"/>
            <item name="Design documents" collapse="true" href="design/index.html">
                <item name="OSGi integration" href="design/osgi-integration.html"/>
                <item name="Fluent builders" href="design/fluent-builder.html"/>
            </item>
            <item name="Articles" href="articles.html"/>
            <item name="Javadocs" href="/apidocs/index.html"/>
            <item name="FAQ" href="faq.html"/>
            <item name="View Source" href="https://github.com/apache/ws-axiom"/>
            <item name="Code Coverage" href="https://codecov.io/gh/apache/webservices-axiom"/>
            <item name="Privacy Policy" href="privacy-policy.html"/>
        </menu>
        <menu name="Modules">
            <item name="Implementations" href="implementations/index.html"/>
            <item name="Compatibility classes" href="axiom-compat/index.html"/>
            <item name="Google Truth extension for XML" href="testing/xml-truth/index.html"/>
        </menu>
    </body>
</project>
