org.apache.xpath.axes

Class AxesWalker

Implemented Interfaces:
Cloneable, ExpressionNode, ExpressionOwner, PathComponent, java.io.Serializable, SourceLocator, SubContextList, XPathVisitable
Known Direct Subclasses:
FilterExprWalker, ReverseAxesWalker

public class AxesWalker
extends PredicatedNodeTest
implements Cloneable, PathComponent, ExpressionOwner

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

See Also:
Serialized Form

Field Summary

Fields inherited from class org.apache.xpath.patterns.NodeTest

SCORE_NODETEST, SCORE_NONE, SCORE_NSWILD, SCORE_OTHER, SCORE_QNAME, SHOW_BYFUNCTION, SUPPORTS_PRE_STRIPPING, WILD

Constructor Summary

AxesWalker(LocPathIterator locPathIterator, int axis)
Construct an AxesWalker using a LocPathIterator.

Method Summary

void
callVisitors(ExpressionOwner owner, XPathVisitor visitor)
This will traverse the heararchy, calling the visitor for each member.
Object
clone()
Get a cloned AxesWalker.
boolean
deepEquals(Expression expr)
void
detach()
Detaches the walker from the set which it iterated over, releasing any computational resources and placing the iterator in the INVALID state.
int
getAnalysisBits()
Get the analysis bits for this walker, as defined in the WalkerFactory.
int
getAxis()
Returns the axis being iterated, if it is known.
int
getCurrentNode()
The node at which the TreeWalker is currently positioned.
DTM
getDTM(int node)
Get the DTM for this walker.
Expression
getExpression()
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.
int
getRoot()
The root node of the TreeWalker, as specified in setRoot(int root).
void
init(Compiler compiler, int opPos, int stepType)
Initialize an AxesWalker during the parse of the XPath expression.
boolean
isDocOrdered()
Returns true if all the nodes in the iteration well be returned in document order.
int
nextNode()
Moves the TreeWalker to the next visible node in document order relative to the current node, and returns the new node.
void
setDefaultDTM(DTM dtm)
Set the DTM for this walker.
void
setExpression(Expression exp)
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(int root)
Set the root node of the TreeWalker.
WalkingIterator
wi()

Methods inherited from class org.apache.xpath.axes.PredicatedNodeTest

acceptNode, callPredicateVisitors, canTraverseOutsideSubtree, clone, deepEquals, fixupVariables, getLastPos, getLocPathIterator, getPredicate, getPredicateCount, getPredicateIndex, getProximityPosition, getProximityPosition, initProximityPosition, isReverseAxes, resetProximityPositions, setLocPathIterator, setPredicateCount

Methods inherited from class org.apache.xpath.patterns.NodeTest

callVisitors, debugWhatToShow, deepEquals, execute, execute, execute, fixupVariables, getDefaultScore, getLocalName, getNamespace, getNodeTypeTest, getStaticScore, getWhatToShow, initNodeTest, initNodeTest, setLocalName, setNamespace, setStaticScore, setWhatToShow

Methods inherited from class org.apache.xpath.Expression

asIterator, asIteratorRaw, asNode, assertion, bool, canTraverseOutsideSubtree, deepEquals, error, execute, execute, execute, execute, executeCharsToContentHandler, exprAddChild, exprGetChild, exprGetNumChildren, exprGetParent, exprSetParent, fixupVariables, getColumnNumber, getExpressionOwner, getLineNumber, getPublicId, getSystemId, isNodesetExpr, isStableNumber, num, warn, xstr

Constructor Details

AxesWalker

public AxesWalker(LocPathIterator locPathIterator,
                  int axis)
Construct an AxesWalker using a LocPathIterator.

Parameters:
locPathIterator - non-null reference to the parent iterator.

Method Details

callVisitors

public void callVisitors(ExpressionOwner owner,
                         XPathVisitor visitor)
This will traverse the heararchy, calling the visitor for each member. If the called visitor method returns false, the subtree should not be called.
Specified by:
callVisitors in interface XPathVisitable
Overrides:
callVisitors in interface NodeTest

Parameters:
owner - The owner of the visitor, where that path may be rewritten if needed.
visitor - The visitor whose appropriate method will be called.


clone

public Object clone()
            throws CloneNotSupportedException
Get a cloned AxesWalker.
Overrides:
clone in interface PredicatedNodeTest

Returns:
A new AxesWalker that can be used without mutating this one.


deepEquals

public boolean deepEquals(Expression expr)
Overrides:
deepEquals in interface PredicatedNodeTest

See Also:
Expression.deepEquals(Expression)


detach

public void detach()
Detaches the walker from the set which it iterated over, releasing any computational resources and placing the iterator in the INVALID state.


getAnalysisBits

public int getAnalysisBits()
Get the analysis bits for this walker, as defined in the WalkerFactory.
Specified by:
getAnalysisBits in interface PathComponent

Returns:
One of WalkerFactory#BIT_DESCENDANT, etc.


getAxis

public int getAxis()
Returns the axis being iterated, if it is known.

Returns:
Axis.CHILD, etc., or -1 if the axis is not known or is of multiple types.


getCurrentNode

public final int 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).

Returns:
The node at which the TreeWalker is currently positioned, only null if setRoot has not yet been called.


getDTM

public DTM getDTM(int node)
Get the DTM for this walker.

Returns:
Non-null reference to a DTM.


getExpression

public Expression getExpression()
Specified by:
getExpression in interface ExpressionOwner

See Also:
ExpressionOwner.getExpression()


getLastPos

public int getLastPos(XPathContext xctxt)
Get the index of the last node that can be itterated to.
Specified by:
getLastPos in interface SubContextList
Overrides:
getLastPos in interface PredicatedNodeTest

Parameters:
xctxt - XPath runtime context.

Returns:
the index of the last node that can be itterated to.


getNextWalker

public AxesWalker getNextWalker()
Get the next walker in the location step chain.

Returns:
Reference to AxesWalker derivative, 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.


getRoot

public int getRoot()
The root node of the TreeWalker, as specified in setRoot(int root). Note that this may actually be below the current node.

Returns:
The context node of the step.


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 -


isDocOrdered

public boolean isDocOrdered()
Returns true if all the nodes in the iteration well be returned in document order. Warning: This can only be called after setRoot has been called!

Returns:
true as a default.


nextNode

public int 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.

Returns:
The new node, or null if the current node has no next node in the TreeWalker's logical view.


setDefaultDTM

public void setDefaultDTM(DTM dtm)
Set the DTM for this walker.

Parameters:
dtm - Non-null reference to a DTM.


setExpression

public void setExpression(Expression exp)
Specified by:
setExpression in interface ExpressionOwner

See Also:
ExpressionOwner.setExpression(Expression)


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.


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.


setRoot

public void setRoot(int root)
Set the root node of the TreeWalker. (Not part of the DOM2 TreeWalker interface).

Parameters:
root - The context node of this step.


wi

public final WalkingIterator wi()


Copyright B) 2004 Apache XML Project. All Rights Reserved.