org.apache.xalan.xsltc.dom

## Class SAXImpl

- java.lang.Object
- - org.apache.xml.dtm.ref.DTMDefaultBase
  - - org.apache.xml.dtm.ref.DTMDefaultBaseTraversers
    - - org.apache.xml.dtm.ref.DTMDefaultBaseIterators
      - - org.apache.xml.dtm.ref.sax2dtm.SAX2DTM
        - - org.apache.xml.dtm.ref.sax2dtm.SAX2DTM2
          - - org.apache.xalan.xsltc.dom.SAXImpl

All Implemented Interfaces:
  DOM, DOMBuilder, ExtendedSAX, DOMEnhancedForDTM, DTM, ContentHandler, DTDHandler, EntityResolver, ErrorHandler, DeclHandler, LexicalHandler

    public final class SAXImpl
    extends SAX2DTM2
    implements DOMEnhancedForDTM, DOMBuilder

SAXImpl is the core model for SAX input source. SAXImpl objects are usually created from an XSLTCDTMManager.

DOMSource inputs are handled using DOM2SAX + SAXImpl. SAXImpl has a few specific fields (e.g. _node2Ids, _document) to keep DOM-related information. They are used when the processing behavior between DOM and SAX has to be different. Examples of these include id function and unparsed entity.

SAXImpl extends SAX2DTM2 instead of SAX2DTM for better performance.

Author:
  Jacek Ambroziak, Santiago Pericas-Geertsen, Morten Jorgensen, Douglas Sellers <douglasjsellers@hotmail.com>

### Nested Class Summary

Nested Classes
`class` `SAXImpl.NamespaceAttributeIterator` Iterator that returns attributes within a given namespace for a node.
`class` `SAXImpl.NamespaceChildrenIterator` Iterator that returns children within a given namespace for a given node.
`class` `SAXImpl.NamespaceWildcardIterator` Iterator that handles node tests that test for a namespace, but have a wild card for the local name of the node, i.e., node tests of the form <axis>::<prefix>:*
`class` `SAXImpl.TypedNamespaceIterator` Iterator that returns the namespace nodes as defined by the XPath data model for a given node, filtered by extended type ID.

### Nested classes/interfaces inherited from class org.apache.xml.dtm.ref.sax2dtm.SAX2DTM2

`SAX2DTM2.AncestorIterator, SAX2DTM2.AttributeIterator, SAX2DTM2.ChildrenIterator, SAX2DTM2.DescendantIterator, SAX2DTM2.FollowingIterator, SAX2DTM2.FollowingSiblingIterator, SAX2DTM2.ParentIterator, SAX2DTM2.PrecedingIterator, SAX2DTM2.PrecedingSiblingIterator, SAX2DTM2.TypedAncestorIterator, SAX2DTM2.TypedAttributeIterator, SAX2DTM2.TypedChildrenIterator, SAX2DTM2.TypedDescendantIterator, SAX2DTM2.TypedFollowingIterator, SAX2DTM2.TypedFollowingSiblingIterator, SAX2DTM2.TypedPrecedingIterator, SAX2DTM2.TypedPrecedingSiblingIterator, SAX2DTM2.TypedRootIterator, SAX2DTM2.TypedSingletonIterator`

### Nested classes/interfaces inherited from class org.apache.xml.dtm.ref.DTMDefaultBaseIterators

`DTMDefaultBaseIterators.InternalAxisIteratorBase, DTMDefaultBaseIterators.NamespaceIterator, DTMDefaultBaseIterators.NthDescendantIterator, DTMDefaultBaseIterators.RootIterator, DTMDefaultBaseIterators.SingletonIterator`

### Field Summary

### Fields inherited from class org.apache.xml.dtm.ref.DTMDefaultBase

`DEFAULT_BLOCKSIZE, DEFAULT_NUMBLOCKS, DEFAULT_NUMBLOCKS_SMALL, m_mgr, ROOTNODE`

### Fields inherited from interface org.apache.xalan.xsltc.DOM

`ADAPTIVE_RTF, FIRST_TYPE, NO_TYPE, NULL, RETURN_CURRENT, RETURN_PARENT, SIMPLE_RTF, TREE_RTF`

### Fields inherited from interface org.apache.xml.dtm.DTM

`ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NAMESPACE_NODE, NOTATION_NODE, NTYPES, NULL, PROCESSING_INSTRUCTION_NODE, ROOT_NODE, TEXT_NODE`

### Constructor Summary

Constructors
Constructor and Description
`SAXImpl(XSLTCDTMManager mgr, Source source, int dtmIdentity, DTMWSFilter whiteSpaceFilter, XMLStringFactory xstringfactory, boolean doIndexing, boolean buildIdIndex)` Construct a SAXImpl object using the default block size.
`SAXImpl(XSLTCDTMManager mgr, Source source, int dtmIdentity, DTMWSFilter whiteSpaceFilter, XMLStringFactory xstringfactory, boolean doIndexing, int blocksize, boolean buildIdIndex, boolean newNameTable)` Construct a SAXImpl object using the given block size.

### Method Summary

Methods
`void` `characters(char[] ch, int start, int length)` SAX2: Receive notification of character data.
`void` `characters(int node, SerializationHandler handler)` Copy the string value of a node directly to an output handler
`void` `comment(char[] ch, int start, int length)` SAX2: Report an XML comment anywhere in the document.
`void` `copy(DTMAxisIterator nodes, SerializationHandler handler)` Copy a node-set to an output handler
`void` `copy(int node, SerializationHandler handler)` Performs a deep copy (ref.
`void` `copy(SerializationHandler handler)` Copy the whole tree to an output handler
`void` `endDocument()` SAX2: Receive notification of the end of a document.
`void` `endElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qname)` SAX2: Receive notification of the end of an element.
`int` `getAttributeNode(int type, int element)` Returns the attribute node of a given type (if any) for an element
`java.lang.String` `getAttributeValue(int type, int element)` Returns the value of a given attribute type of a given element
`java.lang.String` `getAttributeValue(java.lang.String name, int element)` This method is for testing/debugging only
`DTMAxisIterator` `getAxisIterator(int axis)` This is a shortcut to the iterators that implement the supported XPath axes (only namespace::) is not supported.
`DOMBuilder` `getBuilder()` Returns an instance of the DOMBuilder inner class This class will consume the input document through a SAX2 interface and populate the tree.
`DTMAxisIterator` `getChildren(int node)` Returns an iterator with all the children of a given node
`java.lang.String` `getDocumentURI()` Returns the origin of the document from which the tree was built
`java.lang.String` `getDocumentURI(int node)`
`int` `getElementById(java.lang.String idString)` Return the node identity for a given id String
`Hashtable` `getElementsWithIDs()` %HZ% Need Javadoc
`int` `getGeneralizedType(java.lang.String name)` Returns the internal type associated with an expanded QName
`int` `getGeneralizedType(java.lang.String name, boolean searchOnly)` Returns the internal type associated with an expanded QName
`DTMAxisIterator` `getIterator()` Returns singleton iterator containg the document root Works for them main document (mark == 0).
`java.lang.String` `getLanguage(int node)` Returns a node' defined language for a node (if any)
`short[]` `getMapping(java.lang.String[] names, java.lang.String[] uris, int[] types)` Get mapping from DOM element/attribute types to external types
`DTMAxisIterator` `getNamespaceAxisIterator(int axis, int ns)` Do not think that this returns an iterator for the namespace axis.
`short[]` `getNamespaceMapping(java.lang.String[] namespaces)` Get mapping from DOM namespace types to external namespace types
`java.lang.String` `getNamespaceName(int node)` Returns the namespace URI to which a node belongs
`int` `getNamespaceType(int node)` Returns the namespace type of a specific node
`java.lang.String` `getNodeName(int node)` Returns the name of a node (attribute or element).
`DTMAxisIterator` `getNodeValueIterator(DTMAxisIterator iterator, int type, java.lang.String value, boolean op)`
`int` `getNSType(int node)` Get mapping from DOM namespace types to external namespace types
`DTMAxisIterator` `getNthDescendant(int type, int n, boolean includeself)` Returns the nth descendant of a node
`SerializationHandler` `getOutputDomBuilder()` Return a SerializationHandler for output handling.
`DOM` `getResultTreeFrag(int initSize, int rtfType)` Return a instance of a DOM class to be used as an RTF
`DOM` `getResultTreeFrag(int initSize, int rtfType, boolean addToManager)` Return a instance of a DOM class to be used as an RTF
`int[]` `getReverseMapping(java.lang.String[] names, java.lang.String[] uris, int[] types)` Get mapping from external element/attribute types to DOM types
`short[]` `getReverseNamespaceMapping(java.lang.String[] namespaces)` Get mapping from external namespace types to DOM namespace types
`int` `getSize()` Returns the number of nodes in the tree (used for indexing)
`DTMAxisIterator` `getTypedAxisIterator(int axis, int type)` Similar to getAxisIterator, but this one returns an iterator containing nodes of a typed axis (ex.: child::foo)
`DTMAxisIterator` `getTypedChildren(int type)` Returns an iterator with all children of a specific type for a given node (element)
`DTMAxisIterator` `getTypedDescendantIterator(int type)` Returns an iterator with all descendants of a node that are of a given type.
`java.lang.String` `getUnparsedEntityURI(java.lang.String name)` The getUnparsedEntityURI function returns the URI of the unparsed entity with the specified name in the same document as the context node (see [3.3 Unparsed Entities]).
`boolean` `hasDOMSource()` Return true if the input source is DOMSource.
`void` `ignorableWhitespace(char[] ch, int start, int length)` SAX2: Receive notification of ignorable whitespace in element content.
`boolean` `isAttribute(int node)` Returns 'true' if a specific node is an attribute (of any type)
`boolean` `isElement(int node)` Returns 'true' if a specific node is an element (of any type)
`boolean` `lessThan(int node1, int node2)` Returns true if node1 comes before node2 in document order
`java.lang.String` `lookupNamespace(int node, java.lang.String prefix)` Lookup a namespace URI from a prefix starting at node.
`Node` `makeNode(DTMAxisIterator iter)` Create an org.w3c.dom.Node from a node in an iterator The iterator most be started before this method is called
`Node` `makeNode(int index)` Create an org.w3c.dom.Node from a node in the tree
`NodeList` `makeNodeList(DTMAxisIterator iter)` Create an org.w3c.dom.NodeList from a node iterator The iterator most be started before this method is called
`NodeList` `makeNodeList(int index)` Create an org.w3c.dom.NodeList from a node in the tree
`void` `migrateTo(DTMManager manager)` Migrate a DTM built with an old DTMManager to a new DTMManager.
`DTMAxisIterator` `orderNodes(DTMAxisIterator source, int node)` Encapsulates an iterator in an OrderedIterator to ensure node order
`void` `print(int node, int level)` Prints the whole tree to standard output
`void` `processingInstruction(java.lang.String target, java.lang.String data)` SAX2: Receive notification of a processing instruction.
`void` `setDocumentURI(java.lang.String uri)` Define the origin of the document from which the tree was built
`boolean` `setEscaping(boolean value)`
`void` `setFilter(StripFilter filter)` Part of the DOM interface - no function here.
`void` `setupMapping(java.lang.String[] names, java.lang.String[] urisArray, int[] typesArray, java.lang.String[] namespaces)`
`java.lang.String` `shallowCopy(int node, SerializationHandler handler)` Performs a shallow copy (ref.
`void` `startDocument()` SAX2: Receive notification of the beginning of a document.
`void` `startElement(java.lang.String uri, java.lang.String localName, java.lang.String qname, Attributes attributes)` SAX2: Receive notification of the beginning of an element.
`void` `startElement(java.lang.String uri, java.lang.String localName, java.lang.String qname, Attributes attributes, Node node)` Specialized interface used by DOM2SAX.
`void` `startPrefixMapping(java.lang.String prefix, java.lang.String uri)` SAX2: Begin the scope of a prefix-URI Namespace mapping.

### Methods inherited from class org.apache.xml.dtm.ref.sax2dtm.SAX2DTM2

`_exptype, _exptype2, _exptype2Type, _firstch2, _nextsib2, _parent2, _type2, dispatchCharactersEvents, getExpandedTypeID2, getFirstAttribute, getIdForNamespace, getLocalName, getNodeNameX, getNodeValue, getStringValue, getStringValue, getStringValueX`

### Methods inherited from class org.apache.xml.dtm.ref.sax2dtm.SAX2DTM

`attributeDecl, clearCoRoutine, clearCoRoutine, dispatchToEvents, elementDecl, endCDATA, endDTD, endEntity, endPrefixMapping, error, externalEntityDecl, fatalError, getAttributeNode, getContentHandler, getDeclHandler, getDocumentTypeDeclarationPublicIdentifier, getDocumentTypeDeclarationSystemIdentifier, getDTDHandler, getEntityResolver, getErrorHandler, getFixedNames, getLexicalHandler, getNamespaceURI, getNamespaceURI, getNumberOfNodes, getPrefix, getPrefix, getSourceLocatorFor, internalEntityDecl, isAttributeSpecified, isWhitespace, needsTwoThreads, notationDecl, resolveEntity, setDocumentLocator, setIDAttribute, setIncrementalSAXSource, setProperty, setUseSourceLocation, skippedEntity, startCDATA, startDTD, startEntity, unparsedEntityDecl, warning`

### Methods inherited from class org.apache.xml.dtm.ref.DTMDefaultBaseTraversers

`getAxisTraverser`

### Methods inherited from class org.apache.xml.dtm.ref.DTMDefaultBase

`appendChild, appendTextChild, documentRegistration, documentRelease, dumpDTM, dumpNode, getDocument, getDocumentAllDeclarationsProcessed, getDocumentBaseURI, getDocumentEncoding, getDocumentRoot, getDocumentStandalone, getDocumentSystemIdentifier, getDocumentVersion, getDTMIDs, getExpandedTypeID, getExpandedTypeID, getFirstChild, getFirstNamespaceNode, getLastChild, getLevel, getLocalNameFromExpandedNameID, getManager, getNamespaceFromExpandedNameID, getNextAttribute, getNextNamespaceNode, getNextSibling, getNode, getNodeHandle, getNodeIdent, getNodeType, getOwnerDocument, getParent, getPreviousSibling, getStringValueChunk, getStringValueChunkCount, getTypedFirstChild, getTypedNextSibling, hasChildNodes, isCharacterElementContentWhitespace, isDocumentAllDeclarationsProcessed, isNodeAfter, isSupported, makeNodeHandle, makeNodeIdentity, setDocumentBaseURI, setFeature, supportsPreStripping`

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.apache.xalan.xsltc.DOMEnhancedForDTM

`getExpandedTypeID2`

### Methods inherited from interface org.apache.xalan.xsltc.DOM

`getDocument, getExpandedTypeID, getNodeHandle, getNodeIdent, getNodeNameX, getParent, getStringValue, getStringValueX`

### Methods inherited from interface org.xml.sax.ContentHandler

`endPrefixMapping, setDocumentLocator, skippedEntity`

### Methods inherited from interface org.xml.sax.ext.LexicalHandler

`endCDATA, endDTD, endEntity, startCDATA, startDTD, startEntity`

### Methods inherited from interface org.xml.sax.DTDHandler

`notationDecl, unparsedEntityDecl`

### Methods inherited from interface org.xml.sax.ext.DeclHandler

`attributeDecl, elementDecl, externalEntityDecl, internalEntityDecl`

### Constructor Detail

#### SAXImpl

    public SAXImpl(XSLTCDTMManager mgr,
           Source source,
           int dtmIdentity,
           DTMWSFilter whiteSpaceFilter,
           XMLStringFactory xstringfactory,
           boolean doIndexing,
           boolean buildIdIndex)

Construct a SAXImpl object using the default block size.

#### SAXImpl

    public SAXImpl(XSLTCDTMManager mgr,
           Source source,
           int dtmIdentity,
           DTMWSFilter whiteSpaceFilter,
           XMLStringFactory xstringfactory,
           boolean doIndexing,
           int blocksize,
           boolean buildIdIndex,
           boolean newNameTable)

Construct a SAXImpl object using the given block size.

### Method Detail

#### setDocumentURI

    public void setDocumentURI(java.lang.String uri)

Define the origin of the document from which the tree was built

Specified by:
  `setDocumentURI` in interface `DOMEnhancedForDTM`

#### getDocumentURI

    public java.lang.String getDocumentURI()

Returns the origin of the document from which the tree was built

Specified by:
  `getDocumentURI` in interface `DOMEnhancedForDTM`

#### getDocumentURI

    public java.lang.String getDocumentURI(int node)

Specified by:
  `getDocumentURI` in interface `DOM`

#### setupMapping

    public void setupMapping(java.lang.String[] names,
                    java.lang.String[] urisArray,
                    int[] typesArray,
                    java.lang.String[] namespaces)

Specified by:
  `setupMapping` in interface `DOM`

#### lookupNamespace

    public java.lang.String lookupNamespace(int node,
                                   java.lang.String prefix)
                                     throws TransletException

Lookup a namespace URI from a prefix starting at node. This method is used in the execution of xsl:element when the prefix is not known at compile time.

Specified by:
  `lookupNamespace` in interface `DOM`
Throws:
  `TransletException`

#### isElement

    public boolean isElement(int node)

Returns 'true' if a specific node is an element (of any type)

Specified by:
  `isElement` in interface `DOM`

#### isAttribute

    public boolean isAttribute(int node)

Returns 'true' if a specific node is an attribute (of any type)

Specified by:
  `isAttribute` in interface `DOM`

#### getSize

    public int getSize()

Returns the number of nodes in the tree (used for indexing)

Specified by:
  `getSize` in interface `DOM`

#### setFilter

    public void setFilter(StripFilter filter)

Part of the DOM interface - no function here.

Specified by:
  `setFilter` in interface `DOM`

#### lessThan

    public boolean lessThan(int node1,
                   int node2)

Returns true if node1 comes before node2 in document order

Specified by:
  `lessThan` in interface `DOM`

#### makeNode

    public Node makeNode(int index)

Create an org.w3c.dom.Node from a node in the tree

Specified by:
  `makeNode` in interface `DOM`

#### makeNode

    public Node makeNode(DTMAxisIterator iter)

Create an org.w3c.dom.Node from a node in an iterator The iterator most be started before this method is called

Specified by:
  `makeNode` in interface `DOM`

#### makeNodeList

    public NodeList makeNodeList(int index)

Create an org.w3c.dom.NodeList from a node in the tree

Specified by:
  `makeNodeList` in interface `DOM`

#### makeNodeList

    public NodeList makeNodeList(DTMAxisIterator iter)

Create an org.w3c.dom.NodeList from a node iterator The iterator most be started before this method is called

Specified by:
  `makeNodeList` in interface `DOM`

#### getNodeValueIterator

    public DTMAxisIterator getNodeValueIterator(DTMAxisIterator iterator,
                                       int type,
                                       java.lang.String value,
                                       boolean op)

Specified by:
  `getNodeValueIterator` in interface `DOM`

#### orderNodes

    public DTMAxisIterator orderNodes(DTMAxisIterator source,
                             int node)

Encapsulates an iterator in an OrderedIterator to ensure node order

Specified by:
  `orderNodes` in interface `DOM`

#### getIterator

    public DTMAxisIterator getIterator()

Returns singleton iterator containg the document root Works for them main document (mark == 0). It cannot be made to point to any other node through setStartNode().

Specified by:
  `getIterator` in interface `DOM`

#### getNSType

    public int getNSType(int node)

Get mapping from DOM namespace types to external namespace types

Specified by:
  `getNSType` in interface `DOM`

#### getNamespaceType

    public int getNamespaceType(int node)

Returns the namespace type of a specific node

Specified by:
  `getNamespaceType` in interface `DOM`
Overrides:
  `getNamespaceType` in class `DTMDefaultBase`
Parameters:
  `node` - the id of the node.
Returns:
  the ID of the namespace.

#### getGeneralizedType

    public int getGeneralizedType(java.lang.String name)

Returns the internal type associated with an expanded QName

#### getGeneralizedType

    public int getGeneralizedType(java.lang.String name,
                         boolean searchOnly)

Returns the internal type associated with an expanded QName

#### getMapping

    public short[] getMapping(java.lang.String[] names,
                     java.lang.String[] uris,
                     int[] types)

Get mapping from DOM element/attribute types to external types

Specified by:
  `getMapping` in interface `DOMEnhancedForDTM`

#### getReverseMapping

    public int[] getReverseMapping(java.lang.String[] names,
                          java.lang.String[] uris,
                          int[] types)

Get mapping from external element/attribute types to DOM types

Specified by:
  `getReverseMapping` in interface `DOMEnhancedForDTM`

#### getNamespaceMapping

    public short[] getNamespaceMapping(java.lang.String[] namespaces)

Get mapping from DOM namespace types to external namespace types

Specified by:
  `getNamespaceMapping` in interface `DOMEnhancedForDTM`

#### getReverseNamespaceMapping

    public short[] getReverseNamespaceMapping(java.lang.String[] namespaces)

Get mapping from external namespace types to DOM namespace types

Specified by:
  `getReverseNamespaceMapping` in interface `DOMEnhancedForDTM`

#### migrateTo

    public void migrateTo(DTMManager manager)

Migrate a DTM built with an old DTMManager to a new DTMManager. After the migration, the new DTMManager will treat the DTM as one that is built by itself. This is used to support DTM sharing between multiple transformations.

Specified by:
  `migrateTo` in interface `DTM`
Overrides:
  `migrateTo` in class `SAX2DTM`
Parameters:
  `manager` - the DTMManager

#### getElementById

    public int getElementById(java.lang.String idString)

Return the node identity for a given id String

Specified by:
  `getElementById` in interface `DOMEnhancedForDTM`
Specified by:
  `getElementById` in interface `DTM`
Overrides:
  `getElementById` in class `SAX2DTM`
Parameters:
  `idString` - The id String
Returns:
  The identity of the node whose id is the given String.

#### hasDOMSource

    public boolean hasDOMSource()

Return true if the input source is DOMSource.

Specified by:
  `hasDOMSource` in interface `DOMEnhancedForDTM`

#### characters

    public void characters(char[] ch,
                  int start,
                  int length)
                    throws SAXException

SAX2: Receive notification of character data.

Specified by:
  `characters` in interface `ContentHandler`
Overrides:
  `characters` in class `SAX2DTM`
Parameters:
  `ch` - The characters.
  `start` - The start position in the character array.
  `length` - The number of characters to use from the character array.
Throws:
  `SAXException` - Any SAX exception, possibly wrapping another exception.
See Also:
  `ContentHandler.characters(char[], int, int)`

#### startDocument

    public void startDocument()
                       throws SAXException

SAX2: Receive notification of the beginning of a document.

Specified by:
  `startDocument` in interface `ContentHandler`
Overrides:
  `startDocument` in class `SAX2DTM2`
Throws:
  `SAXException` - Any SAX exception, possibly wrapping another exception.
See Also:
  `ContentHandler.startDocument()`

#### endDocument

    public void endDocument()
                     throws SAXException

SAX2: Receive notification of the end of a document.

Specified by:
  `endDocument` in interface `ContentHandler`
Overrides:
  `endDocument` in class `SAX2DTM2`
Throws:
  `SAXException` - Any SAX exception, possibly wrapping another exception.
See Also:
  `ContentHandler.endDocument()`

#### startElement

    public void startElement(java.lang.String uri,
                    java.lang.String localName,
                    java.lang.String qname,
                    Attributes attributes,
                    Node node)
                      throws SAXException

Specialized interface used by DOM2SAX. This one has an extra Node parameter to build the Node -> id map.

Throws:
  `SAXException`

#### startElement

    public void startElement(java.lang.String uri,
                    java.lang.String localName,
                    java.lang.String qname,
                    Attributes attributes)
                      throws SAXException

SAX2: Receive notification of the beginning of an element.

Specified by:
  `startElement` in interface `ContentHandler`
Overrides:
  `startElement` in class `SAX2DTM2`
Parameters:
  `uri` - The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.
  `localName` - The local name (without prefix), or the empty string if Namespace processing is not being performed.
  `qname` - The qualified name (with prefix), or the empty string if qualified names are not available.
  `attributes` - The specified or defaulted attributes.
Throws:
  `SAXException` - Any SAX exception, possibly wrapping another exception.
See Also:
  `ContentHandler.startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)`

#### endElement

    public void endElement(java.lang.String namespaceURI,
                  java.lang.String localName,
                  java.lang.String qname)
                    throws SAXException

SAX2: Receive notification of the end of an element.

Specified by:
  `endElement` in interface `ContentHandler`
Overrides:
  `endElement` in class `SAX2DTM2`
Parameters:
  `namespaceURI` - The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.
  `localName` - The local name (without prefix), or the empty string if Namespace processing is not being performed.
  `qname` - The qualified XML 1.0 name (with prefix), or the empty string if qualified names are not available.
Throws:
  `SAXException` - Any SAX exception, possibly wrapping another exception.
See Also:
  `ContentHandler.endElement(java.lang.String, java.lang.String, java.lang.String)`

#### processingInstruction

    public void processingInstruction(java.lang.String target,
                             java.lang.String data)
                               throws SAXException

SAX2: Receive notification of a processing instruction.

Specified by:
  `processingInstruction` in interface `ContentHandler`
Overrides:
  `processingInstruction` in class `SAX2DTM2`
Parameters:
  `target` - The processing instruction target.
  `data` - The processing instruction data, or null if none is supplied.
Throws:
  `SAXException` - Any SAX exception, possibly wrapping another exception.
See Also:
  `ContentHandler.processingInstruction(java.lang.String, java.lang.String)`

#### ignorableWhitespace

    public void ignorableWhitespace(char[] ch,
                           int start,
                           int length)
                             throws SAXException

SAX2: Receive notification of ignorable whitespace in element content. Similar to characters(char[], int, int).

Specified by:
  `ignorableWhitespace` in interface `ContentHandler`
Overrides:
  `ignorableWhitespace` in class `SAX2DTM`
Parameters:
  `ch` - The whitespace characters.
  `start` - The start position in the character array.
  `length` - The number of characters to use from the character array.
Throws:
  `SAXException` - Any SAX exception, possibly wrapping another exception.
See Also:
  `ContentHandler.ignorableWhitespace(char[], int, int)`

#### startPrefixMapping

    public void startPrefixMapping(java.lang.String prefix,
                          java.lang.String uri)
                            throws SAXException

SAX2: Begin the scope of a prefix-URI Namespace mapping.

Specified by:
  `startPrefixMapping` in interface `ContentHandler`
Overrides:
  `startPrefixMapping` in class `SAX2DTM`
Parameters:
  `prefix` - The Namespace prefix being declared.
  `uri` - The Namespace URI mapped to the prefix.
Throws:
  `SAXException` - Any SAX exception, possibly wrapping another exception.
See Also:
  `ContentHandler.startPrefixMapping(java.lang.String, java.lang.String)`

#### comment

    public void comment(char[] ch,
               int start,
               int length)
                 throws SAXException

SAX2: Report an XML comment anywhere in the document.

Specified by:
  `comment` in interface `LexicalHandler`
Overrides:
  `comment` in class `SAX2DTM2`
Parameters:
  `ch` - An array holding the characters in the comment.
  `start` - The starting position in the array.
  `length` - The number of characters to use from the array.
Throws:
  `SAXException` - The application may raise an exception.

#### setEscaping

    public boolean setEscaping(boolean value)

#### print

    public void print(int node,
             int level)

Prints the whole tree to standard output

#### getNodeName

    public java.lang.String getNodeName(int node)

Returns the name of a node (attribute or element).

Specified by:
  `getNodeName` in interface `DOM`
Specified by:
  `getNodeName` in interface `DTM`
Overrides:
  `getNodeName` in class `SAX2DTM2`
Parameters:
  `node` - the id of the node.
Returns:
  String Name of this node, which may be an empty string. %REVIEW% Document when empty string is possible... %REVIEW-COMMENT% It should never be empty, should it?

#### getNamespaceName

    public java.lang.String getNamespaceName(int node)

Returns the namespace URI to which a node belongs

Specified by:
  `getNamespaceName` in interface `DOM`

#### getAttributeNode

    public int getAttributeNode(int type,
                       int element)

Returns the attribute node of a given type (if any) for an element

Specified by:
  `getAttributeNode` in interface `DOM`

#### getAttributeValue

    public java.lang.String getAttributeValue(int type,
                                     int element)

Returns the value of a given attribute type of a given element

#### getAttributeValue

    public java.lang.String getAttributeValue(java.lang.String name,
                                     int element)

This method is for testing/debugging only

#### getChildren

    public DTMAxisIterator getChildren(int node)

Returns an iterator with all the children of a given node

Specified by:
  `getChildren` in interface `DOM`

#### getTypedChildren

    public DTMAxisIterator getTypedChildren(int type)

Returns an iterator with all children of a specific type for a given node (element)

Specified by:
  `getTypedChildren` in interface `DOM`

#### getAxisIterator

    public DTMAxisIterator getAxisIterator(int axis)

This is a shortcut to the iterators that implement the supported XPath axes (only namespace::) is not supported. Returns a bare-bones iterator that must be initialized with a start node (using iterator.setStartNode()).

Specified by:
  `getAxisIterator` in interface `DOM`
Specified by:
  `getAxisIterator` in interface `DTM`
Overrides:
  `getAxisIterator` in class `DTMDefaultBaseIterators`
Parameters:
  `axis` - One of Axes.ANCESTORORSELF, etc.
Returns:
  A DTMAxisIterator, or null if the given axis isn't supported.

#### getTypedAxisIterator

    public DTMAxisIterator getTypedAxisIterator(int axis,
                                       int type)

Similar to getAxisIterator, but this one returns an iterator containing nodes of a typed axis (ex.: child::foo)

Specified by:
  `getTypedAxisIterator` in interface `DOM`
Specified by:
  `getTypedAxisIterator` in interface `DTM`
Overrides:
  `getTypedAxisIterator` in class `DTMDefaultBaseIterators`
Parameters:
  `axis` - One of Axes.ANCESTORORSELF, etc.
  `type` - An extended type ID.
Returns:
  A DTMAxisIterator, or null if the given axis isn't supported.

#### getNamespaceAxisIterator

    public DTMAxisIterator getNamespaceAxisIterator(int axis,
                                           int ns)

Do not think that this returns an iterator for the namespace axis. It returns an iterator with nodes that belong in a certain namespace, such as with The 'axis' specifies the axis for the base iterator from which the nodes are taken, while 'ns' specifies the namespace URI type.

Specified by:
  `getNamespaceAxisIterator` in interface `DOM`

#### getTypedDescendantIterator

    public DTMAxisIterator getTypedDescendantIterator(int type)

Returns an iterator with all descendants of a node that are of a given type.

#### getNthDescendant

    public DTMAxisIterator getNthDescendant(int type,
                                   int n,
                                   boolean includeself)

Returns the nth descendant of a node

Specified by:
  `getNthDescendant` in interface `DOM`

#### characters

    public void characters(int node,
                  SerializationHandler handler)
                    throws TransletException

Copy the string value of a node directly to an output handler

Specified by:
  `characters` in interface `DOM`
Throws:
  `TransletException`

#### copy

    public void copy(DTMAxisIterator nodes,
            SerializationHandler handler)
              throws TransletException

Copy a node-set to an output handler

Specified by:
  `copy` in interface `DOM`
Throws:
  `TransletException`

#### copy

    public void copy(SerializationHandler handler)
              throws TransletException

Copy the whole tree to an output handler

Throws:
  `TransletException`

#### copy

    public void copy(int node,
            SerializationHandler handler)
              throws TransletException

Performs a deep copy (ref. XSLs copy-of()) TODO: Copy namespace declarations. Can't be done until we add namespace nodes and keep track of NS prefixes TODO: Copy comment nodes

Specified by:
  `copy` in interface `DOM`
Throws:
  `TransletException`

#### shallowCopy

    public java.lang.String shallowCopy(int node,
                               SerializationHandler handler)
                                 throws TransletException

Performs a shallow copy (ref. XSLs copy())

Specified by:
  `shallowCopy` in interface `DOM`
Throws:
  `TransletException`

#### getLanguage

    public java.lang.String getLanguage(int node)

Returns a node' defined language for a node (if any)

Specified by:
  `getLanguage` in interface `DOM`

#### getBuilder

    public DOMBuilder getBuilder()

Returns an instance of the DOMBuilder inner class This class will consume the input document through a SAX2 interface and populate the tree.

#### getOutputDomBuilder

    public SerializationHandler getOutputDomBuilder()

Return a SerializationHandler for output handling. This method is used by Result Tree Fragments.

Specified by:
  `getOutputDomBuilder` in interface `DOM`

#### getResultTreeFrag

    public DOM getResultTreeFrag(int initSize,
                        int rtfType)

Return a instance of a DOM class to be used as an RTF

Specified by:
  `getResultTreeFrag` in interface `DOM`

#### getResultTreeFrag

    public DOM getResultTreeFrag(int initSize,
                        int rtfType,
                        boolean addToManager)

Return a instance of a DOM class to be used as an RTF

Specified by:
  `getResultTreeFrag` in interface `DOM`
Parameters:
  `initSize` - The initial size of the DOM.
  `rtfType` - The type of the RTF
  `addToManager` - true if the RTF should be registered with the DTMManager.
Returns:
  The DOM object which represents the RTF.

#### getElementsWithIDs

    public Hashtable getElementsWithIDs()

%HZ% Need Javadoc

Specified by:
  `getElementsWithIDs` in interface `DOM`

#### getUnparsedEntityURI

    public java.lang.String getUnparsedEntityURI(java.lang.String name)

The getUnparsedEntityURI function returns the URI of the unparsed entity with the specified name in the same document as the context node (see [3.3 Unparsed Entities]). It returns the empty string if there is no such entity.

Specified by:
  `getUnparsedEntityURI` in interface `DOM`
Specified by:
  `getUnparsedEntityURI` in interface `DTM`
Overrides:
  `getUnparsedEntityURI` in class `SAX2DTM`
Parameters:
  `name` - A string containing the Entity Name of the unparsed entity.
Returns:
  String containing the URI of the Unparsed Entity, or an empty string if no such entity exists.