org.apache.xml.dtm
Class DTMAxisTraverser

java.lang.Object
  extended byorg.apache.xml.dtm.DTMAxisTraverser
Direct Known Subclasses:
DTMDefaultBaseTraversers.AncestorTraverser, DTMDefaultBaseTraversers.AttributeTraverser, DTMDefaultBaseTraversers.ChildTraverser, DTMDefaultBaseTraversers.FollowingSiblingTraverser, DTMDefaultBaseTraversers.IndexedDTMAxisTraverser, DTMDefaultBaseTraversers.NamespaceDeclsTraverser, DTMDefaultBaseTraversers.NamespaceTraverser, DTMDefaultBaseTraversers.ParentTraverser, DTMDefaultBaseTraversers.PrecedingAndAncestorTraverser, DTMDefaultBaseTraversers.PrecedingSiblingTraverser, DTMDefaultBaseTraversers.PrecedingTraverser, DTMDefaultBaseTraversers.SelfTraverser

public abstract class DTMAxisTraverser
extends Object

A class that implements traverses DTMAxisTraverser interface can traverse a set of nodes, usually as defined by an XPath axis. It is different from an iterator, because it does not need to hold state, and, in fact, must not hold any iteration-based state. It is meant to be implemented as an inner class of a DTM, and returned by the getAxisTraverser(final int axis) function.

A DTMAxisTraverser can probably not traverse a reverse axis in document order.

Typical usage:


 for(int nodeHandle=myTraverser.first(myContext);
     nodeHandle!=DTM.NULL;
     nodeHandle=myTraverser.next(myContext,nodeHandle))
 { ... processing for node indicated by nodeHandle goes here ... }
 

Author:
Scott Boag

Constructor Summary
DTMAxisTraverser()
           
 
Method Summary
 int first(int context)
          By the nature of the stateless traversal, the context node can not be returned or the iteration will go into an infinate loop.
 int first(int context, int extendedTypeID)
          By the nature of the stateless traversal, the context node can not be returned or the iteration will go into an infinate loop.
abstract  int next(int context, int current)
          Traverse to the next node after the current node.
abstract  int next(int context, int current, int extendedTypeID)
          Traverse to the next node after the current node that is matched by the extended type ID.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DTMAxisTraverser

public DTMAxisTraverser()
Method Detail

first

public int first(int context)
By the nature of the stateless traversal, the context node can not be returned or the iteration will go into an infinate loop. So to traverse an axis, the first function must be used to get the first node.

This method needs to be overloaded only by those axis that process the self node. <\p>

Parameters:
context - The context node of this traversal. This is the point that the traversal starts from.
Returns:
the first node in the traversal.

first

public int first(int context,
                 int extendedTypeID)
By the nature of the stateless traversal, the context node can not be returned or the iteration will go into an infinate loop. So to traverse an axis, the first function must be used to get the first node.

This method needs to be overloaded only by those axis that process the self node. <\p>

Parameters:
context - The context node of this traversal. This is the point of origin for the traversal -- its "root node" or starting point.
extendedTypeID - The extended type ID that must match.
Returns:
the first node in the traversal.

next

public abstract int next(int context,
                         int current)
Traverse to the next node after the current node.

Parameters:
context - The context node of this traversal. This is the point of origin for the traversal -- its "root node" or starting point.
current - The current node of the traversal. This is the last known location in the traversal, typically the node-handle returned by the previous traversal step. For the first traversal step, context should be set equal to current. Note that in order to test whether context is in the set, you must use the first() method instead.
Returns:
the next node in the iteration, or DTM.NULL.
See Also:
first(int)

next

public abstract int next(int context,
                         int current,
                         int extendedTypeID)
Traverse to the next node after the current node that is matched by the extended type ID.

Parameters:
context - The context node of this traversal. This is the point of origin for the traversal -- its "root node" or starting point.
current - The current node of the traversal. This is the last known location in the traversal, typically the node-handle returned by the previous traversal step. For the first traversal step, context should be set equal to current. Note that in order to test whether context is in the set, you must use the first() method instead.
extendedTypeID - The extended type ID that must match.
Returns:
the next node in the iteration, or DTM.NULL.
See Also:
first(int,int)