Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.xpath
Class XPathContext

    java.lang.Object
      org.apache.xml.dtm.DTMManager
          org.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.

Usage:
  **For advanced use only**

Nested Class Summary
`class` | `XPathContext.XPathExpressionContext`

Field Summary
`XMLReader` | `m_primaryReader` The reader of the primary source tree.
`static int` | `RECURSIONLIMIT` The ammount to use for stacks that record information during the recursive execution.

Fields inherited from class org.apache.xml.dtm.DTMManager
`IDENT_DTM_DEFAULT, IDENT_DTM_NODE_BITS, IDENT_MAX_DTMS, IDENT_NODE_DEFAULT, m_incremental`

Constructor Summary
`XPathContext()` Create an XPathContext instance.
`XPathContext(java.lang.Object owner)` Create an XPathContext instance.

Method Summary
`DTM` | `createDocumentFragment()` Creates an empty `DocumentFragment` object.
`DTMIterator` | `createDTMIterator(int node)` Create a new `DTMIterator` that holds exactly one node.
`DTMIterator` | `createDTMIterator(int whatToShow, DTMFilter filter, boolean entityReferenceExpansion)` Create a new `DTMIterator` based only on a whatToShow and a DTMFilter.
`DTMIterator` | `createDTMIterator(java.lang.Object xpathCompiler, int pos)` Create a new `DTMIterator` based on an XPath UnionExpr.
`DTMIterator` | `createDTMIterator(java.lang.String xpathString, PrefixResolver presolver)` Create a new `DTMIterator` based on an XPath UnionExpr.
`java.util.Stack` | `getAxesIteratorStackStacks()`
`int` | `getContextNode()` Get the current context node.
`DTMIterator` | `getContextNodeList()` Get the current context node list.
`java.util.Stack` | `getContextNodeListsStack()`
`DTMIterator` | `getContextNodes()` Get the current context node list.
`int` | `getCurrentExpressionNode()` Get the current node that is the expression's context (i.e. for current() support).
`IntStack` | `getCurrentExpressionNodeStack()`
`int` | `getCurrentNode()` Get the current context node.
`SubContextList` | `getCurrentNodeList()` Get the current node list as defined by the XSLT spec.
`IntStack` | `getCurrentNodeStack()`
`DTM` | `getDTM(int nodeHandle)` Get an instance of a DTM that "owns" a node handle.
`DTM` | `getDTM(Source source, boolean unique, DTMWSFilter wsfilter, boolean incremental, boolean doIndexing)` Get an instance of a DTM, loaded with the content from the specified source.
`int` | `getDTMHandleFromNode(Node node)` Given a W3C DOM node, try and return a DTM handle.
`int` | `getDTMIdentity(DTM dtm)` %TBD% Doc
`DTMManager` | `getDTMManager()` Return the DTMManager object.
`ErrorListener` | `getErrorListener()` Get the ErrorListener where errors and warnings are to be reported.
`ExpressionContext` | `getExpressionContext()` The the expression context for extensions for this context.
`DTM` | `getGlobalRTFDTM()` Get a DTM to be used as a container for a global Result Tree Fragment.
`int` | `getIteratorRoot()` Get the current location path iterator root.
`PrefixResolver` | `getNamespaceContext()` Get the current namespace context for the xpath.
`java.lang.Object` | `getOwnerObject()` Get the "owner" context of this context, which should be, in the case of XSLT, the Transformer object.
`int` | `getPredicatePos()`
`int` | `getPredicateRoot()` Get the current predicate root.
`XMLReader` | `getPrimaryReader()` Get primary XMLReader associated with this execution context.
`DTM` | `getRTFDTM()` Get a DTM to be used as a container for a dynamic Result Tree Fragment.
`SourceLocator` | `getSAXLocator()` Get the current locater in the stylesheet.
`SourceTreeManager` | `getSourceTreeManager()` Get the SourceTreeManager associated with this execution context.
`SubContextList` | `getSubContextList()` Get the current axes iterator, or return null if none.
`URIResolver` | `getURIResolver()` Get the URIResolver associated with this execution context.
`VariableStack` | `getVarStack()` Get the variable stack, which is in charge of variables and parameters.
`void` | `popContextNodeList()` Pop the current context node list.
`void` | `popCurrentExpressionNode()` Pop the current node that is the expression's context (i.e. for current() support).
`void` | `popCurrentNode()` Pop the current context node.
`void` | `popCurrentNodeAndExpression()` Set the current context node.
`void` | `popExpressionState()` Pop the current context node, expression node, and prefix resolver.
`void` | `popIteratorRoot()` Pop the current location path iterator root.
`void` | `popNamespaceContext()` Pop the current namespace context for the xpath.
`void` | `popPredicatePos()`
`void` | `popPredicateRoot()` Pop the current predicate root.
`void` | `popRTFContext()` Pop the RTFDTM's context mark.
`void` | `popSAXLocator()` Pop the current locater.
`void` | `popSubContextList()` Pop the last pushed axes iterator.
`void` | `pushContextNodeList(DTMIterator nl)` Set the current context node list.
`void` | `pushCurrentExpressionNode(int n)` Set the current node that is the expression's context (i.e. for current() support).
`void` | `pushCurrentNode(int n)` Set the current context node.
`void` | `pushCurrentNodeAndExpression(int cn, int en)` Set the current context node and expression node.
`void` | `pushExpressionState(int cn, int en, PrefixResolver nc)` Push the current context node, expression node, and prefix resolver.
`void` | `pushIteratorRoot(int n)` Set the current location path iterator root.
`void` | `pushNamespaceContext(PrefixResolver pr)` Push a current namespace context for the xpath.
`void` | `pushNamespaceContextNull()` Just increment the namespace contest stack, so that setNamespaceContext can be used on the slot.
`void` | `pushPredicatePos(int n)`
`void` | `pushPredicateRoot(int n)` Set the current predicate root.
`void` | `pushRTFContext()` Push the RTFDTM's context mark, to allows discarding RTFs added after this point.
`void` | `pushSAXLocator(SourceLocator location)` Set the current locater in the stylesheet.
`void` | `pushSAXLocatorNull()` Push a slot on the locations stack so that setSAXLocator can be repeatedly called.
`void` | `pushSubContextList(SubContextList iter)` Push a TreeWalker on the stack.
`boolean` | `release(DTM dtm, boolean shouldHardDelete)` Release a DTM either to a lru pool, or completely remove reference.
`void` | `reset()` Reset for new run.
`void` | `setAxesIteratorStackStacks(java.util.Stack s)`
`void` | `setContextNodeListsStack(java.util.Stack s)`
`void` | `setCurrentExpressionNodeStack(IntStack nv)`
`void` | `setCurrentNodeStack(IntStack nv)`
`void` | `setErrorListener(ErrorListener listener)` Set the ErrorListener where errors and warnings are to be reported.
`void` | `setNamespaceContext(PrefixResolver pr)` Get the current namespace context for the xpath.
`void` | `setPrimaryReader(XMLReader reader)` Set primary XMLReader associated with this execution context.
`void` | `setSAXLocator(SourceLocator location)` Set the current locater in the stylesheet.
`void` | `setSourceTreeManager(SourceTreeManager mgr)` Set the SourceTreeManager associated with this execution context.
`void` | `setURIResolver(URIResolver resolver)` Set the URIResolver associated with this execution context.
`void` | `setVarStack(VariableStack varStack)` Get the variable stack, which is in charge of variables and parameters.

Methods inherited from class org.apache.xml.dtm.DTMManager
`getDTMIdentityMask, getIncremental, getNodeIdentityMask, getXMLStringFactory, newInstance, setIncremental, setXMLStringFactory`

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### m_primaryReader

    public XMLReader m_primaryReader

  The reader of the primary source tree.

### RECURSIONLIMIT

    public static final int RECURSIONLIMIT

  The ammount to use for stacks that record information during the recursive execution.

  See Also:
    Constant Field Values

Constructor Detail

### XPathContext

    public XPathContext()

  Create an XPathContext instance.

### XPathContext

    public XPathContext(java.lang.Object owner)

  Create an XPathContext instance.

Parameters:
  `owner` - Value that can be retrieved via the getOwnerObject() method.
See Also:
  `getOwnerObject()`

Method Detail

### 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,
                      DTMWSFilter wsfilter,
                      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. (I think more parameters will need to be added for error handling, and entity resolution).

  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 construction should try and be incremental.
    `doIndexing` - true if the caller considers it worth it to use indexing schemes.
    `wsfilter` - Enables filtering of whitespace nodes, and may be null.
  Returns:
    a non-null DTM reference.

### getDTM

    public DTM getDTM(int nodeHandle)

  Get an instance of a 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.

### getDTMIdentity

    public int getDTMIdentity(DTM dtm)

  %TBD% Doc

  Specified by:
    `getDTMIdentity` in class `DTMManager`

### createDocumentFragment

    public DTM createDocumentFragment()

  Creates an empty `DocumentFragment` object.

  Specified by:
    `createDocumentFragment` in class `DTMManager`
  Returns:
    A new `DocumentFragment handle`.

### release

    public boolean release(DTM dtm,
                           boolean shouldHardDelete)

  Release a DTM either to a lru pool, or completely remove reference. DTMs without system IDs are always hard deleted. State: experimental.

  Specified by:
    `release` in class `DTMManager`
  Parameters:
    `dtm` - The DTM to be released.
    `shouldHardDelete` - True if the DTM should be removed no matter what.
  Returns:
    true if the DTM was removed, false if it was put back in a lru pool.

### createDTMIterator

    public DTMIterator createDTMIterator(java.lang.Object xpathCompiler,
                                         int pos)

  Create a new `DTMIterator` based on an XPath 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(java.lang.String xpathString,
                                         PrefixResolver presolver)

  Create a new `DTMIterator` based on an XPath UnionExpr.

  Specified by:
    `createDTMIterator` in class `DTMManager`
  Parameters:
    `xpathString` - Must be a valid string expressing 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.

  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 `TreeWalker`, or `null` to indicate no filter.
    `entityReferenceExpansion` - The value of this flag determines whether entity reference nodes are expanded.
  Returns:
    The newly created `NodeIterator`.

### createDTMIterator

    public DTMIterator createDTMIterator(int node)

  Create a new `DTMIterator` that holds exactly one node.

  Specified by:
    `createDTMIterator` in class `DTMManager`
  Parameters:
    `node` - The node handle that the DTMIterator will iterate to.
  Returns:
    The newly created `DTMIterator`.

### reset

    public void reset()

  Reset for new run.

### setSAXLocator

    public void setSAXLocator(SourceLocator location)

  Set the current locater in the stylesheet.

  Parameters:
    `location` - The location within the stylesheet.

### pushSAXLocator

    public void pushSAXLocator(SourceLocator location)

  Set the current locater in the stylesheet.

  Parameters:
    `location` - The location within the stylesheet.

### pushSAXLocatorNull

    public void pushSAXLocatorNull()

  Push a slot on the locations stack so that setSAXLocator can be repeatedly called.

### popSAXLocator

    public void popSAXLocator()

  Pop the current locater.

### getSAXLocator

    public SourceLocator getSAXLocator()

  Get the current locater in the stylesheet.

  Returns:
    The location within the stylesheet, or null if not known.

### getOwnerObject

    public java.lang.Object getOwnerObject()

  Get the "owner" context of this context, which should be, in the case of XSLT, the Transformer object. This is needed so that XSLT functions can get the Transformer.

  Returns:
    The owner object passed into the constructor, or null.

### getVarStack

    public final VariableStack getVarStack()

  Get the variable stack, which is in charge of variables and parameters.

  Returns:
    the variable stack, which should not be null.

### setVarStack

    public final void setVarStack(VariableStack varStack)

  Get the variable stack, which is in charge of variables and parameters.

  Parameters:
    `varStack` - non-null reference to the variable stack.

### getSourceTreeManager

    public final SourceTreeManager getSourceTreeManager()

  Get the SourceTreeManager associated with this execution context.

  Returns:
    the SourceTreeManager associated with this execution context.

### setSourceTreeManager

    public void setSourceTreeManager(SourceTreeManager mgr)

  Set the SourceTreeManager associated with this execution context.

  Parameters:
    `mgr` - the SourceTreeManager to be associated with this execution context.

### 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 java.lang.IllegalArgumentException

  Set the ErrorListener where errors and warnings are to be reported.

  Parameters:
    `listener` - A non-null ErrorListener reference.
  Throws:
    `java.lang.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.

### getPrimaryReader

    public final XMLReader getPrimaryReader()

  Get primary XMLReader associated with this execution context.

  Returns:
    The reader of the primary source tree.

### setPrimaryReader

    public void setPrimaryReader(XMLReader reader)

  Set primary XMLReader associated with this execution context.

  Parameters:
    `reader` - The reader of the primary source tree.

### getContextNodeListsStack

    public java.util.Stack getContextNodeListsStack()

### setContextNodeListsStack

    public void setContextNodeListsStack(java.util.Stack s)

### getContextNodeList

    public final DTMIterator getContextNodeList()

  Get the current context node list.

  Returns:
    the current node list, also refered to here as a context node list.

### pushContextNodeList

    public final void pushContextNodeList(DTMIterator nl)

  Set the current context node list.

  Parameters:
    `nl` - the current node list, also refered to here as a context node list.
  Usage:
    **For internal use only**

### popContextNodeList

    public final void popContextNodeList()

  Pop the current context node list.

  Usage:
    **For internal use only**

### getCurrentNodeStack

    public IntStack getCurrentNodeStack()

### setCurrentNodeStack

    public void setCurrentNodeStack(IntStack nv)

### getCurrentNode

    public final int getCurrentNode()

  Get the current context node.

  Returns:
    the current node.

### pushCurrentNodeAndExpression

    public final void pushCurrentNodeAndExpression(int cn,
                                                   int en)

  Set the current context node and expression node.

  Parameters:
    `cn` - the current node.
    `en` - the sub-expression context node.

### popCurrentNodeAndExpression

    public final void popCurrentNodeAndExpression()

  Set the current context node.

### pushExpressionState

    public final void pushExpressionState(int cn,
                                          int en,
                                          PrefixResolver nc)

  Push the current context node, expression node, and prefix resolver.

  Parameters:
    `cn` - the current node.
    `en` - the sub-expression context node.
    `nc` - the namespace context (prefix resolver.

### popExpressionState

    public final void popExpressionState()

  Pop the current context node, expression node, and prefix resolver.

### 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.

### pushPredicateRoot

    public final void pushPredicateRoot(int n)

  Set the current predicate root.

### popPredicateRoot

    public final void popPredicateRoot()

  Pop the current predicate root.

### getPredicateRoot

    public final int getPredicateRoot()

  Get the current predicate root.

### pushIteratorRoot

    public final void pushIteratorRoot(int n)

  Set the current location path iterator root.

### popIteratorRoot

    public final void popIteratorRoot()

  Pop the current location path iterator root.

### getIteratorRoot

    public final int getIteratorRoot()

  Get the current location path iterator root.

### getCurrentExpressionNodeStack

    public IntStack getCurrentExpressionNodeStack()

### setCurrentExpressionNodeStack

    public void setCurrentExpressionNodeStack(IntStack nv)

### getPredicatePos

    public final int getPredicatePos()

### pushPredicatePos

    public final void pushPredicatePos(int n)

### popPredicatePos

    public final void popPredicatePos()

### getCurrentExpressionNode

    public final int getCurrentExpressionNode()

  Get the current node that is the expression's context (i.e. for current() support).

  Returns:
    The current sub-expression node.

### pushCurrentExpressionNode

    public final void pushCurrentExpressionNode(int n)

  Set the current node that is the expression's context (i.e. for current() support).

  Parameters:
    `n` - The sub-expression node to be current.

### popCurrentExpressionNode

    public final void popCurrentExpressionNode()

  Pop the current node that is the expression's context (i.e. for current() support).

### 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.

### pushNamespaceContextNull

    public final void pushNamespaceContextNull()

  Just increment the namespace contest stack, so that setNamespaceContext can be used on the slot.

### popNamespaceContext

    public final void popNamespaceContext()

  Pop the current namespace context for the xpath.

### getAxesIteratorStackStacks

    public java.util.Stack getAxesIteratorStackStacks()

### setAxesIteratorStackStacks

    public void setAxesIteratorStackStacks(java.util.Stack s)

### pushSubContextList

    public final void pushSubContextList(SubContextList iter)

  Push a TreeWalker on the stack.

  Parameters:
    `iter` - A sub-context AxesWalker.
  Usage:
    **For internal use only**

### popSubContextList

    public final void popSubContextList()

  Pop the last pushed axes iterator.

  Usage:
    **For internal use only**

### getSubContextList

    public SubContextList getSubContextList()

  Get the current axes iterator, or return null if none.

  Returns:
    the sub-context node list.
  Usage:
    **For internal use only**

### getCurrentNodeList

    public SubContextList getCurrentNodeList()

  Get the current node list as defined by the XSLT spec.

  Returns:
    the current node list.
  Usage:
    **For internal use only**

### getContextNode

    public final int getContextNode()

  Get the current context node.

  Returns:
    The current context node.

### getContextNodes

    public final DTMIterator getContextNodes()

  Get the current context node list.

  Returns:
    An iterator for the current context list, as defined in XSLT.

### getExpressionContext

    public ExpressionContext getExpressionContext()

  The the expression context for extensions for this context.

  Returns:
    An object that implements the ExpressionContext.

### getGlobalRTFDTM

    public DTM getGlobalRTFDTM()

  Get a DTM to be used as a container for a global Result Tree Fragment. This will always be an instance of (derived from? equivalent to?) SAX2DTM, since each RTF is constructed by temporarily redirecting our SAX output to it. It may be a single DTM containing for multiple fragments, if the implementation supports that. Note: The distinction between this method and getRTFDTM() is that the latter allocates space from the dynamic variable stack (m_rtfdtm_stack), which may be pruned away again as the templates which defined those variables are exited. Global variables may be bound late (see XUnresolvedVariable), and never want to be discarded, hence we need to allocate them separately and don't actually need a stack to track them.

  Returns:
    a non-null DTM reference.

### getRTFDTM

    public DTM getRTFDTM()

  Get a DTM to be used as a container for a dynamic Result Tree Fragment. This will always be an instance of (derived from? equivalent to?) SAX2DTM, since each RTF is constructed by temporarily redirecting our SAX output to it. It may be a single DTM containing for multiple fragments, if the implementation supports that.

  Returns:
    a non-null DTM reference.

### pushRTFContext

    public void pushRTFContext()

  Push the RTFDTM's context mark, to allows discarding RTFs added after this point. (If it doesn't exist we don't push, since we might still be able to get away with not creating it. That requires that excessive pops be harmless.)

### popRTFContext

    public void popRTFContext()

  Pop the RTFDTM's context mark. This discards any RTFs added after the last mark was set. If there is no RTF DTM, there's nothing to pop so this becomes a no-op. If pushes were issued before this was called, we count on the fact that popRewindMark is defined such that overpopping just resets to empty. Complicating factor: We need to handle the case of popping back to a previous RTF DTM, if one of the weird produce-an-RTF-to-build-an-RTF cases arose. Basically: If pop says this DTM is now empty, then return to the previous if one exists, in whatever state we left it in. UGLY, but hopefully the situation which forces us to consider this will arise exceedingly rarely.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2004 Apache XML Project. All Rights Reserved.