<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  ~  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 Rampart">

    <bannerLeft>
        <src>images/apache-rampart-logo.jpg</src>
    </bannerLeft>

    <bannerRight>
        <src>http://www.apache.org/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.4</version>
    </skin>

    <publishDate format="dd MMM yyyy"/>

    <body>
        <links>
            <item name="Apache Axis2/Java" href="http://axis.apache.org/axis2/java/core/" />
        </links>
        
        <menu name="Apache Rampart">
            <item name="Home" href="index.html" />
            <item name="Downloads" href="javascript:void(0)">
                <item name="Releases" href="download.html"/>
                <item name="Source Code" href="svn.html"/>
            </item>
            <item name="Release Notes" href="javascript:void(0)">
                <item name="1.6.1" href="release-notes/1.6.1.html"/>
                <item name="1.6.2" href="release-notes/1.6.2.html"/>
                <item name="1.6.3" href="release-notes/1.6.3.html"/>
                <item name="1.6.4" href="release-notes/1.6.4.html"/>
                <item name="1.7.0" href="release-notes/1.7.0.html"/>
            </item>
        </menu>
        <menu name="Documentation">
            <item name="Getting Started" href="quick-start.html"/>
            <item name="Samples" href="samples.html"/>
            <item name="FAQ" href="http://wiki.apache.org/ws/FrontPage/Rampart/FAQ"/>
            <item name="Rampart Configuration" href="rampartconfig-guide.html"/>
            <item name="STS Configuration" href="setting-up-sts.html"/>
            <item name="Developer Guide" href="developer-guide.html"/>
            <item name="Build the Site" href="siteHowTo.html" /> 
        </menu>
        <menu name="Resources">
            <item name="Articles" href="articles.html" />
            <item name="Specifications" href="specifications.html"/>
            <item name="Online Javadocs" href="apidocs/index.html"/>
        </menu>
        <menu name="Project Information">
            <item name="Project Team" href="team-list.html" />
            <item name="Issue Tracking" href="http://issues.apache.org/jira/browse/Rampart" />
            <item name="Mailing Lists" href="mail-lists.html"/>
            <item name="Source Code" href="http://svn.apache.org/viewvc/axis/axis2/java/rampart/" />
            <item name="License" href="http://www.apache.org/licenses/"/>
            <item name="Sponsorship" 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>
    </body>
</project>
