<?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>
		<name>Apache Rampart</name>
		<href>images/apache-rampart-logo.jpg</href>
	</bannerLeft>
	    
    <bannerRight>
        <src>images/apache-rampart-banner.jpg</src>
        <href>http://www.apache.org</href>
    </bannerRight>

	<skin>
		<groupId>org.apache.maven.skins</groupId>
		<artifactId>maven-default-skin</artifactId>
		<version>1.0</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">
			        <item name="Releases" href="download.html"/>
			        <item name="Source Code" href="svn.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="Dependencies" href="dependencies.html"/>
		    <item name="License"
		        href="http://www.apache.org/licenses/LICENSE-2.0.html" />
		</menu>

	</body>
</project>
