Class XPathContext

java.lang.Object
org.loboevolution.apache.xml.dtm.DTMManager
org.loboevolution.apache.xpath.XPathContext

public class XPathContext extends DTMManager
Default class for the runtime execution context for XPath.

This class extends DTMManager but does not directly implement it.

  • Field Details

    • m_dtmManager

      protected DTMManager m_dtmManager
      Though XPathContext context extends the DTMManager, it really is a proxy for this object, which is the real DTMManager.
    • RECURSIONLIMIT

      public static final int RECURSIONLIMIT
      The ammount to use for stacks that record information during the recursive execution.
      See Also:
  • Constructor Details

    • XPathContext

      public XPathContext()
      Create an XPathContext instance. This is equivalent to calling the XPathContext(boolean) constructor with the value true.
    • XPathContext

      public XPathContext(boolean recursiveVarContext)
      Create an XPathContext instance.
      Parameters:
      recursiveVarContext - A boolean value indicating whether the XPath context needs to support pushing of scopes for variable resolution
  • Method Details

    • getDTMManager

      public DTMManager getDTMManager()
      Return the DTMManager object. Though XPathContext context extends the DTMManager, it really is a proxy for the real DTMManager. If a caller needs to make a lot of calls to the DTMManager, it is faster if it gets the real one from this function.
    • getDTM

      public DTM getDTM(Source source, boolean unique, boolean incremental, boolean doIndexing)
      Get an instance of a DTM, loaded with the content from the specified source. If the unique flag is true, a new instance will always be returned. Otherwise it is up to the DTMManager to return a new instance or an instance that it already created and may be being used by someone else.

      (More parameters may eventually need to be added for error handling and entity resolution, and to better control selection of implementations.)

      Specified by:
      getDTM in class DTMManager
      Parameters:
      source - the specification of the source object, which may be null, in which case it is assumed that node construction will take by some other means.
      unique - true if the returned DTM must be unique, probably because it is going to be mutated.
      incremental - true if the DTM should be built incrementally, if possible.
      doIndexing - true if the caller considers it worth it to use indexing schemes.
      Returns:
      a non-null DTM reference.
    • getDTM

      public DTM getDTM(int nodeHandle)
      Get the instance of DTM that "owns" a node handle.
      Specified by:
      getDTM in class DTMManager
      Parameters:
      nodeHandle - the nodeHandle.
      Returns:
      a non-null DTM reference.
    • getDTMHandleFromNode

      public int getDTMHandleFromNode(Node node)
      Given a W3C DOM node, try and return a DTM handle. Note: calling this may be non-optimal.
      Specified by:
      getDTMHandleFromNode in class DTMManager
      Parameters:
      node - Non-null reference to a DOM node.
      Returns:
      a valid DTM handle.
    • createDTMIterator

      public DTMIterator createDTMIterator(Object xpathCompiler, int pos)
      Create a new DTMIterator based on an XPath LocationPath or a UnionExpr.
      Specified by:
      createDTMIterator in class DTMManager
      Parameters:
      xpathCompiler - ??? Somehow we need to pass in a subpart of the expression. I hate to do this with strings, since the larger expression has already been parsed.
      pos - The position in the expression.
      Returns:
      The newly created DTMIterator.
    • createDTMIterator

      public DTMIterator createDTMIterator(String xpathString, PrefixResolver presolver)
      Create a new DTMIterator based on an XPath LocationPath or a UnionExpr.
      Specified by:
      createDTMIterator in class DTMManager
      Parameters:
      xpathString - Must be a valid string expressing a LocationPath or a UnionExpr.
      presolver - An object that can resolve prefixes to namespace URLs.
      Returns:
      The newly created DTMIterator.
    • createDTMIterator

      public DTMIterator createDTMIterator(int whatToShow, DTMFilter filter, boolean entityReferenceExpansion)
      Create a new DTMIterator based only on a whatToShow and a DTMFilter. The traversal semantics are defined as the descendant access.

      Note that DTMIterators may not be an exact match to DOM NodeIterators. They are initialized and used in much the same way as a NodeIterator, but their response to document mutation is not currently defined.

      Specified by:
      createDTMIterator in class DTMManager
      Parameters:
      whatToShow - This flag specifies which node types may appear in the logical view of the tree presented by the iterator. See the description of NodeFilter for the set of possible SHOW_ values.These flags can be combined using OR .
      filter - The NodeFilter to be used with this DTMFilter, or null to indicate no filter.
      entityReferenceExpansion - The value of this flag determines whether entity reference nodes are expanded.
      Returns:
      The newly created DTMIterator.
    • reset

      public void reset()
      Reset for new run.
    • getErrorListener

      public final ErrorListener getErrorListener()
      Get the ErrorListener where errors and warnings are to be reported.
      Returns:
      A non-null ErrorListener reference.
    • setErrorListener

      public void setErrorListener(ErrorListener listener) throws IllegalArgumentException
      Set the ErrorListener where errors and warnings are to be reported.
      Parameters:
      listener - A non-null ErrorListener reference.
      Throws:
      IllegalArgumentException
    • getURIResolver

      public final URIResolver getURIResolver()
      Get the URIResolver associated with this execution context.
      Returns:
      a URI resolver, which may be null.
    • setURIResolver

      public void setURIResolver(URIResolver resolver)
      Set the URIResolver associated with this execution context.
      Parameters:
      resolver - the URIResolver to be associated with this execution context, may be null to clear an already set resolver.
    • getCurrentNode

      public final int getCurrentNode()
      Get the current context node.
      Returns:
      the current node.
    • pushCurrentNodeAndExpression

      public final void pushCurrentNodeAndExpression(int cn)
      Set the current context node and expression node.
      Parameters:
      cn - the current node.
    • popCurrentNodeAndExpression

      public final void popCurrentNodeAndExpression()
      Set the current context node.
    • pushCurrentNode

      public final void pushCurrentNode(int n)
      Set the current context node.
      Parameters:
      n - the current node.
    • popCurrentNode

      public final void popCurrentNode()
      Pop the current context node.
    • getIteratorRoot

      public final int getIteratorRoot()
      Get the current location path iterator root.
    • getPredicatePos

      public final int getPredicatePos()
    • pushPredicatePos

      public final void pushPredicatePos(int n)
    • popPredicatePos

      public final void popPredicatePos()
    • getNamespaceContext

      public final PrefixResolver getNamespaceContext()
      Get the current namespace context for the xpath.
      Returns:
      the current prefix resolver for resolving prefixes to namespace URLs.
    • setNamespaceContext

      public final void setNamespaceContext(PrefixResolver pr)
      Get the current namespace context for the xpath.
      Parameters:
      pr - the prefix resolver to be used for resolving prefixes to namespace URLs.
    • pushNamespaceContext

      public final void pushNamespaceContext(PrefixResolver pr)
      Push a current namespace context for the xpath.
      Parameters:
      pr - the prefix resolver to be used for resolving prefixes to namespace URLs.
    • popNamespaceContext

      public final void popNamespaceContext()
      Pop the current namespace context for the xpath.
    • pushSubContextList

      public final void pushSubContextList(SubContextList iter)
      Push a TreeWalker on the stack.
      Parameters:
      iter - A sub-context AxesWalker.
    • popSubContextList

      public final void popSubContextList()
      Pop the last pushed axes iterator.
    • getSubContextList

      public SubContextList getSubContextList()
      Get the current axes iterator, or return null if none.
      Returns:
      the sub-context node list.