<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Copyright 2001-2009 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.
 *
 */ -->
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://forrest.apache.org/dtd/document-v12.dtd">
<document>
  <properties>
    <title>jUDDI User and Developer Documentation</title>
  </properties>
  <body>
    <section name="Guides">    
        
      <table>   
           
        <tr> 
          <td><strong>Name</strong></td>
          <td><strong>Date</strong></td>
          <td><strong>Description</strong></td>
        </tr>
        <tr>
          <td>3.x User Guide</td>
          <td>May 20, 2013</td>
          <td><a href="docs/3.x/userguide/html/index.html">HTML</a>,
              <a href="docs/3.x/userguide/html_single/index.html">HTML-SINGLE</a>,
              <a href="docs/3.x/userguide/pdf/userguide.pdf">PDF</a>
          </td>
        </tr>
        <tr>
          <td>3.x Developer Guide</td>
          <td>Jul 10, 2011</td>
          <td><a href="docs/3.x/devguide/html/index.html">HTML</a>,
              <a href="docs/3.x/devguide/html_single/index.html">HTML-SINGLE</a>,
              <a href="docs/3.x/devguide/pdf/devguide.pdf">PDF</a>
          </td>
        </tr>
        <tr>
          <td>2.x User Guide</td>
          <td>Jun 1, 2005</td>
          <td><a href="usersguide.html">HTML</a></td>
        </tr>
      </table>
		
    </section>
  </body>
</document>
