<?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 Level 3 Implementation">

	<s2 title="Introduction">
		<p>
			The &ParserNameLong; &ParserVersion; contains an implementation of 
			the Document Object Model Level 3 <jump href="http://www.w3.org/TR/DOM-Level-3-Core/">Core</jump> 
			and Document Object Model Level 3 <jump href="http://www.w3.org/TR/DOM-Level-3-LS/">Load and Save</jump> Recommendations.
			To learn how to program with the DOM Level 3 see <jump href="samples-dom.html#DOM3">dom.DOM3</jump> sample.
		</p>

	</s2>

	<s2 title='Implementation of DOM Level 3 Core'>
		<p>
			DOM Level 3 Core DOMConfiguration <code>parameters</code> supported are:
		</p>
		<ul>
			<li>
				<strong>error-handler</strong>
				[
				<em>DOMErrorHandler</em>
				]
			</li>
			<li>
				<strong>resource-resolver</strong>
				[
				<em>LSResourceResolver</em>
				]
			</li>
			<li>
				<strong>schema-type</strong>
				[
				<em>String</em>
				]
			</li>
			<li>
				<strong>schema-location</strong>
				[
				<em>String</em>
				]
			</li>
			<li>
				<strong>canonical-form</strong>
				[
				<em>false</em>
				]
			</li>
			<li>
				<strong>cdata-sections</strong>
				[
				<em>true/false</em>
				]
			</li>
			<li>
				<strong>comments</strong>
				[
				<em>true/false</em>
				]
			</li>
			<li>
				<strong>namespaces</strong>
				[
				<em>true/false</em>
				]
			</li>
			<li>
				<strong>entities</strong>
				[
				<em>true/false</em>
				]
			</li>
			<li>
				<strong>infoset</strong>
				[
				<em>true/false</em>
				]
			</li>
			<li>
				<strong>namespace-declarations</strong>
				[
				<em>true/false</em>
				]
			</li>
			<li>
				<strong>normalize-characters</strong>
				[
				<em>false</em>
				]
			</li>
			<li>
				<strong>split-cdata-sections</strong>
				[
				<em>true/false</em>
				]
			</li>
			<li>
				<strong>validate-if-schema</strong>
				[
				<em>true/false</em>
				]
			</li>
			<li>
				<strong>element-content-whitespace</strong>
				[
				<em>true</em>
				]
			</li>
			<li>
				<strong>datatype-normalization</strong>
				[
				<em>true/false</em>
				]
			</li>
			<li>
				<strong>validate</strong>
				[
				<em>true/false</em>
				] -- revalidation is only supported against XML Schemas and DTDs. For more information, please refer to
				<link idref='faq-dom'>How to revalidate DOM in memory?</link>
				.
			</li>
			<li>
				<strong>validate-if-schema</strong>
				[
				<em>true/false</em>
				]
			</li>
			<li>
				<strong>check-character-normalization</strong>
				[
				<em>false</em>
				]
			</li>			
			<li>
				<strong>well-formed</strong>
				[
				<em>true/false</em>
				]
			</li>	
			<li>
				<strong>psvi</strong>
				[
				<em>true/false</em>
				] -- (NON-DOM) setting the value of this parameter to true will include 
				PSVI information in the DOM tree. 
			</li>

		</ul>
	</s2>

	<s2 title='Implementation of DOM Level 3 Load and Save'>
		<p>
			Additional DOM Level 3 Load and Save DOMConfiguration <code>parameters</code> supported:
		</p>
		<ul>
			<li>
				<strong>charset-overrides-xml-encoding</strong>
				[
				<em>true/false</em>
				]
			</li>
			<li>
				<strong>disallow-doctype</strong>
				[
				<em>true/false</em>
				]
			</li>			
			<li>
				<strong>ignore-unknown-character-denormalizations</strong>
				[
				<em>true</em>
				]
			</li>			
			<li>
				<strong>supported-media-types-only</strong>
				[
				<em>false</em>
				]
			</li>
			<li>
				<strong>discard-default-content</strong>
				[
				<em>true/false</em>
				]
			</li>
			<li>
				<strong>format-pretty-print</strong>
				[
				<em>true/false</em>
				]
			</li>			
			<li>
				<strong>xml-declaration</strong>
				[
				<em>true/false</em>
				]
			</li>
		</ul>
		<p></p>
		<p>Here is the list of DOM Level 3 Load and Save limitations:</p>
		<ul>

    		<li>
    			<strong>LSParser</strong> <jump href="http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-LSParser-parseWithContext">
    			parserWithContext</jump>
    			 -- not supported.
	    	</li>
	      <li><strong>DOMImplementationLS</strong> <jump href="http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DOMImplementationLS-MODE_ASYNCH">
			MODE_ASYNCHRONOUS</jump> 
				-- not supported.
			</li>
            <li><strong>LSSerializer</strong> - the following parameters are not supported:</li>
<ul>
<li><strong>normalize-characters</strong>
[
<em>true</em>
]</li>
</ul>
</ul>

	</s2>

</s1>