<html><body><p><font size="+1"><strong>Package org.eclipse.wst.xml.xpath.core.util</strong></font></p><hr><h2><font size="-1"><strong>org.eclipse.wst.xml.xpath.core.util</strong></font><br>
               Class XSLTXPathHelper</h2><br><hr><pre>public class <strong>XSLTXPathHelper</strong>
extends java.lang.Object</pre><hr><table width="100%" border="1"><tr bgcolor="#CCCCFF"><td width="100%"><h2>Constructor Summary</h2></td></tr><tr><td><code><strong><a href="#con_XSLTXPathHelper">XSLTXPathHelper</a></strong>()</code></td></tr></table><br><table width="100%" border="1"><tr cols="2" bgcolor="#CCCCFF"><td colspan="2" width="100%"><h2>Method Summary</h2></td></tr><tr valign="top"><td width="20%" align="right"><code>public static java.lang.String</code></td><td width="" align="left"><code><a href="#method_calculateXPathToNode">calculateXPathToNode</a>(org.w3c.dom.Node node)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public static void</code></td><td width="" align="left"><code><a href="#method_compile">compile</a>(java.lang.String expression)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public static XObject</code></td><td width="" align="left"><code><a href="#method_eval">eval</a>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Evaluate XPath string to an XObject. Using this method, XPath namespace
 prefixes will be resolved from the namespaceNode.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static XObject</code></td><td width="" align="left"><code><a href="#method_eval">eval</a>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      org.w3c.dom.Node namespaceNode)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Evaluate 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.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static XObject</code></td><td width="" align="left"><code><a href="#method_eval">eval</a>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      PrefixResolver prefixResolver)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Evaluate 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.</td></tr><tr valign="top"><td width="20%" align="right"><code>protected static FunctionTable</code></td><td width="" align="left"><code><a href="#method_getFunctionTable">getFunctionTable</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.w3c.dom.traversal.NodeIterator</code></td><td width="" align="left"><code><a href="#method_selectNodeIterator">selectNodeIterator</a>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Use an XPath string to select a nodelist. XPath namespace prefixes are
 resolved from the contextNode.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.w3c.dom.traversal.NodeIterator</code></td><td width="" align="left"><code><a href="#method_selectNodeIterator">selectNodeIterator</a>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      org.w3c.dom.Node namespaceNode)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Use an XPath string to select a nodelist. XPath namespace prefixes are
 resolved from the namespaceNode.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.w3c.dom.NodeList</code></td><td width="" align="left"><code><a href="#method_selectNodeList">selectNodeList</a>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Use an XPath string to select a nodelist. XPath namespace prefixes are
 resolved from the contextNode.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.w3c.dom.NodeList</code></td><td width="" align="left"><code><a href="#method_selectNodeList">selectNodeList</a>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      org.w3c.dom.Node namespaceNode)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Use an XPath string to select a nodelist. XPath namespace prefixes are
 resolved from the namespaceNode.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.w3c.dom.Node</code></td><td width="" align="left"><code><a href="#method_selectSingleNode">selectSingleNode</a>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Use 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).</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.w3c.dom.Node</code></td><td width="" align="left"><code><a href="#method_selectSingleNode">selectSingleNode</a>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      org.w3c.dom.Node namespaceNode)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Use an XPath string to select a single node. XPath namespace prefixes are
 resolved from the namespaceNode.</td></tr></table><hr><table cols="2" width="100%" border="1"><tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left"><td><h2>
                  Constructor Detail
               </h2></td></tr></table><h2><a name="con_XSLTXPathHelper">XSLTXPathHelper</a></h2><p><code>public <strong>XSLTXPathHelper</strong>()</code></p><p></p><hr><table cols="2" width="100%" border="1"><tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left"><td><h2>
                  Methods Detail
               </h2></td></tr></table><h2><a name="method_calculateXPathToNode">calculateXPathToNode</a></h2><p><code>public java.lang.String <strong>calculateXPathToNode</strong>(org.w3c.dom.Node node)</code></p><p></p><h3>Parameters</h3><p><code>node</code></p><h3>Returns</h3><p><code>java.lang.String</code></p><hr><h2><a name="method_compile">compile</a></h2><p><code>public void <strong>compile</strong>(java.lang.String expression)</code></p><p></p><h3>Parameters</h3><p><code>expression</code></p><h3>Throws:</h3><p><code>javax.xml.xpath.XPathExpressionException</code></p><hr><h2><a name="method_eval">eval</a></h2><p><code>public XObject <strong>eval</strong>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str)</code></p><p>Evaluate XPath string to an XObject. Using this method, XPath namespace
 prefixes will be resolved from the namespaceNode.</p><h3>Parameters</h3><p><code>contextNode</code> - The node to start searching from.</p><p><code>str</code> - A valid XPath string.</p><h3>Returns</h3><p><code>XObject</code> - An XObject, which can be used to obtain a string, number,          nodelist, etc, should never be null.</p><h3>Throws:</h3><p><code>javax.xml.transform.TransformerException</code></p><hr><h2><a name="method_eval">eval</a></h2><p><code>public XObject <strong>eval</strong>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      org.w3c.dom.Node namespaceNode)</code></p><p>Evaluate 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.</p><h3>Parameters</h3><p><code>contextNode</code> - The node to start searching from.</p><p><code>str</code> - A valid XPath string.</p><p><code>namespaceNode</code> - The node from which prefixes in the XPath will be resolved to             namespaces.</p><h3>Returns</h3><p><code>XObject</code> - An XObject, which can be used to obtain a string, number,          nodelist, etc, should never be null.</p><h3>Throws:</h3><p><code>javax.xml.transform.TransformerException</code></p><hr><h2><a name="method_eval">eval</a></h2><p><code>public XObject <strong>eval</strong>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      PrefixResolver prefixResolver)</code></p><p>Evaluate 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.</p><h3>Parameters</h3><p><code>contextNode</code> - The node to start searching from.</p><p><code>str</code> - A valid XPath string.</p><p><code>prefixResolver</code> - Will be called if the parser encounters namespace prefixes, to             resolve the prefixes to URLs.</p><h3>Returns</h3><p><code>XObject</code> - An XObject, which can be used to obtain a string, number,          nodelist, etc, should never be null.</p><h3>Throws:</h3><p><code>javax.xml.transform.TransformerException</code></p><hr><h2><a name="method_getFunctionTable">getFunctionTable</a></h2><p><code>protected FunctionTable <strong>getFunctionTable</strong>()</code></p><p></p><h3>Returns</h3><p><code>FunctionTable</code></p><hr><h2><a name="method_selectNodeIterator">selectNodeIterator</a></h2><p><code>public org.w3c.dom.traversal.NodeIterator <strong>selectNodeIterator</strong>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str)</code></p><p>Use an XPath string to select a nodelist. XPath namespace prefixes are
 resolved from the contextNode.</p><h3>Parameters</h3><p><code>contextNode</code> - The node to start searching from.</p><p><code>str</code> - A valid XPath string.</p><h3>Returns</h3><p><code>org.w3c.dom.traversal.NodeIterator</code> - A NodeIterator, should never be null.</p><h3>Throws:</h3><p><code>javax.xml.transform.TransformerException</code></p><hr><h2><a name="method_selectNodeIterator">selectNodeIterator</a></h2><p><code>public org.w3c.dom.traversal.NodeIterator <strong>selectNodeIterator</strong>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      org.w3c.dom.Node namespaceNode)</code></p><p>Use an XPath string to select a nodelist. XPath namespace prefixes are
 resolved from the namespaceNode.</p><h3>Parameters</h3><p><code>contextNode</code> - The node to start searching from.</p><p><code>str</code> - A valid XPath string.</p><p><code>namespaceNode</code> - The node from which prefixes in the XPath will be resolved to             namespaces.</p><h3>Returns</h3><p><code>org.w3c.dom.traversal.NodeIterator</code> - A NodeIterator, should never be null.</p><h3>Throws:</h3><p><code>javax.xml.transform.TransformerException</code></p><hr><h2><a name="method_selectNodeList">selectNodeList</a></h2><p><code>public org.w3c.dom.NodeList <strong>selectNodeList</strong>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str)</code></p><p>Use an XPath string to select a nodelist. XPath namespace prefixes are
 resolved from the contextNode.</p><h3>Parameters</h3><p><code>contextNode</code> - The node to start searching from.</p><p><code>str</code> - A valid XPath string.</p><h3>Returns</h3><p><code>org.w3c.dom.NodeList</code> - A NodeIterator, should never be null.</p><h3>Throws:</h3><p><code>javax.xml.transform.TransformerException</code></p><hr><h2><a name="method_selectNodeList">selectNodeList</a></h2><p><code>public org.w3c.dom.NodeList <strong>selectNodeList</strong>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      org.w3c.dom.Node namespaceNode)</code></p><p>Use an XPath string to select a nodelist. XPath namespace prefixes are
 resolved from the namespaceNode.</p><h3>Parameters</h3><p><code>contextNode</code> - The node to start searching from.</p><p><code>str</code> - A valid XPath string.</p><p><code>namespaceNode</code> - The node from which prefixes in the XPath will be resolved to             namespaces.</p><h3>Returns</h3><p><code>org.w3c.dom.NodeList</code> - A NodeIterator, should never be null.</p><h3>Throws:</h3><p><code>javax.xml.transform.TransformerException</code></p><hr><h2><a name="method_selectSingleNode">selectSingleNode</a></h2><p><code>public org.w3c.dom.Node <strong>selectSingleNode</strong>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str)</code></p><p>Use 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).</p><h3>Parameters</h3><p><code>contextNode</code> - The node to start searching from.</p><p><code>str</code> - A valid XPath string.</p><h3>Returns</h3><p><code>org.w3c.dom.Node</code> - The first node found that matches the XPath, or null.</p><h3>Throws:</h3><p><code>javax.xml.transform.TransformerException</code></p><hr><h2><a name="method_selectSingleNode">selectSingleNode</a></h2><p><code>public org.w3c.dom.Node <strong>selectSingleNode</strong>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      org.w3c.dom.Node namespaceNode)</code></p><p>Use an XPath string to select a single node. XPath namespace prefixes are
 resolved from the namespaceNode.</p><h3>Parameters</h3><p><code>contextNode</code> - The node to start searching from.</p><p><code>str</code> - A valid XPath string.</p><p><code>namespaceNode</code> - The node from which prefixes in the XPath will be resolved to             namespaces.</p><h3>Returns</h3><p><code>org.w3c.dom.Node</code> - The first node found that matches the XPath, or null.</p><h3>Throws:</h3><p><code>javax.xml.transform.TransformerException</code></p><hr></body></html>