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

    <bannerLeft>
        <name>Apache jUDDI</name>
        <src>images/project-logo.gif</src>
        <href>juddi.apache.org</href>
    </bannerLeft>
    <bannerRight>
    <src>images/juddi.gif</src>
  </bannerRight>
    <skin>
	    <groupId>org.apache.juddi</groupId>
	    <artifactId>juddi-site-style</artifactId>
		<version>1.0</version>
	</skin>

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

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

        <menu name="Apache jUDDI">
            <item name="Welcome" href="index.html"/>
            <item name="Get jUDDI">
                <item name="Releases" href="releases.html"/>
                <item name="Source Code" href="source-repository.html"/>
            </item>
            <item name="Participation" href="participate.html" description="Participation"/>
            <item name="Documentation">
                <item name="jUDDI Docs" href="docs.html"/>
                <item name="Wiki" href="http://wiki.apache.org/juddi"/>
                <item name="UDDI Library" href="library.html" />
                <item name="Javadocs v2" href="apidocs2/index.html"/>
                <item name="Javadocs v3" href="apidocs/index.html"/>
                <item name="XRef v3" href="xref/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="jUDDI Blog" href="http://apachejuddi.blogspot.com/" />
                <item name="Issue Tracking" href="issue-tracking.html"/>
                <item name="Dependencies" href="dependencies.html"/>
                <item name="Project Team" href="team-list.html"/>
                <item name="Project Summary" href="project-summary.html"/>
            </item>
            <item name="Subprojects">
    			<item name="Apache Scout" href="http://juddi.apache.org/scout/" description="Apache Scout"/>
  			</item>
  			<item name="Misc">
    			<item name="Who We Are" href="who.html" description="Who We Are"/>
    			<item name="Committer Notes" href="committers.html" description="Committer Notes"/>
    			<item name="Sponsors" href="thanks.html" description="Thank you"/>
    			<item name="Legal" href="legal.html" description="Legal Stuff"/>
    			<item name="License" href="license.html" description="Apache 2.0 License"/>
  			</item>
        </menu>

    </body>
</project>

