<?xml version="1.0" standalone="no"?>
<!DOCTYPE s1 SYSTEM "./dtd/document.dtd">

<s1 title="Properties">
	<s2 title="Setting Features">
    <anchor name="properties"/>
		<p>To set a property on either org.apache.xerces.parsers.SAXParser 
		or org.apache.xerces.parsers.DOMParser, you should use the SAX2 
		method <code>setProperty(String,Object)</code>. To query a
		property, use the SAX2 method <code>getProperty(String)</code>.</p>
		<p>For example, to set the document factory by name:</p>
<source>DOMParser p=new DOMParser();
try {        
  p.setProperty("http://apache.org/xml/properties/dom/document-class-name",
                "org.apache.xerces.dom.DocumentImpl");
} catch (SAXException e) {
  System.out.println("error in setting up parser property");             
}</source>
	</s2>
	
	<s2 title="General Properties">
		<!--
		<anchor name="namespace-sep"/>
		<p>http://xml.org/sax/properties/namespace-sep</p>
		<table>
			<tr><th>Type:</th>		<td>java.lang.String</td></tr>
			<tr><th>Access:</th>	<td>read-write</td></tr>
			<tr><th>Desc:</th>		<td>The separator string that will appear between the namespace 
									URI and the local part of the name when namespace processing is being 
									performed. If the value is the empty string, the two parts will be 
									concatenated. </td></tr>
			<tr><th>  Default:  </th>	<td>""</td></tr>
			<tr><th>See:</th>		<td><link idref="features" anchor="namespaces">http://xml.org/sax/features/namespaces</link></td></tr>
		</table>
		-->
		
		<anchor name="xml-string"/>
		<p>http://xml.org/sax/properties/xml-string</p>
		<table>
			<tr><th>Type:</th>		<td>java.lang.String</td></tr>
			<tr><th>Access:</th>	<td>read-only</td></tr>
			<tr><th>Desc:</th>		<td>Get the string of characters associated with the current event. If the 
									   parser recognizes and supports this property but is not currently 
									   parsing text, it should return null.</td></tr>
			<tr><th>Note:</th>		<td>This property is currently not supported because the contents of the 
   										XML string returned by this property is not well defined.</td></tr>
		</table>
	</s2>
	
	<s2 title="DOM Parser Properties">
		<anchor name="current-element-node"/>
		<p>http://apache.org/xml/properties/dom/current-element-node</p>
		<table>
			<tr><th>Type:</th>		<td>org.w3c.dom.Node</td></tr>
			<tr><th>Access:</th>	<td>read-only</td></tr>
			<tr><th>Desc:</th>		<td>The current DOM element node while parsing.</td></tr>
			<tr><th>Note:</th>		<td>This property is useful for determining the location 
									with a DOM document when an error occurs.</td></tr>
			<tr><th>See:</th>		<td><link anchor="dom-node">http://xml.org/sax/properties/dom-node</link></td></tr>
		</table>
		
		<anchor name="document-class-name"/>
		<p>http://apache.org/xml/properties/dom/document-class-name</p>
		<table>
			<tr><th>Type:</th>		<td>java.lang.String</td></tr>
			<tr><th>Access:</th>	<td>read-write</td></tr>
			<tr><th>Desc:</th>		<td>The fully qualified class name of the DOM 
									implementation. The implementation used must 
									have a zero argument constructor.</td></tr>
			<tr><th>Default:</th>	<td>"org.apache.xerces.dom.DocumentImpl"</td></tr>
			<tr><th>Note:</th>		<td>When the document class name is set to a value other 
									than the name of the default document factory, the 
									deferred node expansion feature does not work. </td></tr>
			<tr><th>See:</th>		<td><link idref="features" anchor="defer-node-expansion">http://apache.org/xml/features/dom/defer-node-expansion</link></td></tr>
		</table>
	</s2>
	
	<s2 title="SAX Parser Properties">
		<!--
		<anchor name="DeclHandler"/>
		<p>http://xml.org/sax/handlers/DeclHandler</p>
		<table>
			<tr><th>Type:</th>		<td>org.xml.sax.misc.DeclHandler</td></tr>
			<tr><th>Access:</th>	<td>read-write</td></tr>
			<tr><th>Desc:</th>		<td>Set the handler for DTD declarations.</td></tr>
		</table>
		
		<anchor name="LexicalHandler"/>
		<p>http://xml.org/sax/handlers/LexicalHandler</p>
		<table>
			<tr><th>Type:</th>		<td>org.xml.sax.misc.LexicalHandler</td></tr>
			<tr><th>Access:</th>	<td>read-write</td></tr>
			<tr><th>Desc:</th>		<td>Set the handler for lexical parsing events.</td></tr>
		</table>
		
		<anchor name="NamespaceHandler"/>
		<p>http://xml.org/sax/handlers/NamespaceHandler</p>
		<table>
			<tr><th>Type:</th>		<td>org.xml.sax.misc.NamespaceHandler</td></tr>
			<tr><th>Access:</th>	<td>read-write</td></tr>
			<tr><th>Desc:</th>		<td>Set the handler for lexical parsing events.</td></tr>
		</table>
		-->
		<anchor name="declaration-handler"/>
		<p>http://xml.org/sax/properties/declaration-handler</p>
		<table>
			<tr><th>Type:</th>		<td>org.xml.sax.ext.DeclHandler</td></tr>
			<tr><th>Access:</th>	<td>read-write</td></tr>
			<tr><th>Desc:</th>		<td>Set the handler for DTD declarations.</td></tr>
		</table>
		
		<anchor name="lexical-handler"/>
		<p>http://xml.org/sax/properties/lexical-handler</p>
		<table>
			<tr><th>Type:</th>		<td>org.xml.sax.ext.LexicalHandler</td></tr>
			<tr><th>Access:</th>	<td>read-write</td></tr>
			<tr><th>Desc:</th>		<td>Set the handler for lexical parsing events.</td></tr>
		</table>

		<anchor name="dom-node"/>
		<p>http://xml.org/sax/properties/dom-node</p>
		<table>
			<tr><th>Type:</th>		<td>org.w3c.dom.Node</td></tr>
			<tr><th>Access:</th>	<td>(parsing) read-only; (not parsing) read/write</td></tr>
			<tr><th>Desc:</th>		<td>The DOM node currently being visited, 
									if SAX is being used as a DOM iterator. 
									If the parser recognizes and supports this property but is 
									not currently visiting a DOM node, it should return null.</td></tr>
		</table>
		
	</s2>
</s1>
