org.apache.xpath.axes
Class AxesWalker

java.lang.Object
  |
  +--org.apache.xpath.Expression
        |
        +--org.apache.xpath.patterns.NodeTest
              |
              +--org.apache.xpath.axes.PredicatedNodeTest
                    |
                    +--org.apache.xpath.axes.AxesWalker
Direct Known Subclasses:
AttributeWalker, AttributeWalkerOneStep, ChildWalker, ChildWalkerMultiStep, ChildWalkerOneStep, DescendantWalker, FilterExprWalker, FollowingSiblingWalker, FollowingWalker, NamespaceWalker, ParentWalker, ReverseAxesWalker, RootWalker, SelfWalker, SelfWalkerOneStep

public abstract class AxesWalker
extends PredicatedNodeTest
implements java.lang.Cloneable, TreeWalker, NodeFilter

Serves as common interface for axes Walkers, and stores common state variables.

See Also:
Serialized Form

Field Summary
static java.lang.String FEATURE_NODETESTFILTER
          String passed to Node.isSupported(java.lang.String, java.lang.String) to see if it implements a NodeTestFilter interface.
 
Fields inherited from class org.apache.xpath.patterns.NodeTest
SCORE_NODETEST, SCORE_NONE, SCORE_NSWILD, SCORE_OTHER, SCORE_QNAME, SHOW_BYFUNCTION, SHOW_NAMESPACE, SUPPORTS_PRE_STRIPPING, WILD
 
Constructor Summary
AxesWalker(LocPathIterator locPathIterator)
          Construct an AxesWalker using a LocPathIterator.
 
Method Summary
 boolean canTraverseOutsideSubtree()
          Tell if this expression or it's subexpressions can traverse outside the current subtree.
 java.lang.Object clone()
          Get a cloned AxesWalker.
 Node firstChild()
          Moves the TreeWalker to the first visible child of the current node, and returns the new node.
 Node getCurrentNode()
          The node at which the TreeWalker is currently positioned.
 boolean getExpandEntityReferences()
          The value of this flag determines whether the children of entity reference nodes are visible to the TreeWalker.
 NodeFilter getFilter()
          The filter used to screen nodes.
 int getLastPos(XPathContext xctxt)
          Get the index of the last node that can be itterated to.
 AxesWalker getNextWalker()
          Get the next walker in the location step chain.
 AxesWalker getPrevWalker()
          Get the previous walker reference in the location step chain.
 Node getRoot()
          The root node of the TreeWalker, as specified in setRoot(Node root).
 void init(Compiler compiler, int opPos, int stepType)
          Initialize an AxesWalker during the parse of the XPath expression.
 Node lastChild()
          Moves the TreeWalker to the last visible child of the current node, and returns the new node.
 Node nextNode()
          Moves the TreeWalker to the next visible node in document order relative to the current node, and returns the new node.
 Node nextSibling()
          Moves the TreeWalker to the next sibling of the current node, and returns the new node.
 Node parentNode()
          Moves to and returns the closest visible ancestor node of the current node.
 Node previousNode()
          Moves the TreeWalker to the previous visible node in document order relative to the current node, and returns the new node.
 Node previousSibling()
          Moves the TreeWalker to the previous sibling of the current node, and returns the new node.
 void setCurrentNode(Node currentNode)
          Set the current node.
 void setNextWalker(AxesWalker walker)
          Set the next walker in the location step chain.
 void setPrevWalker(AxesWalker walker)
          Set or clear the previous walker reference in the location step chain.
 void setRoot(Node root)
          Set the root node of the TreeWalker.
 java.lang.String toString()
          Diagnostic string for this walker.
 
Methods inherited from class org.apache.xpath.axes.PredicatedNodeTest
acceptNode, getLocPathIterator, getPredicateCount, getPredicateIndex, getProximityPosition, getProximityPosition, initProximityPosition, isReverseAxes, resetProximityPositions, setLocPathIterator, setPredicateCount
 
Methods inherited from class org.apache.xpath.patterns.NodeTest
debugWhatToShow, execute, execute, getDefaultScore, getLocalName, getNamespace, getWhatToShow, initNodeTest, initNodeTest
 
Methods inherited from class org.apache.xpath.Expression
assert, error, setSourceLocator, warn
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

FEATURE_NODETESTFILTER

public static final java.lang.String FEATURE_NODETESTFILTER
String passed to Node.isSupported(java.lang.String, java.lang.String) to see if it implements a NodeTestFilter interface.
Constructor Detail

AxesWalker

public AxesWalker(LocPathIterator locPathIterator)
Construct an AxesWalker using a LocPathIterator.
Parameters:
locPathIterator - non-null reference to the parent iterator.
Method Detail

init

public void init(Compiler compiler,
                 int opPos,
                 int stepType)
          throws TransformerException
Initialize an AxesWalker during the parse of the XPath expression.
Parameters:
compiler - The Compiler object that has information about this walker in the op map.
opPos - The op code position of this location step.
stepType - The type of location step.
Throws:
TransformerException -  

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Get a cloned AxesWalker.
Returns:
A new AxesWalker that can be used without mutating this one.
Throws:
java.lang.CloneNotSupportedException -  
Overrides:
clone in class PredicatedNodeTest

canTraverseOutsideSubtree

public boolean canTraverseOutsideSubtree()
Tell if this expression or it's subexpressions can traverse outside the current subtree.
Returns:
true if traversal outside the context node's subtree can occur.
Overrides:
canTraverseOutsideSubtree in class PredicatedNodeTest

getRoot

public Node getRoot()
The root node of the TreeWalker, as specified in setRoot(Node root). Note that this may actually be below the current node.
Specified by:
getRoot in interface TreeWalker
Returns:
The context node of the step.

setRoot

public void setRoot(Node root)
Set the root node of the TreeWalker. (Not part of the DOM2 TreeWalker interface).
Parameters:
root - The context node of this step.

getCurrentNode

public final Node getCurrentNode()
The node at which the TreeWalker is currently positioned.
The value must not be null. Alterations to the DOM tree may cause the current node to no longer be accepted by the TreeWalker's associated filter. currentNode may also be explicitly set to any node, whether or not it is within the subtree specified by the root node or would be accepted by the filter and whatToShow flags. Further traversal occurs relative to currentNode even if it is not part of the current view by applying the filters in the requested direction (not changing currentNode where no traversal is possible).
Specified by:
getCurrentNode in interface TreeWalker
Returns:
The node at which the TreeWalker is currently positioned, only null if setRoot has not yet been called.
Throws:
DOMException - NOT_SUPPORTED_ERR: Raised if the specified currentNode isnull .

setCurrentNode

public void setCurrentNode(Node currentNode)
                    throws DOMException
Set the current node.
Specified by:
setCurrentNode in interface TreeWalker
Parameters:
currentNode - The current itteration node, should not be null.
Throws:
DOMException -  

getFilter

public NodeFilter getFilter()
The filter used to screen nodes.
Specified by:
getFilter in interface TreeWalker
Returns:
This AxesWalker.

getExpandEntityReferences

public boolean getExpandEntityReferences()
The value of this flag determines whether the children of entity reference nodes are visible to the TreeWalker. If false, they will be skipped over.
To produce a view of the document that has entity references expanded and does not expose the entity reference node itself, use the whatToShow flags to hide the entity reference node and set expandEntityReferences to true when creating the TreeWalker. To produce a view of the document that has entity reference nodes but no entity expansion, use the whatToShow flags to show the entity reference node and set expandEntityReferences to false.
Specified by:
getExpandEntityReferences in interface TreeWalker
Returns:
true.

parentNode

public Node parentNode()
Moves to and returns the closest visible ancestor node of the current node. If the search for parentNode attempts to step upward from the TreeWalker's root node, or if it fails to find a visible ancestor node, this method retains the current position and returns null.
Specified by:
parentNode in interface TreeWalker
Returns:
The new parent node, or null if the current node has no parent in the TreeWalker's logical view.

firstChild

public Node firstChild()
Moves the TreeWalker to the first visible child of the current node, and returns the new node. If the current node has no visible children, returns null , and retains the current node.
Specified by:
firstChild in interface TreeWalker
Returns:
The new node, or null if the current node has no visible children in the TreeWalker's logical view.

nextSibling

public Node nextSibling()
Moves the TreeWalker to the next sibling of the current node, and returns the new node. If the current node has no visible next sibling, returns null , and retains the current node.
Specified by:
nextSibling in interface TreeWalker
Returns:
The new node, or null if the current node has no next sibling in the TreeWalker's logical view.

lastChild

public Node lastChild()
Moves the TreeWalker to the last visible child of the current node, and returns the new node. If the current node has no visible children, returns null , and retains the current node.
Specified by:
lastChild in interface TreeWalker
Returns:
The new node, or null if the current node has no children in the TreeWalker's logical view.

previousSibling

public Node previousSibling()
Moves the TreeWalker to the previous sibling of the current node, and returns the new node. If the current node has no visible previous sibling, returns null , and retains the current node.
Specified by:
previousSibling in interface TreeWalker
Returns:
The new node, or null if the current node has no previous sibling in the TreeWalker's logical view.

previousNode

public Node previousNode()
Moves the TreeWalker to the previous visible node in document order relative to the current node, and returns the new node. If the current node has no previous node, or if the search for previousNode attempts to step upward from the TreeWalker's root node, returns null , and retains the current node.
Specified by:
previousNode in interface TreeWalker
Returns:
The new node, or null if the current node has no previous node in the TreeWalker's logical view.

setNextWalker

public void setNextWalker(AxesWalker walker)
Set the next walker in the location step chain.
Parameters:
walker - Reference to AxesWalker derivative, or may be null.

getNextWalker

public AxesWalker getNextWalker()
Get the next walker in the location step chain.
Returns:
Reference to AxesWalker derivative, or null.

setPrevWalker

public void setPrevWalker(AxesWalker walker)
Set or clear the previous walker reference in the location step chain.
Parameters:
walker - Reference to previous walker reference in the location step chain, or null.

getPrevWalker

public AxesWalker getPrevWalker()
Get the previous walker reference in the location step chain.
Returns:
Reference to previous walker reference in the location step chain, or null.

toString

public java.lang.String toString()
Diagnostic string for this walker.
Returns:
Diagnostic string for this walker.
Overrides:
toString in class java.lang.Object

nextNode

public Node nextNode()
Moves the TreeWalker to the next visible node in document order relative to the current node, and returns the new node. If the current node has no next node, or if the search for nextNode attempts to step upward from the TreeWalker's root node, returns null , and retains the current node.
Specified by:
nextNode in interface TreeWalker
Returns:
The new node, or null if the current node has no next node in the TreeWalker's logical view.

getLastPos

public int getLastPos(XPathContext xctxt)
Get the index of the last node that can be itterated to.
Parameters:
xctxt - XPath runtime context.
Returns:
the index of the last node that can be itterated to.
Overrides:
getLastPos in class PredicatedNodeTest


Copyright � 2000 Apache XML Project. All Rights Reserved.