## org.apache.xalan.xpath
Class XPathSupportDefault

    java.lang.Object
      |
      +--org.apache.xalan.xpath.XPathSupportDefault

Direct Known Subclasses:
  XMLParserLiaisonDefault

public class XPathSupportDefault
extends java.lang.Object
implements XPathSupport

**For advanced use only** Default class for execution context when XPath is used by itself. Many of the functions in this class need to be overridden in order to perform correct execution of the XPath (for instance, variable execution). This class will likely eventually replace XMLParserLiaisons.

Constructor Summary
`XPathSupportDefault()` **For advanced use only**

Method Summary
`void` `addExtensionNamespace(java.lang.String uri, ExtensionFunctionHandler extNS)` **For advanced use only** Register an extension namespace handler.
`void` `associateXLocatorToNode(org.w3c.dom.Node node, XLocator xlocator)` **For advanced use only** Associate an XLocator provider to a node.
`void` `beginConstruction(KeyDeclaration kd)` **For advanced use only**
`XLocator` `createXLocatorHandler()` **For advanced use only** getXLocatorHandler.
`void` `deassociateXLocatorToNode(org.w3c.dom.Node node)` **For advanced use only** Deassociate an XLocator provider to a node based on the root of the tree that the node is parented by.
`void` `decrementContextNodePosition()` **Experimental** Decrement the current context node position.
`boolean` `elementAvailable(java.lang.String namespace, java.lang.String extensionName)` **For advanced use only** Execute the element-available() function.
`void` `endConstruction(KeyDeclaration kd)` **For advanced use only**
`java.lang.Object` `extFunction(java.lang.String namespace, java.lang.String extensionName, java.util.Vector argVec, java.lang.Object methodKey)` **For advanced use only** Handle an extension function.
`java.lang.String` `findURIFromDoc(org.w3c.dom.Document owner)` **For advanced use only** Given a DOM Document, tell what URI was used to parse it.
`boolean` `functionAvailable(java.lang.String namespace, java.lang.String extensionName)` **For advanced use only** Execute the function-available() function.
`NodeCallback` `getCallback()` **For advanced use only** Get the callback that may be called by XPath as nodes are located.
`java.lang.Object` `getCallbackInfo()` **For advanced use only** Get the object that will be passed to the processLocatedNode method.
`org.w3c.dom.NodeList` `getContextNodeList()` **For advanced use only** Get the current context node list.
`int` `getContextNodePosition()` **Experimental** Get the current position in the context node list.
`org.w3c.dom.Node` `getCurrentNode()` **For advanced use only** Get the current context node.
`org.w3c.dom.Document` `getDOMFactory()` **For advanced use only** Get a DOM document, primarily for creating result tree fragments.
`org.w3c.dom.Element` `getElementByID(java.lang.String id, org.w3c.dom.Document doc)` **For advanced use only** Get an element from an ID.
`org.xml.sax.ErrorHandler` `getErrorHandler()` **For advanced use only** Get the current error handler, if there is one.
`boolean` `getInConstruction(KeyDeclaration kd)` **For advanced use only**
`java.lang.String` `getLocalNameOfNode(org.w3c.dom.Node n)` **For advanced use only** Returns the local name of the given node.
`PrefixResolver` `getNamespaceContext()` **For advanced use only** Get the current namespace context for the xpath.
`java.lang.String` `getNamespaceForPrefix(java.lang.String prefix, org.w3c.dom.Element namespaceContext)` **For advanced use only** Given a namespace, get the corresponding prefix.
`java.lang.String` `getNamespaceOfNode(org.w3c.dom.Node n)` **For advanced use only** Returns the namespace of the given node.
`int` `getNodeNumber(org.w3c.dom.Node n)` **For advanced use only**
`org.w3c.dom.NodeList` `getNodeSetByKey(org.w3c.dom.Node doc, java.lang.String name, java.lang.String ref, PrefixResolver nscontext)` **For advanced use only** Given a valid element key, return the corresponding node list.
`org.w3c.dom.Node` `getParentOfNode(org.w3c.dom.Node node)` **For advanced use only** This function has to be implemented, because the DOM WG decided that attributes don't have parents.
`boolean` `getProcessNamespaces()` **For advanced use only** Tells if namespaces should be supported.
`org.w3c.dom.Node` `getRoot(org.w3c.dom.Node node)` **For advanced use only** Get the first unparented node in the ancestor chain.
`java.util.Hashtable` `getSourceDocsTable()` **For advanced use only** Get table of source tree documents.
`boolean` `getThrowFoundIndex()` **For internal use only** ThrowFoundIndex tells if FoundIndex should be thrown if index is found.
`java.lang.String` `getUnparsedEntityURI(java.lang.String name, org.w3c.dom.Document doc)` **For advanced use only** The getUnparsedEntityURI function returns the URI of the unparsed entity with the specified name in the same document as the context node (see [3.3 Unparsed Entities]).
`java.net.URL` `getURLFromString(java.lang.String urlString, java.lang.String base)` **For advanced use only** Take a user string and try and parse XML, and also return the url.
`XObject` `getVariable(QName name)` **For advanced use only** Variables don't work when executing an XPath by itself.
`XLocator` `getXLocatorFromNode(org.w3c.dom.Node node)` **For advanced use only** Get an XLocator provider keyed by node.
`void` `incrementContextNodePosition(org.w3c.dom.Node node)` **Experimental** Increment the current context node position.
`boolean` `isIgnorableWhitespace(org.w3c.dom.Text node)` Deprecated.
`org.w3c.dom.Document` `parseXML(java.lang.String urlString, java.lang.String base)` Deprecated.
`org.w3c.dom.Document` `parseXML(java.net.URL url, org.xml.sax.DocumentHandler docHandler, org.w3c.dom.Document styleDoc)` **For advanced use only** Take a user string and try and parse XML, and also return the url.
`void` `popContextNodeList()` **For internal use only** Pop the current context node list.
`void` `popContextNodePosition()` **Experimental** Pop the current context node position.
`void` `popXPathContext()` **Experimental** Pop the current XPathContext.
`boolean` `problem(short where, short classification, org.w3c.dom.Node styleNode, org.w3c.dom.Node sourceNode, java.lang.String msg, int lineNo, int charOffset)` **For advanced use only** Function that is called when a problem event occurs.
`void` `pushContextNodeList(org.w3c.dom.NodeList nl)` **For internal use only** Set the current context node list.
`void` `pushContextNodePosition()` **For advanced use only** Push the current context node position.
`void` `pushDummyXPathContext()` **For advanced use only** Push a dummy XPathContext so we can tell that the top-level xpath isn't in effect.
`void` `pushXPathContext(XPath xpath, XPathSupport execContext, org.w3c.dom.Node contextNode, PrefixResolver namespaceContext)` **Experimental** Push the current XPath selection, needed for support of the last() function in depth-first execution.
`XObject` `reExecuteXPathContext(XPath path, XPathSupport execContext, org.w3c.dom.Node context)` **Experimental** Reexecute the last xpath context after the specified one.
`void` `setCallback(NodeCallback callback, java.lang.Object callbackInfo)` **For advanced use only** Set a callback that may be called by XPath as nodes are located.
`void` `setContextNodePosition(int newNodePos)` **Experimental** Set the current context node position.
`void` `setCurrentNode(org.w3c.dom.Node n)` **For advanced use only** Set the current context node.
`void` `setDOMFactory(org.w3c.dom.Document domFactory)` **For advanced use only** Get the factory object required to create DOM nodes in the result tree.
`void` `setNamespaceContext(PrefixResolver pr)` **For advanced use only** Get the current namespace context for the xpath.
`void` `setProcessNamespaces(boolean processNamespaces)` **For advanced use only** Set whether or not the liaison attempts to expand namespaces.
`void` `setThrowFoundIndex(boolean b)` **For internal use only** ThrowFoundIndex tells if FoundIndex should be thrown if index is found.
`boolean` `shouldStripSourceNode(org.w3c.dom.Node textNode)` **For advanced use only** Tells, through the combination of the default-space attribute on xsl:stylesheet, xsl:strip-space, xsl:preserve-space, and the xml:space attribute, whether or not extra whitespace should be stripped from the node.
`boolean` `supportsNodeNumber(org.w3c.dom.Node n)` **For advanced use only**

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

Constructor Detail

### XPathSupportDefault

    public XPathSupportDefault()

Method Detail

### pushXPathContext

    public void pushXPathContext(XPath xpath,
                                 XPathSupport execContext,
                                 org.w3c.dom.Node contextNode,
                                 PrefixResolver namespaceContext)

  **Experimental** Push the current XPath selection, needed for support of the last() function in depth-first execution. If the last() function is called, the originating XPath will be executed to get a count. This is ugly, and later some sort of system can be done where the XPath can finish evaluating from the current point.
  Specified by:
    pushXPathContext in interface XPathSupport

### popXPathContext

    public void popXPathContext()

  **Experimental** Pop the current XPathContext.
  Specified by:
    popXPathContext in interface XPathSupport

### pushDummyXPathContext

    public void pushDummyXPathContext()

  **For advanced use only** Push a dummy XPathContext so we can tell that the top-level xpath isn't in effect.
  Specified by:
    pushDummyXPathContext in interface XPathSupport

### reExecuteXPathContext

    public XObject reExecuteXPathContext(XPath path,
                                         XPathSupport execContext,
                                         org.w3c.dom.Node context)
                                  throws org.xml.sax.SAXException

  **Experimental** Reexecute the last xpath context after the specified one.
  Specified by:
    reExecuteXPathContext in interface XPathSupport

### getContextNodePosition

    public int getContextNodePosition()

  **Experimental** Get the current position in the context node list. Used for depth-first searching.
  Specified by:
    getContextNodePosition in interface XPathSupport

### setContextNodePosition

    public void setContextNodePosition(int newNodePos)

  **Experimental** Set the current context node position.
  Specified by:
    setContextNodePosition in interface XPathSupport

### incrementContextNodePosition

    public void incrementContextNodePosition(org.w3c.dom.Node node)

  **Experimental** Increment the current context node position.
  Specified by:
    incrementContextNodePosition in interface XPathSupport

### decrementContextNodePosition

    public void decrementContextNodePosition()

  **Experimental** Decrement the current context node position.
  Specified by:
    decrementContextNodePosition in interface XPathSupport

### pushContextNodePosition

    public void pushContextNodePosition()

  **For advanced use only** Push the current context node position.
  Specified by:
    pushContextNodePosition in interface XPathSupport

### popContextNodePosition

    public void popContextNodePosition()

  **Experimental** Pop the current context node position.
  Specified by:
    popContextNodePosition in interface XPathSupport

### getContextNodeList

    public org.w3c.dom.NodeList getContextNodeList()

  **For advanced use only** Get the current context node list.
  Specified by:
    getContextNodeList in interface XPathSupport

### pushContextNodeList

    public void pushContextNodeList(org.w3c.dom.NodeList nl)

  **For internal use only** Set the current context node list.
  Specified by:
    pushContextNodeList in interface XPathSupport
  Parameters:
    `A` - nodelist that represents the current context list as defined by XPath.

### popContextNodeList

    public void popContextNodeList()

  **For internal use only** Pop the current context node list.
  Specified by:
    popContextNodeList in interface XPathSupport

### getThrowFoundIndex

    public boolean getThrowFoundIndex()

  **For internal use only** ThrowFoundIndex tells if FoundIndex should be thrown if index is found. This is an optimization for match patterns, and is used internally by the XPath engine.
  Specified by:
    getThrowFoundIndex in interface XPathSupport

### setThrowFoundIndex

    public void setThrowFoundIndex(boolean b)

  **For internal use only** ThrowFoundIndex tells if FoundIndex should be thrown if index is found. This is an optimization for match patterns, and is used internally by the XPath engine.
  Specified by:
    setThrowFoundIndex in interface XPathSupport

### getCurrentNode

    public org.w3c.dom.Node getCurrentNode()

  **For advanced use only** Get the current context node.
  Specified by:
    getCurrentNode in interface XPathSupport

### setCurrentNode

    public void setCurrentNode(org.w3c.dom.Node n)

  **For advanced use only** Set the current context node.
  Specified by:
    setCurrentNode in interface XPathSupport

### getNamespaceContext

    public PrefixResolver getNamespaceContext()

  **For advanced use only** Get the current namespace context for the xpath.
  Specified by:
    getNamespaceContext in interface XPathSupport

### setNamespaceContext

    public void setNamespaceContext(PrefixResolver pr)

  **For advanced use only** Get the current namespace context for the xpath.
  Specified by:
    setNamespaceContext in interface XPathSupport

### getNamespaceForPrefix

    public java.lang.String getNamespaceForPrefix(java.lang.String prefix,
                                                  org.w3c.dom.Element namespaceContext)

  **For advanced use only** Given a namespace, get the corresponding prefix.
  Specified by:
    getNamespaceForPrefix in interface XPathSupport
  Parameters:
    `prefix` - A namespace prefix that is valid in the namespaceContext.
    `namespaceContext` - An element from which to evaluate the prefix resolution.
  Returns:
    A namespace, or null if it can't be resolved.

### getNamespaceOfNode

    public java.lang.String getNamespaceOfNode(org.w3c.dom.Node n)

  **For advanced use only** Returns the namespace of the given node.
  Specified by:
    getNamespaceOfNode in interface XPathSupport
  Parameters:
    `n` - The node in question.
  Returns:
    A namespace, or null if there is none.

### getLocalNameOfNode

    public java.lang.String getLocalNameOfNode(org.w3c.dom.Node n)

  **For advanced use only** Returns the local name of the given node.
  Specified by:
    getLocalNameOfNode in interface XPathSupport
  Parameters:
    `n` - The node in question.
  Returns:
    The local name of the node, or null if the node doesn't have a name.

### getParentOfNode

    public org.w3c.dom.Node getParentOfNode(org.w3c.dom.Node node)

  **For advanced use only** This function has to be implemented, because the DOM WG decided that attributes don't have parents.
  Specified by:
    getParentOfNode in interface XPathSupport
  Parameters:
    `n` - The node in question.
  Returns:
    The "owner" of the node.

### getVariable

    public XObject getVariable(QName name)
                        throws org.xml.sax.SAXException

  **For advanced use only** Variables don't work when executing an XPath by itself.
  Returns:
    XString that is an error message.

### isIgnorableWhitespace

    public boolean isIgnorableWhitespace(org.w3c.dom.Text node)

  Deprecated.
  **For advanced use only** Tell if the node is ignorable whitespace. This should be in the DOM. Return false if the parser doesn't handle this.
  Specified by:
    isIgnorableWhitespace in interface XPathSupport

### getNodeSetByKey

    public org.w3c.dom.NodeList getNodeSetByKey(org.w3c.dom.Node doc,
                                                java.lang.String name,
                                                java.lang.String ref,
                                                PrefixResolver nscontext)
                                         throws org.xml.sax.SAXException

  **For advanced use only** Given a valid element key, return the corresponding node list.
  Returns:
    null, derived element must override.

### getSourceDocsTable

    public java.util.Hashtable getSourceDocsTable()

  **For advanced use only** Get table of source tree documents. Document objects are keyed by URL string.
  Returns:
    null, derived element must override.

### findURIFromDoc

    public java.lang.String findURIFromDoc(org.w3c.dom.Document owner)

  **For advanced use only** Given a DOM Document, tell what URI was used to parse it.
  Returns:
    string "unknown", derived element must override.

### parseXML

    public org.w3c.dom.Document parseXML(java.lang.String urlString,
                                         java.lang.String base)

  Deprecated.
  **For advanced use only** Take given a URL, try and parse XML. the error condition is severe enough to halt processing.

### getElementByID

    public org.w3c.dom.Element getElementByID(java.lang.String id,
                                              org.w3c.dom.Document doc)

  **For advanced use only** Get an element from an ID.
  Specified by:
    getElementByID in interface XPathSupport
  Returns:
    null, derived element must override.

### getUnparsedEntityURI

    public java.lang.String getUnparsedEntityURI(java.lang.String name,
                                                 org.w3c.dom.Document doc)

  **For advanced use only** The getUnparsedEntityURI function returns the URI of the unparsed entity with the specified name in the same document as the context node (see [3.3 Unparsed Entities]). It returns the empty string if there is no such entity.
  Specified by:
    getUnparsedEntityURI in interface XPathSupport
  Returns:
    empty string, derived element must override.

### setDOMFactory

    public void setDOMFactory(org.w3c.dom.Document domFactory)

  **For advanced use only** Get the factory object required to create DOM nodes in the result tree.

### getDOMFactory

    public org.w3c.dom.Document getDOMFactory()

  **For advanced use only** Get a DOM document, primarily for creating result tree fragments.

### getInConstruction

    public boolean getInConstruction(KeyDeclaration kd)

  Specified by:
    getInConstruction in interface XPathSupport

### beginConstruction

    public void beginConstruction(KeyDeclaration kd)

  Specified by:
    beginConstruction in interface XPathSupport

### endConstruction

    public void endConstruction(KeyDeclaration kd)

  Specified by:
    endConstruction in interface XPathSupport

### problem

    public boolean problem(short where,
                           short classification,
                           org.w3c.dom.Node styleNode,
                           org.w3c.dom.Node sourceNode,
                           java.lang.String msg,
                           int lineNo,
                           int charOffset)

  **For advanced use only** Function that is called when a problem event occurs.
  Specified by:
    problem in interface XPathSupport
  Parameters:
    `where` - Either and XMLPARSER, XSLPROCESSOR, or QUERYENGINE.
    `classification` - Either ERROR or WARNING.
    `styleNode` - The style tree node where the problem occurred. May be null.
    `sourceNode` - The source tree node where the problem occurred. May be null.
    `msg` - A string message explaining the problem.
    `lineNo` - The line number where the problem occurred, if it is known. May be zero.
    `charOffset` - The character offset where the problem, occurred if it is known. May be zero.
  Returns:
    true if the return is an ERROR, in which case exception will be thrown. Otherwise the processor will continue to process.

### functionAvailable

    public boolean functionAvailable(java.lang.String namespace,
                                     java.lang.String extensionName)

  **For advanced use only** Execute the function-available() function.

### elementAvailable

    public boolean elementAvailable(java.lang.String namespace,
                                    java.lang.String extensionName)

  **For advanced use only** Execute the element-available() function.

### extFunction

    public java.lang.Object extFunction(java.lang.String namespace,
                                        java.lang.String extensionName,
                                        java.util.Vector argVec,
                                        java.lang.Object methodKey)
                                 throws org.xml.sax.SAXException

  **For advanced use only** Handle an extension function.

### getRoot

    public org.w3c.dom.Node getRoot(org.w3c.dom.Node node)

  **For advanced use only** Get the first unparented node in the ancestor chain.

### associateXLocatorToNode

    public void associateXLocatorToNode(org.w3c.dom.Node node,
                                        XLocator xlocator)

  **For advanced use only** Associate an XLocator provider to a node. This makes the association based on the root of the tree that the node is parented by.

### deassociateXLocatorToNode

    public void deassociateXLocatorToNode(org.w3c.dom.Node node)

  **For advanced use only** Deassociate an XLocator provider to a node based on the root of the tree that the node is parented by.

### getXLocatorFromNode

    public XLocator getXLocatorFromNode(org.w3c.dom.Node node)

  **For advanced use only** Get an XLocator provider keyed by node. This get's the association based on the root of the tree that the node is parented by.

### setProcessNamespaces

    public void setProcessNamespaces(boolean processNamespaces)

  **For advanced use only** Set whether or not the liaison attempts to expand namespaces. Used for optimization.
  Specified by:
    setProcessNamespaces in interface XPathSupport

### getProcessNamespaces

    public boolean getProcessNamespaces()

  **For advanced use only** Tells if namespaces should be supported. For optimization purposes.
  Specified by:
    getProcessNamespaces in interface XPathSupport

### shouldStripSourceNode

    public boolean shouldStripSourceNode(org.w3c.dom.Node textNode)
                                  throws org.xml.sax.SAXException

  **For advanced use only** Tells, through the combination of the default-space attribute on xsl:stylesheet, xsl:strip-space, xsl:preserve-space, and the xml:space attribute, whether or not extra whitespace should be stripped from the node. Literal elements from template elements should not be tested with this function.
  Parameters:
    `textNode` - A text node from the source tree.
  Returns:
    true if the text node should be stripped of extra whitespace.

### parseXML

    public org.w3c.dom.Document parseXML(java.net.URL url,
                                         org.xml.sax.DocumentHandler docHandler,
                                         org.w3c.dom.Document styleDoc)
                                  throws org.xml.sax.SAXException

  **For advanced use only** Take a user string and try and parse XML, and also return the url. the error condition is severe enough to halt processing.
  Specified by:
    parseXML in interface XPathSupport

### getURLFromString

    public java.net.URL getURLFromString(java.lang.String urlString,
                                         java.lang.String base)
                                  throws org.xml.sax.SAXException

  **For advanced use only** Take a user string and try and parse XML, and also return the url.
  Specified by:
    getURLFromString in interface XPathSupport
  Throws:
    XSLProcessorException - thrown if the active ProblemListener and XMLParserLiaison decide the error condition is severe enough to halt processing.

### addExtensionNamespace

    public void addExtensionNamespace(java.lang.String uri,
                                      ExtensionFunctionHandler extNS)

  **For advanced use only** Register an extension namespace handler. This handler provides functions for testing whether a function is known within the namespace and also for invoking the functions.
  Specified by:
    addExtensionNamespace in interface XPathSupport
  Parameters:
    `uri` - the URI for the extension.
    `extNS` - the extension handler.

### setCallback

    public void setCallback(NodeCallback callback,
                            java.lang.Object callbackInfo)

  **For advanced use only** Set a callback that may be called by XPath as nodes are located. The callback will only be called if the XLocator determines that the location path can process the nodes in document order. If the callback is called, the nodes will not be put into the node list, and the LocationPath will return an empty node list. The callback will be set to null after the next LocationPath or Union is processed.
  Parameters:
    `callback` - Interface that implements the processLocatedNode method.
    `callbackInfo` - Object that will be passed to the processLocatedNode method.

### getCallback

    public NodeCallback getCallback()

  **For advanced use only** Get the callback that may be called by XPath as nodes are located.
  Returns:
    the current callback method.

### getCallbackInfo

    public java.lang.Object getCallbackInfo()

  **For advanced use only** Get the object that will be passed to the processLocatedNode method.
  Returns:
    object that will be passed to the processLocatedNode method.

### getErrorHandler

    public org.xml.sax.ErrorHandler getErrorHandler()

  **For advanced use only** Get the current error handler, if there is one.
  Specified by:
    getErrorHandler in interface XPathSupport

### createXLocatorHandler

    public XLocator createXLocatorHandler()

  **For advanced use only** getXLocatorHandler.
  Specified by:
    createXLocatorHandler in interface XPathSupport

### supportsNodeNumber

    public boolean supportsNodeNumber(org.w3c.dom.Node n)

  Specified by:
    supportsNodeNumber in interface XPathSupport

### getNodeNumber

    public int getNodeNumber(org.w3c.dom.Node n)

  Specified by:
    getNodeNumber in interface XPathSupport

Copyright © 2000 Apache XML Project. All Rights Reserved.