org.apache.xalan.xsltc.dom
Class SAXImpl

java.lang.Object
  extended by org.apache.xml.dtm.ref.DTMDefaultBase
      extended by org.apache.xml.dtm.ref.DTMDefaultBaseTraversers
          extended by org.apache.xml.dtm.ref.DTMDefaultBaseIterators
              extended by org.apache.xml.dtm.ref.sax2dtm.SAX2DTM
                  extended by org.apache.xml.dtm.ref.sax2dtm.SAX2DTM2
                      extended by org.apache.xalan.xsltc.dom.SAXImpl
All Implemented Interfaces:
DOM, DOMBuilder, ExtendedSAX, DOMEnhancedForDTM, DTM, org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler, org.xml.sax.ext.DeclHandler, org.xml.sax.ext.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.


Nested Class Summary
 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 :::*
private  class SAXImpl.NodeValueIterator
          This is a specialised iterator for predicates comparing node or attribute values to variable or parameter values.
 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
private  boolean _disableEscaping
           
private  org.w3c.dom.Document _document
           
private  java.lang.String _documentURI
           
private static int _documentURIIndex
           
private  BitArray _dontEscape
           
private  XSLTCDTMManager _dtmManager
           
private  boolean _escaping
           
private  boolean _hasDOMSource
           
private  int _idx
           
private  int _namesSize
           
private  Hashtable _node2Ids
           
private  org.w3c.dom.NodeList[] _nodeLists
           
private  org.w3c.dom.Node[] _nodes
           
private  Hashtable _nsIndex
           
private  int _prefixCount
           
private  boolean _preserve
           
private  int _size
           
private  int _textNodeToProcess
           
private  int _uriCount
           
private  int[] _xmlSpaceStack
           
private static DTMAxisIterator EMPTYITERATOR
           
private static java.lang.String EMPTYSTRING
           
private static java.lang.String PRESERVE_STRING
           
private static java.lang.String XML_LANG_ATTRIBUTE
           
private static java.lang.String XML_PREFIX
           
private static java.lang.String XML_STRING
           
private static java.lang.String XML_URI
           
private static java.lang.String XMLNS_PREFIX
           
private static java.lang.String XMLSPACE_STRING
           
 
Fields inherited from class org.apache.xml.dtm.ref.sax2dtm.SAX2DTM2
m_blocksize, m_buildIdIndex, m_extendedTypes, m_MASK, m_SHIFT, m_values, TEXT_LENGTH_BITS, TEXT_LENGTH_MAX, TEXT_OFFSET_BITS, TEXT_OFFSET_MAX
 
Fields inherited from class org.apache.xml.dtm.ref.sax2dtm.SAX2DTM
m_chars, m_coalescedTextType, m_contextIndexes, m_data, m_dataOrQName, m_endDocumentOccured, m_idAttributes, m_insideDTD, m_locator, m_parents, m_prefixMappings, m_previous, m_sourceColumn, m_sourceLine, m_sourceSystemId, m_textPendingStart, m_textType, m_useSourceLocationProperty, m_valuesOrPrefixes, m_walker
 
Fields inherited from class org.apache.xml.dtm.ref.DTMDefaultBase
DEFAULT_BLOCKSIZE, DEFAULT_NUMBLOCKS, DEFAULT_NUMBLOCKS_SMALL, m_documentBaseURI, m_dtmIdent, m_elemIndexes, m_expandedNameTable, m_exptype, m_firstch, m_indexing, m_mgr, m_mgrDefault, m_namespaceDeclSetElements, m_namespaceDeclSets, m_nextsib, m_parent, m_prevsib, m_shouldStripWhitespaceStack, m_shouldStripWS, m_size, m_traversers, m_wsfilter, m_xstrf, NOTPROCESSED, 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
SAXImpl(XSLTCDTMManager mgr, javax.xml.transform.Source source, int dtmIdentity, DTMWSFilter whiteSpaceFilter, XMLStringFactory xstringfactory, boolean doIndexing, boolean buildIdIndex)
          Construct a SAXImpl object using the default block size.
SAXImpl(XSLTCDTMManager mgr, javax.xml.transform.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
 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.
private  void copy(int node, SerializationHandler handler, boolean isChild)
           
 void copy(SerializationHandler handler)
          Copy the whole tree to an output handler
private  void copyPI(int node, SerializationHandler handler)
          Copies a processing instruction node to an output handler
private  void definePrefixAndUri(java.lang.String prefix, java.lang.String uri)
           
 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
private  short[] getMapping2(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
protected  boolean getShouldStripWhitespace()
          Find out whether or not to strip whitespace nodes.
 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]).
private  void handleTextEscaping()
          Creates a text-node and checks if it is a whitespace node.
 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.
 org.w3c.dom.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
 org.w3c.dom.Node makeNode(int index)
          Create an org.w3c.dom.Node from a node in the tree
 org.w3c.dom.NodeList makeNodeList(DTMAxisIterator iter)
          Create an org.w3c.dom.NodeList from a node iterator The iterator most be started before this method is called
 org.w3c.dom.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.
private  int[] setupMapping(java.lang.String[] names, java.lang.String[] uris, int[] types, int nNames)
          Sets up a translet-to-dom type mapping table
 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, org.xml.sax.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, org.xml.sax.Attributes attributes, org.w3c.dom.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.
private  void xmlSpaceDefine(java.lang.String val, int node)
          Call this when an xml:space attribute is encountered to define the whitespace strip/preserve settings.
private  void xmlSpaceRevert(int node)
          Call this from endElement() to revert strip/preserve setting to whatever it was before the corresponding startElement().
 
Methods inherited from class org.apache.xml.dtm.ref.sax2dtm.SAX2DTM2
_exptype, _exptype2, _exptype2Type, _firstch2, _nextsib2, _parent2, _type2, addNode, charactersFlush, copyAttribute, copyAttributes, copyElement, copyNS, copyTextNode, dispatchCharactersEvents, getExpandedTypeID2, getFirstAttribute, getFirstAttributeIdentity, getIdForNamespace, getLocalName, getNextAttributeIdentity, getNextNamespaceNode2, getNodeNameX, getNodeValue, getStringValue, getStringValue, getStringValueX, getTypedAttribute
 
Methods inherited from class org.apache.xml.dtm.ref.sax2dtm.SAX2DTM
_dataOrQName, addNewDTMID, attributeDecl, clearCoRoutine, clearCoRoutine, declAlreadyDeclared, dispatchToEvents, elementDecl, endCDATA, endDTD, endEntity, endPrefixMapping, error, externalEntityDecl, fatalError, getAttributeNode, getContentHandler, getDeclHandler, getDocumentTypeDeclarationPublicIdentifier, getDocumentTypeDeclarationSystemIdentifier, getDTDHandler, getEntityResolver, getErrorHandler, getFixedNames, getLexicalHandler, getNamespaceURI, getNamespaceURI, getNextNodeIdentity, getNumberOfNodes, getPrefix, getPrefix, getSourceLocatorFor, internalEntityDecl, isAttributeSpecified, isWhitespace, needsTwoThreads, nextNode, notationDecl, resolveEntity, setDocumentLocator, setIDAttribute, setIncrementalSAXSource, setProperty, setSourceLocation, 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
_firstch, _level, _nextsib, _parent, _prevsib, _type, appendChild, appendTextChild, declareNamespaceInContext, documentRegistration, documentRelease, dumpDTM, dumpNode, ensureSizeOfIndex, error, findGTE, findInSortedSuballocatedIntVector, findNamespaceContext, 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, indexNode, isCharacterElementContentWhitespace, isDocumentAllDeclarationsProcessed, isNodeAfter, isSupported, makeNodeHandle, makeNodeIdentity, popShouldStripWhitespace, pushShouldStripWhitespace, setDocumentBaseURI, setFeature, setShouldStripWhitespace, supportsPreStripping
 
Methods inherited from class java.lang.Object
clone, equals, finalize, 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
 

Field Detail

_uriCount

private int _uriCount

_prefixCount

private int _prefixCount

_xmlSpaceStack

private int[] _xmlSpaceStack

_idx

private int _idx

_preserve

private boolean _preserve

XML_STRING

private static final java.lang.String XML_STRING
See Also:
Constant Field Values

XML_PREFIX

private static final java.lang.String XML_PREFIX
See Also:
Constant Field Values

XMLSPACE_STRING

private static final java.lang.String XMLSPACE_STRING
See Also:
Constant Field Values

PRESERVE_STRING

private static final java.lang.String PRESERVE_STRING
See Also:
Constant Field Values

XMLNS_PREFIX

private static final java.lang.String XMLNS_PREFIX
See Also:
Constant Field Values

XML_URI

private static final java.lang.String XML_URI
See Also:
Constant Field Values

_escaping

private boolean _escaping

_disableEscaping

private boolean _disableEscaping

_textNodeToProcess

private int _textNodeToProcess

EMPTYSTRING

private static final java.lang.String EMPTYSTRING
See Also:
Constant Field Values

EMPTYITERATOR

private static final DTMAxisIterator EMPTYITERATOR

_namesSize

private int _namesSize

_nsIndex

private Hashtable _nsIndex

_size

private int _size

_dontEscape

private BitArray _dontEscape

_documentURI

private java.lang.String _documentURI

_documentURIIndex

private static int _documentURIIndex

_document

private org.w3c.dom.Document _document

_node2Ids

private Hashtable _node2Ids

_hasDOMSource

private boolean _hasDOMSource

_dtmManager

private XSLTCDTMManager _dtmManager

_nodes

private org.w3c.dom.Node[] _nodes

_nodeLists

private org.w3c.dom.NodeList[] _nodeLists

XML_LANG_ATTRIBUTE

private static final java.lang.String XML_LANG_ATTRIBUTE
See Also:
Constant Field Values
Constructor Detail

SAXImpl

public SAXImpl(XSLTCDTMManager mgr,
               javax.xml.transform.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,
               javax.xml.transform.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 org.w3c.dom.Node makeNode(int index)
Create an org.w3c.dom.Node from a node in the tree

Specified by:
makeNode in interface DOM

makeNode

public org.w3c.dom.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 org.w3c.dom.NodeList makeNodeList(int index)
Create an org.w3c.dom.NodeList from a node in the tree

Specified by:
makeNodeList in interface DOM

makeNodeList

public org.w3c.dom.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.

setupMapping

private int[] setupMapping(java.lang.String[] names,
                           java.lang.String[] uris,
                           int[] types,
                           int nNames)
Sets up a translet-to-dom type mapping table


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

getMapping2

private short[] getMapping2(java.lang.String[] names,
                            java.lang.String[] uris,
                            int[] types)
Get mapping from DOM element/attribute types to external types. This method is used when the document is not fully built.


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

xmlSpaceDefine

private void xmlSpaceDefine(java.lang.String val,
                            int node)
Call this when an xml:space attribute is encountered to define the whitespace strip/preserve settings.


xmlSpaceRevert

private void xmlSpaceRevert(int node)
Call this from endElement() to revert strip/preserve setting to whatever it was before the corresponding startElement().


getShouldStripWhitespace

protected boolean getShouldStripWhitespace()
Find out whether or not to strip whitespace nodes.

Overrides:
getShouldStripWhitespace in class DTMDefaultBase
Returns:
whether or not to strip whitespace nodes.

handleTextEscaping

private void handleTextEscaping()
Creates a text-node and checks if it is a whitespace node.


characters

public void characters(char[] ch,
                       int start,
                       int length)
                throws org.xml.sax.SAXException
SAX2: Receive notification of character data.

Specified by:
characters in interface org.xml.sax.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:
org.xml.sax.SAXException - Any SAX exception, possibly wrapping another exception.
See Also:
ContentHandler.characters(char[], int, int)

startDocument

public void startDocument()
                   throws org.xml.sax.SAXException
SAX2: Receive notification of the beginning of a document.

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

endDocument

public void endDocument()
                 throws org.xml.sax.SAXException
SAX2: Receive notification of the end of a document.

Specified by:
endDocument in interface org.xml.sax.ContentHandler
Overrides:
endDocument in class SAX2DTM2
Throws:
org.xml.sax.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,
                         org.xml.sax.Attributes attributes,
                         org.w3c.dom.Node node)
                  throws org.xml.sax.SAXException
Specialized interface used by DOM2SAX. This one has an extra Node parameter to build the Node -> id map.

Throws:
org.xml.sax.SAXException

startElement

public void startElement(java.lang.String uri,
                         java.lang.String localName,
                         java.lang.String qname,
                         org.xml.sax.Attributes attributes)
                  throws org.xml.sax.SAXException
SAX2: Receive notification of the beginning of an element.

Specified by:
startElement in interface org.xml.sax.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:
org.xml.sax.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 org.xml.sax.SAXException
SAX2: Receive notification of the end of an element.

Specified by:
endElement in interface org.xml.sax.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:
org.xml.sax.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 org.xml.sax.SAXException
SAX2: Receive notification of a processing instruction.

Specified by:
processingInstruction in interface org.xml.sax.ContentHandler
Overrides:
processingInstruction in class SAX2DTM2
Parameters:
target - The processing instruction target.
data - The processing instruction data, or null if none is supplied.
Throws:
org.xml.sax.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 org.xml.sax.SAXException
SAX2: Receive notification of ignorable whitespace in element content. Similar to characters(char[], int, int).

Specified by:
ignorableWhitespace in interface org.xml.sax.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:
org.xml.sax.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 org.xml.sax.SAXException
SAX2: Begin the scope of a prefix-URI Namespace mapping.

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

definePrefixAndUri

private void definePrefixAndUri(java.lang.String prefix,
                                java.lang.String uri)
                         throws org.xml.sax.SAXException
Throws:
org.xml.sax.SAXException

comment

public void comment(char[] ch,
                    int start,
                    int length)
             throws org.xml.sax.SAXException
SAX2: Report an XML comment anywhere in the document.

Specified by:
comment in interface org.xml.sax.ext.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:
org.xml.sax.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

copy

private final void copy(int node,
                        SerializationHandler handler,
                        boolean isChild)
                 throws TransletException
Throws:
TransletException

copyPI

private void copyPI(int node,
                    SerializationHandler handler)
             throws TransletException
Copies a processing instruction node to an output handler

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.