<?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/juddi_logo_v3.png</src>
        <href>juddi.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="jUDDI" href="http://juddi.apache.org/"/>
            <item name="Scout" href="http://juddi.apache.org/scout/"/>
        </breadcrumbs>

        <menu name="Apache Scout">
            <item name="Welcome" href="http://juddi.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="Wiki" href="http://wiki.apache.org/juddi/scout"/>
        </menu>
        <menu name="Related Projects">
            <item name="Apache jUDDI" href="http://juddi.apache.org/" description="Apache jUDDI"/>
        </menu>
        <menu ref="reports"/>

    </body>
</project>

