<?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="Document Object Model">
<s2 title="Introduction">
<p> Xerces2 provides an implementation of the following W3C Document Object Model (DOM) Recommendations:</p>
<ul>
<li><jump href='http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/'>DOM Level 1 Core and HTML</jump></li>
<li><jump href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/'>DOM Level 2 Core</jump></li>
<li><jump href='http://www.w3.org/TR/DOM-Level-3-Core/'>DOM Level 3 Core</jump></li>
<li><jump href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113/'>DOM Level 2 Traversal and Range</jump></li>
<li><jump href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/'>DOM Level 2 Events: Mutation Events</jump></li>
<li><jump href='http://www.w3.org/TR/DOM-Level-3-LS/'>DOM Level 3 Load and Save</jump></li>
</ul>
</s2>

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

<ul>
<li><jump href='http://www.w3.org/DOM/faq.html'>About DOM</jump></li>
<li><link idref='faq-dom'>How do I?</link> -- the most frequently asked questions
    about DOM that include some sample code.</li>
<li><link idref='samples-dom'>DOM Samples</link> -- documents various DOM samples 
    included with Xerces</li>
</ul>
</s2>
</s1>
