<?xml version="1.0" standalone="no"?>
<!--
 * 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.
-->
<!DOCTYPE s1 SYSTEM "./dtd/document.dtd">
<s1 title="SAX">
<s2 title="Introduction">
<p> Xerces2 provides an implementation of SAX 2.0.2 and SAX2 Extensions 1.1.</p>
<p> SAX 1.0 and SAX 2.0 information: </p>
<ul>
<li><jump href='http://www.saxproject.org/sax1-roadmap.html'>SAX 1.0 Overview</jump></li>
<li><jump href='http://www.saxproject.org/sax2-history.html'>SAX 2.0 Changes</jump></li>
<li><jump href='http://www.saxproject.org/sax2-ext.html'>SAX 2.0 Extensions</jump></li>
</ul>
</s2>


<s2 title="SAX Programmer's Guide">
<p>This section provides the following topics:</p>

<ul>
<li><jump href='http://www.saxproject.org'>About SAX</jump></li>
<li><link idref='faq-sax'>How do I?</link> -- the most frequently asked questions about SAX.</li>
<li><link idref='samples-sax'>SAX Samples</link> -- documents various SAX samples included with Xerces.</li>
</ul>
</s2>
</s1>
