<?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 Scout">

    <bannerLeft>
        <name>Apache Scout</name>
        <src>images/project-logo.jpg</src>
        <href>ws.apache.org/scout/</href>
    </bannerLeft>
    <bannerRight>
    <src>images/scout.jpg</src>
  </bannerRight>
    <skin>
        <groupId>org.apache.maven.skins</groupId>
        <artifactId>maven-default-skin</artifactId>
        <version>1.0</version>
    </skin>

    <publishDate format="dd MMM yyyy" position="right"/>

    <body>
        <breadcrumbs>
      		<item name="Apache" href="http://www.apache.org/"/>
      		<item name="WebServices" href="http://ws.apache.org/"/>
      		<item name="Scout" href="http://ws.apache.org/scout/"/>
    	</breadcrumbs>

        <menu name="Apache Scout">
            <item name="Welcome" href="http://ws.apache.org/scout/index.html"/>
            <item name="Get Scout">
                <item name="Releases" href="releases.html"/>
                <item name="Source Code" href="source-repository.html"/>
            </item>
            <item name="Documentation">
                <item name="Wiki" href="http://wiki.apache.org/ws/scout"/>
                <item name="Javadocs" href="apidocs/index.html"/>
            </item>
            <item name="Project Information">
                <item name="Project Information" href="project-info.html"/>
                <item name="Mailing Lists" href="mail-lists.html"/>
                <item name="Issue Tracking" href="issue-tracking.html"/>
                <item name="Dependencies" href="dependencies.html"/>
                <item name="Dependency Convergence" href="dependency-convergence.html"/>
                <item name="Project Team" href="team-list.html"/>
                <item name="Project Summary" href="project-summary.html"/>
            </item>
            <item name="Related Projects">
    			<item name="Apache jUDDI" href="http://ws.apache.org/juddi/" description="Apache jUDDI"/>
  			</item>
        </menu>

    </body>
</project>

