<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<!--
 * 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.
-->
<html>
 <head>
  <meta http-equiv="Refresh" content="3; URL=docs/index.html">
  <title>Xerces Java Parser</title>
 </head>
 <body>
  <h1 align='center'>Xerces Java Parser</h1>
  <h2>Redirecting to Documentation...</h2>
  <p>
   In a few seconds, you should be redirected to the Xerces Java Parser 
   documentation. If you are not automatically redirected, please click 
   on the following link:
   <blockquote>
    <a href='docs/index.html'>Xerces Java Documentation</a>
   </blockquote>
  </p>
  <p>
   <strong>Note:</strong> 
   You must download the binary distribution to get the documentation.
   If you downloaded the source distribution, then you must build the
   documentation first.
  </p>
 </body>
</html>
