edu.UCL.utils
Class XPathAPI

java.lang.Object
  |
  +--edu.UCL.utils.XPathAPI

public class XPathAPI
extends java.lang.Object

The methods in this class are convenience methods into the low-level XPath API. We would like to eventually move these methods into the XPath core, but would like to do some peer review first to make sure we have it right. Please note that these methods execute pure XPaths. They do not implement those parts of XPath extended by XSLT, such as the document() function). If you want to install XSLT functions, you have to use the low-level API. These functions tend to be a little slow, since a number of objects must be created for each evaluation. A faster way is to precompile the XPaths using the low-level API, and then just use the XPaths over and over.

See Also:
http://www.w3.org/TR/xpath

Constructor Summary
XPathAPI()
           
 
Method Summary
static XObject eval(org.w3c.dom.Node contextNode, java.lang.String str)
          Evaluates XPath string to an XObject.
static XObject eval(org.w3c.dom.Node contextNode, java.lang.String str, org.w3c.dom.Node namespaceNode)
          Evaluates XPath string to an XObject.
static org.w3c.dom.NodeList selectNodeList(org.w3c.dom.Node contextNode, java.lang.String str)
          Uses an XPath string to select a nodelist.
static org.w3c.dom.NodeList selectNodeList(org.w3c.dom.Node contextNode, java.lang.String str, org.w3c.dom.Node namespaceNode)
          Uses an XPath string to select a nodelist.
static org.w3c.dom.Node selectSingleNode(org.w3c.dom.Node contextNode, java.lang.String str)
          Uses an XPath string to select a single node.
static org.w3c.dom.Node selectSingleNode(org.w3c.dom.Node contextNode, java.lang.String str, org.w3c.dom.Node namespaceNode)
          Uses an XPath string to select a single node.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XPathAPI

public XPathAPI()
Method Detail

selectSingleNode

public static org.w3c.dom.Node selectSingleNode(org.w3c.dom.Node contextNode,
                                                java.lang.String str)
                                         throws org.xml.sax.SAXException
Uses an XPath string to select a single node. XPath namespace prefixes are resolved from the context node, which may not be what you want (see the next method).

Parameters:
contextNode - The node to start searching from.
str - A valid XPath string.
Returns:
The first node found that matches the XPath, or null.
org.xml.sax.SAXException

selectSingleNode

public static org.w3c.dom.Node selectSingleNode(org.w3c.dom.Node contextNode,
                                                java.lang.String str,
                                                org.w3c.dom.Node namespaceNode)
                                         throws org.xml.sax.SAXException
Uses an XPath string to select a single node. XPath namespace prefixes are resolved from the namespaceNode.

Parameters:
contextNode - The node to start searching from.
str - A valid XPath string.
namespaceNode - The node from which prefixes in the XPath will be resolved to namespaces.
Returns:
The first node found that matches the XPath, or null.
org.xml.sax.SAXException

selectNodeList

public static org.w3c.dom.NodeList selectNodeList(org.w3c.dom.Node contextNode,
                                                  java.lang.String str)
                                           throws org.xml.sax.SAXException
Uses an XPath string to select a nodelist. XPath namespace prefixes are resolved from the contextNode.

Parameters:
contextNode - The node to start searching from.
str - A valid XPath string.
Returns:
A nodelist, should never be null.
org.xml.sax.SAXException

selectNodeList

public static org.w3c.dom.NodeList selectNodeList(org.w3c.dom.Node contextNode,
                                                  java.lang.String str,
                                                  org.w3c.dom.Node namespaceNode)
                                           throws org.xml.sax.SAXException
Uses an XPath string to select a nodelist. XPath namespace prefixes are resolved from the namespaceNode.

Parameters:
contextNode - The node to start searching from.
str - A valid XPath string.
namespaceNode - The node from which prefixes in the XPath will be resolved to namespaces.
Returns:
A nodelist, should never be null.
org.xml.sax.SAXException

eval

public static XObject eval(org.w3c.dom.Node contextNode,
                           java.lang.String str)
                    throws org.xml.sax.SAXException
Evaluates XPath string to an XObject. Using this method, XPath namespace prefixes will be resolved from the namespaceNode.

Parameters:
contextNode - The node to start searching from.
str - A valid XPath string.
Returns:
An XObject, which can be used to obtain a string, number, nodelist, etc, should never be null.
org.xml.sax.SAXException
See Also:
org.apache.xalan.xpath.XObject, org.apache.xalan.xpath.XNull, org.apache.xalan.xpath.XBoolean, org.apache.xalan.xpath.XNumber, org.apache.xalan.xpath.XString, org.apache.xalan.xpath.XRTreeFrag

eval

public static XObject eval(org.w3c.dom.Node contextNode,
                           java.lang.String str,
                           org.w3c.dom.Node namespaceNode)
                    throws org.xml.sax.SAXException
Evaluates XPath string to an XObject. XPath namespace prefixes are resolved from the namespaceNode. The implementation of this is a little slow, since it creates a number of objects each time it is called. This could be optimized to keep the same objects around, but then thread-safety issues would arise.

Parameters:
contextNode - The node to start searching from.
str - A valid XPath string.
namespaceNode - The node from which prefixes in the XPath will be resolved to namespaces.
Returns:
An XObject, which can be used to obtain a string, number, nodelist, etc, should never be null.
org.xml.sax.SAXException
See Also:
org.apache.xalan.xpath.XObject, org.apache.xalan.xpath.XNull, org.apache.xalan.xpath.XBoolean, org.apache.xalan.xpath.XNumber, org.apache.xalan.xpath.XString, org.apache.xalan.xpath.XRTreeFrag