Class AxesWalker

All Implemented Interfaces:
Cloneable, SourceLocator, PathComponent, SubContextList, ExpressionNode, XPathVisitable
Direct Known Subclasses:
FilterExprWalker, ReverseAxesWalker

public class AxesWalker extends PredicatedNodeTest implements Cloneable, PathComponent
Serves as common interface for axes Walkers, and stores common state variables.
  • Field Details

    • m_nextWalker

      protected AxesWalker m_nextWalker
      The next walker in the location step chain.
    • m_axis

      protected final int m_axis
      The traversal axis from where the nodes will be filtered.
    • m_traverser

      protected DTMAxisTraverser m_traverser
      The DTM inner traversal class, that corresponds to the super axis.
  • 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

    • wi

      public final WalkingIterator wi()
    • 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 - if any
    • clone

      public Object clone() throws CloneNotSupportedException
      Overrides:
      clone in class PredicatedNodeTest
      Throws:
      CloneNotSupportedException
    • 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.
    • 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.
    • getAnalysisBits

      public int getAnalysisBits()
      Get the analysis bits for this path component, as defined in the WalkerFactory.
      Specified by:
      getAnalysisBits in interface PathComponent
      Returns:
      One of WalkerFactory#BIT_DESCENDANT, etc.
    • 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.
    • 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.
    • getNextNode

      protected int getNextNode()
      Get the next node in document order on the axes.
      Returns:
      the next node in document order on the axes, or null.
    • 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.
    • getLastPos

      public int getLastPos(XPathContext xctxt)
      Get the number of nodes in the node list, which, in the XSLT 1 based counting system, is the last index position.
      Specified by:
      getLastPos in interface SubContextList
      Specified by:
      getLastPos in class PredicatedNodeTest
      Parameters:
      xctxt - The XPath runtime context.
      Returns:
      the number of nodes in the node list.
    • getDTM

      public DTM getDTM(int node)
      Get the DTM for this walker.
      Returns:
      Non-null reference to a DTM.
    • 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.
    • callVisitors

      public void callVisitors(XPathVisitor visitor)
      This will traverse the hierarchy, 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 class NodeTest
      Parameters:
      visitor - The visitor whose appropriate method will be called.
    • deepEquals

      public boolean deepEquals(Expression expr)
      Compare this object with another object and see if they are equal, include the sub heararchy.
      Overrides:
      deepEquals in class PredicatedNodeTest
      Parameters:
      expr - Another expression object.
      Returns:
      true if this objects class and the expr object's class are the same, and the data contained within both objects are considered equal.