org.apache.xml.dtm.ref.sax2dtm
Class SAX2DTM2.DescendantIterator

java.lang.Object
  extended by org.apache.xml.dtm.ref.DTMAxisIteratorBase
      extended by org.apache.xml.dtm.ref.DTMDefaultBaseIterators.InternalAxisIteratorBase
          extended by org.apache.xml.dtm.ref.sax2dtm.SAX2DTM2.DescendantIterator
All Implemented Interfaces:
java.lang.Cloneable, DTMAxisIterator
Direct Known Subclasses:
SAX2DTM2.TypedDescendantIterator
Enclosing class:
SAX2DTM2

public class SAX2DTM2.DescendantIterator
extends DTMDefaultBaseIterators.InternalAxisIteratorBase

Iterator that returns the descendants of a given node.


Field Summary
 
Fields inherited from class org.apache.xml.dtm.ref.DTMDefaultBaseIterators.InternalAxisIteratorBase
_currentNode
 
Fields inherited from class org.apache.xml.dtm.ref.DTMAxisIteratorBase
_includeSelf, _isRestartable, _last, _markedNode, _position, _startNode
 
Fields inherited from interface org.apache.xml.dtm.DTMAxisIterator
END
 
Constructor Summary
SAX2DTM2.DescendantIterator()
           
 
Method Summary
protected  boolean isDescendant(int identity)
          Tell if this node identity is a descendant.
 int next()
          Get the next node in the iteration.
 DTMAxisIterator reset()
          Reset.
 DTMAxisIterator setStartNode(int node)
          Set start to END should 'close' the iterator, i.e.
 
Methods inherited from class org.apache.xml.dtm.ref.DTMDefaultBaseIterators.InternalAxisIteratorBase
gotoMark, setMark
 
Methods inherited from class org.apache.xml.dtm.ref.DTMAxisIteratorBase
cloneIterator, getAxis, getLast, getNodeByPosition, getPosition, getStartNode, includeSelf, isDocOrdered, isReverse, resetPosition, returnNode, setRestartable
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SAX2DTM2.DescendantIterator

public SAX2DTM2.DescendantIterator()
Method Detail

setStartNode

public DTMAxisIterator setStartNode(int node)
Set start to END should 'close' the iterator, i.e. subsequent call to next() should return END.

Parameters:
node - Sets the root of the iteration.
Returns:
A DTMAxisIterator set to the start of the iteration.

isDescendant

protected final boolean isDescendant(int identity)
Tell if this node identity is a descendant. Assumes that the node info for the element has already been obtained. This one-sided test works only if the parent has been previously tested and is known to be a descendent. It fails if the parent is the _startNode's next sibling, or indeed any node that follows _startNode in document order. That may suffice for this iterator, but it's not really an isDescendent() test. %REVIEW% rename?

Parameters:
identity - The index number of the node in question.
Returns:
true if the index is a descendant of _startNode.

next

public int next()
Get the next node in the iteration.

Returns:
The next node handle in the iteration, or END.

reset

public DTMAxisIterator reset()
Reset.

Specified by:
reset in interface DTMAxisIterator
Overrides:
reset in class DTMAxisIteratorBase
Returns:
A DTMAxisIterator which has been reset to the start node, which may or may not be the same as this iterator.