<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE org.apache.commons.menus SYSTEM '../../commons-build/menus/menus.dtd'>
<!--
   Copyright 2004-2005 The Apache Software Foundation

   Licensed 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="Configuration">

  <title>Configuration</title>
  <organizationLogo href="/images/jakarta-logo-blue.gif">
   Jakarta
  </organizationLogo>

  <body>
    <links>
      <item name="Jakarta Commons" href="http://jakarta.apache.org/commons/"/>
    </links>

	<menu name="Configuration">
      <item name="Home"                         href="/index.html"/>  
      <item name="Download"                     href="http://jakarta.apache.org/site/sourceindex.cgi#commons-configuration"/>  
      <item name="Using Configuration"          href="/overview.html"/>
      <item name="Properties Howto"             href="/howto_properties.html"/>
      <item name="ConfigurationFactory Howto"   href="/howto_configurationfactory.html"/>      
      <item name="XML Howto"                    href="/howto_xml.html"/>
      <item name="Composite Config Howto"       href="/howto_compositeconfiguration.html"/>
      <item name="Runtime Dependencies"         href="/dependencies.html"/>
      <item name="Roadmap"                      href="/tasks-report.html"/>
      <item name="Javadoc (latest)"             href="/apidocs/index.html"/>
      <item name="Javadoc (Release 1.0)"        href="/apidocs_1.0/index.html"/>
      <item name="SVN"                          href="http://svn.apache.org/repos/asf/jakarta/commons/proper/configuration/"/>
    </menu>

    <menu name="Extensions">
      <item name="Avalon Component" href="http://jakarta.apache.org/turbine/fulcrum/fulcrum-configuration/index.html"/>
    </menu>

    &common-menus;

  </body>
</project>
