<?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.
  -->

<document>

  <properties>
    <title>Documentation</title>
  </properties>

<body>

<section name="Apache Synapse - Documentation">
  <p>
      Apache Synapse is an extremely lightweight and easy-to-use Open Source Enterprise Service Bus
      (ESB) available under the Apache Software License v2.0. Apache Synapse graduated from the
      Apache Incubator on the 2nd of January 2007, and was accepted as a sub-project of the Apache
      Web Services project. In December 2007, Apache Synapse became a top level project (TLP) of the
      Apache Software Foundation
  </p>
  <p>Documentation for the 1.2 release:</p>

  <ul>
  <li><a href="./Synapse_QuickStart.html">Quick Start Guide</a></li>
  <li><a href="./Synapse_Configuration_Language.html">The Synapse Configuration Language</a></li>
  <li><a href="./Synapse_Samples.html">A Quick start with Synapse Samples</a></li>
  <li><a href="./Synapse_Extending.html">Extending Synapse</a></li>
  <li>The Synapse Wiki <a href="http://wiki.apache.org/ws/Synapse">http://wiki.apache.org/ws/Synapse</a></li>
  </ul>
</section>

</body>
</document>
