<?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>Legal</title>
  </properties>
  <body>
    <section name="jUDDI - Legal Stuff">
      <p>All material on this website is Copyright © 1999-2009, The Apache 
        Software Foundation. 
      </p>
      <p>
        Sun, Sun Microsystems, Solaris, Java, JavaServer 
        Web Development Kit, and JavaServer Pages are trademarks or registered 
        trademarks of Sun Microsystems, Inc. UNIX is a registered trademark 
        in the United States and other countries, exclusively licensed 
        through X/Open Company, Ltd. Windows, WindowsNT, and Win32 are 
        registered trademarks of Microsoft Corp. All other product names 
        mentioned herein and throughout the entire web site are trademarks 
        of their respective owners. 
      </p>
    </section>
  </body>
</document>
