<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>JSTLXPathImpl</title>
<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="JSTLXPathImpl";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathFactory.html" title="class in org.apache.taglibs.standard.tag.common.xml"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathNamespaceContext.html" title="class in org.apache.taglibs.standard.tag.common.xml"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../index.html?org/apache/taglibs/standard/tag/common/xml/JSTLXPathImpl.html" target="_top">Frames</a></li>
<li><a href="JSTLXPathImpl.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.taglibs.standard.tag.common.xml</div>
<h2 title="Class JSTLXPathImpl" class="title">Class JSTLXPathImpl</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.taglibs.standard.tag.common.xml.JSTLXPathImpl</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>javax.xml.xpath.XPath</dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">JSTLXPathImpl</span>
extends java.lang.Object
implements javax.xml.xpath.XPath</pre>
<div class="block">The JSTLXPathImpl class provides implementation for the methods defined  in
 javax.xml.xpath.XPath interface. This provide simple access to the results
 of an XPath expression. 
 
 This class provides our own implementation of XPath, so that we can support 
 a generic Object type in returnType arguement for XPath's evaluate instance 
 method.

 Most of the implementation is exactly similar to what is already provided in 
 com.sun.org.apache.xpath.internal.jaxp.XPathImpl.java</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>javax.xml.xpath.XPathExpression</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathImpl.html#compile-java.lang.String-">compile</a></span>(java.lang.String&nbsp;expression)</code>
<div class="block">Compile an XPath expression for later evaluation.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathImpl.html#evaluate-java.lang.String-org.xml.sax.InputSource-">evaluate</a></span>(java.lang.String&nbsp;expression,
        org.xml.sax.InputSource&nbsp;source)</code>
<div class="block">Evaluate an XPath expression in the context of the specified <code>InputSource</code>
 and return the result as a <code>String</code>.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathImpl.html#evaluate-java.lang.String-org.xml.sax.InputSource-javax.xml.namespace.QName-">evaluate</a></span>(java.lang.String&nbsp;expression,
        org.xml.sax.InputSource&nbsp;source,
        javax.xml.namespace.QName&nbsp;returnType)</code>
<div class="block">Evaluate an XPath expression in the context of the specified <code>InputSource</code>
 and return the result as the specified type.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathImpl.html#evaluate-java.lang.String-java.lang.Object-">evaluate</a></span>(java.lang.String&nbsp;expression,
        java.lang.Object&nbsp;item)</code>
<div class="block">Evaluate an XPath expression in the specified context and return the result as a <code>String</code>.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathImpl.html#evaluate-java.lang.String-java.lang.Object-javax.xml.namespace.QName-">evaluate</a></span>(java.lang.String&nbsp;expression,
        java.lang.Object&nbsp;item,
        javax.xml.namespace.QName&nbsp;returnType)</code>
<div class="block">Evaluate an <code>XPath</code> expression in the specified context and return the result as the specified type.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>javax.xml.namespace.NamespaceContext</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathImpl.html#getNamespaceContext--">getNamespaceContext</a></span>()</code>
<div class="block">Returns the current namespace context.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>javax.xml.xpath.XPathFunctionResolver</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathImpl.html#getXPathFunctionResolver--">getXPathFunctionResolver</a></span>()</code>
<div class="block">Returns the current function resolver.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>javax.xml.xpath.XPathVariableResolver</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathImpl.html#getXPathVariableResolver--">getXPathVariableResolver</a></span>()</code>
<div class="block">Returns the current variable resolver.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathImpl.html#reset--">reset</a></span>()</code>
<div class="block">Reset this <code>XPath</code> to its original configuration.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathImpl.html#setNamespaceContext-javax.xml.namespace.NamespaceContext-">setNamespaceContext</a></span>(javax.xml.namespace.NamespaceContext&nbsp;nsContext)</code>
<div class="block">Establishes a namespace context.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathImpl.html#setXPathFunctionResolver-javax.xml.xpath.XPathFunctionResolver-">setXPathFunctionResolver</a></span>(javax.xml.xpath.XPathFunctionResolver&nbsp;resolver)</code>
<div class="block">Establishes a function resolver.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathImpl.html#setXPathVariableResolver-javax.xml.xpath.XPathVariableResolver-">setXPathVariableResolver</a></span>(javax.xml.xpath.XPathVariableResolver&nbsp;resolver)</code>
<div class="block">Establishes a variable resolver.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="setXPathVariableResolver-javax.xml.xpath.XPathVariableResolver-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setXPathVariableResolver</h4>
<pre>public&nbsp;void&nbsp;setXPathVariableResolver(javax.xml.xpath.XPathVariableResolver&nbsp;resolver)</pre>
<div class="block"><p>Establishes a variable resolver.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>setXPathVariableResolver</code>&nbsp;in interface&nbsp;<code>javax.xml.xpath.XPath</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>resolver</code> - Variable Resolver</dd>
</dl>
</li>
</ul>
<a name="getXPathVariableResolver--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getXPathVariableResolver</h4>
<pre>public&nbsp;javax.xml.xpath.XPathVariableResolver&nbsp;getXPathVariableResolver()</pre>
<div class="block"><p>Returns the current variable resolver.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>getXPathVariableResolver</code>&nbsp;in interface&nbsp;<code>javax.xml.xpath.XPath</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Current variable resolver</dd>
</dl>
</li>
</ul>
<a name="setXPathFunctionResolver-javax.xml.xpath.XPathFunctionResolver-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setXPathFunctionResolver</h4>
<pre>public&nbsp;void&nbsp;setXPathFunctionResolver(javax.xml.xpath.XPathFunctionResolver&nbsp;resolver)</pre>
<div class="block"><p>Establishes a function resolver.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>setXPathFunctionResolver</code>&nbsp;in interface&nbsp;<code>javax.xml.xpath.XPath</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>resolver</code> - XPath function resolver</dd>
</dl>
</li>
</ul>
<a name="getXPathFunctionResolver--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getXPathFunctionResolver</h4>
<pre>public&nbsp;javax.xml.xpath.XPathFunctionResolver&nbsp;getXPathFunctionResolver()</pre>
<div class="block"><p>Returns the current function resolver.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>getXPathFunctionResolver</code>&nbsp;in interface&nbsp;<code>javax.xml.xpath.XPath</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Current function resolver</dd>
</dl>
</li>
</ul>
<a name="setNamespaceContext-javax.xml.namespace.NamespaceContext-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setNamespaceContext</h4>
<pre>public&nbsp;void&nbsp;setNamespaceContext(javax.xml.namespace.NamespaceContext&nbsp;nsContext)</pre>
<div class="block"><p>Establishes a namespace context.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>setNamespaceContext</code>&nbsp;in interface&nbsp;<code>javax.xml.xpath.XPath</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>nsContext</code> - Namespace context to use</dd>
</dl>
</li>
</ul>
<a name="getNamespaceContext--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNamespaceContext</h4>
<pre>public&nbsp;javax.xml.namespace.NamespaceContext&nbsp;getNamespaceContext()</pre>
<div class="block"><p>Returns the current namespace context.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>getNamespaceContext</code>&nbsp;in interface&nbsp;<code>javax.xml.xpath.XPath</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Current Namespace context</dd>
</dl>
</li>
</ul>
<a name="evaluate-java.lang.String-java.lang.Object-javax.xml.namespace.QName-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>evaluate</h4>
<pre>public&nbsp;java.lang.Object&nbsp;evaluate(java.lang.String&nbsp;expression,
                                 java.lang.Object&nbsp;item,
                                 javax.xml.namespace.QName&nbsp;returnType)
                          throws javax.xml.xpath.XPathExpressionException</pre>
<div class="block"><p>Evaluate an <code>XPath</code> expression in the specified context and return the result as the specified type.</p>

 <p>See "Evaluation of XPath Expressions" section of JAXP 1.3 spec
 for context item evaluation,
 variable, function and <code>QName</code> resolution and return type conversion.</p>

 <p>If <code>returnType</code> is not one of the types defined in <code>XPathConstants</code> (
 <code>NUMBER</code>,
 <code>STRING</code>,
 <code>BOOLEAN</code>,
 <code>NODE</code> or
 <code>NODESET</code>)
 then an <code>IllegalArgumentException</code> is thrown.</p>

 <p>If a <code>null</code> value is provided for
 <code>item</code>, an empty document will be used for the
 context.
 If <code>expression</code> or <code>returnType</code> is <code>null</code>, then a
 <code>NullPointerException</code> is thrown.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>evaluate</code>&nbsp;in interface&nbsp;<code>javax.xml.xpath.XPath</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>expression</code> - The XPath expression.</dd>
<dd><code>item</code> - The starting context (node or node list, for example).</dd>
<dd><code>returnType</code> - The desired return type.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Result of evaluating an XPath expression as an <code>Object</code> of <code>returnType</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.xml.xpath.XPathExpressionException</code> - If <code>expression</code> cannot be evaluated.</dd>
<dd><code>java.lang.IllegalArgumentException</code> - If <code>returnType</code> is not one of the types defined in <code>XPathConstants</code>.</dd>
<dd><code>java.lang.NullPointerException</code> - If <code>expression</code> or <code>returnType</code> is <code>null</code>.</dd>
</dl>
</li>
</ul>
<a name="evaluate-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>evaluate</h4>
<pre>public&nbsp;java.lang.String&nbsp;evaluate(java.lang.String&nbsp;expression,
                                 java.lang.Object&nbsp;item)
                          throws javax.xml.xpath.XPathExpressionException</pre>
<div class="block"><p>Evaluate an XPath expression in the specified context and return the result as a <code>String</code>.</p>

 <p>This method calls <a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathImpl.html#evaluate-java.lang.String-java.lang.Object-javax.xml.namespace.QName-"><code>evaluate(String expression, Object item, QName returnType)</code></a> with a <code>returnType</code> of
 <code>XPathConstants.STRING</code>.</p>

 <p>See "Evaluation of XPath Expressions" of JAXP 1.3 spec 
 for context item evaluation,
 variable, function and QName resolution and return type conversion.</p>

 <p>If a <code>null</code> value is provided for
 <code>item</code>, an empty document will be used for the
 context.
 If <code>expression</code> is <code>null</code>, then a <code>NullPointerException</code> is thrown.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>evaluate</code>&nbsp;in interface&nbsp;<code>javax.xml.xpath.XPath</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>expression</code> - The XPath expression.</dd>
<dd><code>item</code> - The starting context (node or node list, for example).</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The <code>String</code> that is the result of evaluating the expression and
   converting the result to a <code>String</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.xml.xpath.XPathExpressionException</code> - If <code>expression</code> cannot be evaluated.</dd>
<dd><code>java.lang.NullPointerException</code> - If <code>expression</code> is <code>null</code>.</dd>
</dl>
</li>
</ul>
<a name="compile-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>compile</h4>
<pre>public&nbsp;javax.xml.xpath.XPathExpression&nbsp;compile(java.lang.String&nbsp;expression)
                                        throws javax.xml.xpath.XPathExpressionException</pre>
<div class="block"><p>Compile an XPath expression for later evaluation.</p>

 <p>If <code>expression</code> contains any <code>XPathFunction</code>s,
 they must be available via the <code>XPathFunctionResolver</code>.
 An <code>XPathExpressionException</code> will be thrown if the <code>XPathFunction</code>
 cannot be resovled with the <code>XPathFunctionResolver</code>.</p>
 
 <p>If <code>expression</code> is <code>null</code>, a <code>NullPointerException</code> is thrown.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>compile</code>&nbsp;in interface&nbsp;<code>javax.xml.xpath.XPath</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>expression</code> - The XPath expression.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Compiled XPath expression.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.xml.xpath.XPathExpressionException</code> - If <code>expression</code> cannot be compiled.</dd>
<dd><code>java.lang.NullPointerException</code> - If <code>expression</code> is <code>null</code>.</dd>
</dl>
</li>
</ul>
<a name="evaluate-java.lang.String-org.xml.sax.InputSource-javax.xml.namespace.QName-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>evaluate</h4>
<pre>public&nbsp;java.lang.Object&nbsp;evaluate(java.lang.String&nbsp;expression,
                                 org.xml.sax.InputSource&nbsp;source,
                                 javax.xml.namespace.QName&nbsp;returnType)
                          throws javax.xml.xpath.XPathExpressionException</pre>
<div class="block"><p>Evaluate an XPath expression in the context of the specified <code>InputSource</code>
 and return the result as the specified type.</p>

 <p>This method builds a data model for the <code>InputSource</code> and calls
 <a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathImpl.html#evaluate-java.lang.String-java.lang.Object-javax.xml.namespace.QName-"><code>evaluate(String expression, Object item, QName returnType)</code></a> on the resulting document object.</p>

 <p>See "Evaluation of XPath Expressions" section of JAXP 1.3 spec 
 for context item evaluation,
 variable, function and QName resolution and return type conversion.</p>

 <p>If <code>returnType</code> is not one of the types defined in <code>XPathConstants</code>,
 then an <code>IllegalArgumentException</code> is thrown.</p>

 <p>If <code>expression</code>, <code>source</code> or <code>returnType</code> is <code>null</code>,
 then a <code>NullPointerException</code> is thrown.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>evaluate</code>&nbsp;in interface&nbsp;<code>javax.xml.xpath.XPath</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>expression</code> - The XPath expression.</dd>
<dd><code>source</code> - The input source of the document to evaluate over.</dd>
<dd><code>returnType</code> - The desired return type.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The <code>Object</code> that encapsulates the result of evaluating the expression.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.xml.xpath.XPathExpressionException</code> - If expression cannot be evaluated.</dd>
<dd><code>java.lang.IllegalArgumentException</code> - If <code>returnType</code> is not one of the types defined in <code>XPathConstants</code>.</dd>
<dd><code>java.lang.NullPointerException</code> - If <code>expression</code>, <code>source</code> or <code>returnType</code>
   is <code>null</code>.</dd>
</dl>
</li>
</ul>
<a name="evaluate-java.lang.String-org.xml.sax.InputSource-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>evaluate</h4>
<pre>public&nbsp;java.lang.String&nbsp;evaluate(java.lang.String&nbsp;expression,
                                 org.xml.sax.InputSource&nbsp;source)
                          throws javax.xml.xpath.XPathExpressionException</pre>
<div class="block"><p>Evaluate an XPath expression in the context of the specified <code>InputSource</code>
 and return the result as a <code>String</code>.</p>

 <p>This method calls <a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathImpl.html#evaluate-java.lang.String-org.xml.sax.InputSource-javax.xml.namespace.QName-"><code>evaluate(String expression, InputSource source, QName returnType)</code></a> with a
 <code>returnType</code> of <code>XPathConstants.STRING</code>.</p>

 <p>See "Evaluation of XPath Expressions" section of JAXP 1.3 spec
 for context item evaluation,
 variable, function and QName resolution and return type conversion.</p>

 <p>If <code>expression</code> or <code>source</code> is <code>null</code>,
 then a <code>NullPointerException</code> is thrown.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>evaluate</code>&nbsp;in interface&nbsp;<code>javax.xml.xpath.XPath</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>expression</code> - The XPath expression.</dd>
<dd><code>source</code> - The <code>InputSource</code> of the document to evaluate over.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The <code>String</code> that is the result of evaluating the expression and
   converting the result to a <code>String</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.xml.xpath.XPathExpressionException</code> - If expression cannot be evaluated.</dd>
<dd><code>java.lang.NullPointerException</code> - If <code>expression</code> or <code>source</code> is <code>null</code>.</dd>
</dl>
</li>
</ul>
<a name="reset--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>reset</h4>
<pre>public&nbsp;void&nbsp;reset()</pre>
<div class="block"><p>Reset this <code>XPath</code> to its original configuration.</p>

 <p><code>XPath</code> is reset to the same state as when it was created with
 <code>XPathFactory#newXPath()</code>.
 <code>reset()</code> is designed to allow the reuse of existing <code>XPath</code>s
 thus saving resources associated with the creation of new <code>XPath</code>s.</p>

 <p>The reset <code>XPath</code> is not guaranteed to have the same
 <code>XPathFunctionResolver</code>, <code>XPathVariableResolver</code>
 or <code>NamespaceContext</code> <code>Object</code>s, e.g. <code>Object.equals(Object obj)</code>.
 It is guaranteed to have a functionally equal <code>XPathFunctionResolver</code>,
 <code>XPathVariableResolver</code>
 and <code>NamespaceContext</code>.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>reset</code>&nbsp;in interface&nbsp;<code>javax.xml.xpath.XPath</code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathFactory.html" title="class in org.apache.taglibs.standard.tag.common.xml"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../../org/apache/taglibs/standard/tag/common/xml/JSTLXPathNamespaceContext.html" title="class in org.apache.taglibs.standard.tag.common.xml"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../index.html?org/apache/taglibs/standard/tag/common/xml/JSTLXPathImpl.html" target="_top">Frames</a></li>
<li><a href="JSTLXPathImpl.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
