<?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>Previous Version Documentation</title>
  </properties>

<body>

<section name="Previous version documentation">

    <p>The Apache Synapse team is proud to announce the availability of the 2.0.0 release on the
        7th of January 2011. As of December 2007, Apache Synapse has moved on to become a Top
        Level Project (TLP) of the Apache Software Foundation, moving out from Web Services project.
    </p>

<table class="bodyTable">
  <tbody>
    <tr class="a">
      <th>Version</th>
      <th>Date</th>
      <th>Documentation</th>
    </tr>
    <tr class="b">
      <td>1.2</td>
      <td>09-Jun-2008</td>
      <td><a href="1_2/docs_index.html">click here</a> for 1.2 documentation</td>
    </tr>
    <tr class="b">
      <td>1.1.1</td>
      <td>28-Jan-2008</td>
      <td><a href="1_1_1/content.html">click here</a> for 1.1.1 documentation</td>
    </tr>
    <tr class="b">
      <td>1.1</td>
      <td>12-Nov-2007</td>
      <td><a href="1_1/content.html">click here</a> for 1.1 documentation</td>
    </tr>
    <tr class="b">
      <td>1.0</td>
      <td>08-Jun-2007</td>
      <td><a href="1_0/content.html">click here</a> for 1.0 documentation</td>
    </tr>
  </tbody>
</table>
</section>

</body>
</document>
