<html><body><p><font size="+1"><strong>Package org.eclipse.wst.xml.xpath2.processor</strong></font></p><hr><h2><font size="-1"><strong>org.eclipse.wst.xml.xpath2.processor</strong></font><br>
               Class DefaultDynamicContext</h2><br><hr><pre>public class <strong>DefaultDynamicContext</strong>
extends org.eclipse.wst.xml.xpath2.processor.internal.DefaultStaticContext</pre>The default implementation of a Dynamic Context.
 
 Initializes and provides functionality of a dynamic context according to the
 XPath 2.0 specification.<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_DefaultDynamicContext">DefaultDynamicContext</a></strong>(org.apache.xerces.xs.XSModel schema
         ,
      org.w3c.dom.Document doc)</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 void</code></td><td width="" align="left"><code><a href="#method_add_function_library">add_function_library</a>(FunctionLibrary fl)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Adds function definitions.</td></tr><tr valign="top"><td width="20%" align="right"><code>public org.eclipse.wst.xml.xpath2.processor.internal.types.AnyType</code></td><td width="" align="left"><code><a href="#method_context_item">context_item</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Retrieve context item that is in focus</td></tr><tr valign="top"><td width="20%" align="right"><code>public int</code></td><td width="" align="left"><code><a href="#method_context_position">context_position</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Retrieve the position of the focus</td></tr><tr valign="top"><td width="20%" align="right"><code>public java.util.GregorianCalendar</code></td><td width="" align="left"><code><a href="#method_current_date_time">current_date_time</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Gets the Current stable date time from the dynamic context.</td></tr><tr valign="top"><td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code><a href="#method_default_collation_name">default_collation_name</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public org.eclipse.wst.xml.xpath2.processor.ResultSequence</code></td><td width="" align="left"><code><a href="#method_evaluate_function">evaluate_function</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name
         ,
      java.util.Collection args)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public org.eclipse.wst.xml.xpath2.processor.internal.Focus</code></td><td width="" align="left"><code><a href="#method_focus">focus</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Return the focus</td></tr><tr valign="top"><td width="20%" align="right"><code>public java.util.Comparator</code></td><td width="" align="left"><code><a href="#method_get_collation">get_collation</a>(java.lang.String uri)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public org.eclipse.wst.xml.xpath2.processor.ResultSequence</code></td><td width="" align="left"><code><a href="#method_get_doc">get_doc</a>(java.net.URI resolved)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               get document</td></tr><tr valign="top"><td width="20%" align="right"><code>public org.eclipse.wst.xml.xpath2.processor.internal.types.AnyType</code></td><td width="" align="left"><code><a href="#method_get_variable">get_variable</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Retrieve the variable name</td></tr><tr valign="top"><td width="20%" align="right"><code>public int</code></td><td width="" align="left"><code><a href="#method_last">last</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Retrieve the position of the last focus</td></tr><tr valign="top"><td width="20%" align="right"><code>public int</code></td><td width="" align="left"><code><a href="#method_node_position">node_position</a>(org.w3c.dom.Node node)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Use focus().position() to retrieve the value.</td></tr><tr valign="top"><td width="20%" align="right"><code>public java.net.URI</code></td><td width="" align="left"><code><a href="#method_resolve_uri">resolve_uri</a>(java.lang.String uri)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_set_collation_provider">set_collation_provider</a>(org.eclipse.wst.xml.xpath2.processor.CollationProvider provider)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_set_default_collation">set_default_collation</a>(java.lang.String _default_collation)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_set_focus">set_focus</a>(org.eclipse.wst.xml.xpath2.processor.internal.Focus f)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Changes the current focus.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_set_variable">set_variable</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName var
         ,
      org.eclipse.wst.xml.xpath2.processor.internal.types.AnyType val)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Sets the value of a variable.</td></tr><tr valign="top"><td width="20%" align="right"><code>public org.eclipse.wst.xml.xpath2.processor.internal.types.XSDuration</code></td><td width="" align="left"><code><a href="#method_tz">tz</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Reads the day from a TimeDuration type</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_DefaultDynamicContext">DefaultDynamicContext</a></h2><p><code>public <strong>DefaultDynamicContext</strong>(org.apache.xerces.xs.XSModel schema
         ,
      org.w3c.dom.Document doc)</code></p><p>Constructor.</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_add_function_library">add_function_library</a></h2><p><code>public void <strong>add_function_library</strong>(FunctionLibrary fl)</code></p><p>Adds function definitions.</p><h3>Parameters</h3><p><code>fl</code> - Function library to add.</p><hr><h2><a name="method_context_item">context_item</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.internal.types.AnyType <strong>context_item</strong>()</code></p><p>Retrieve context item that is in focus</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.internal.types.AnyType</code> - an AnyType result from _focus.context_item()</p><hr><h2><a name="method_context_position">context_position</a></h2><p><code>public int <strong>context_position</strong>()</code></p><p>Retrieve the position of the focus</p><h3>Returns</h3><p><code>int</code> - an integer result from _focus.position()</p><hr><h2><a name="method_current_date_time">current_date_time</a></h2><p><code>public java.util.GregorianCalendar <strong>current_date_time</strong>()</code></p><p>Gets the Current stable date time from the dynamic context.</p><h3>Returns</h3><p><code>java.util.GregorianCalendar</code></p><hr><h2><a name="method_default_collation_name">default_collation_name</a></h2><p><code>public java.lang.String <strong>default_collation_name</strong>()</code></p><p></p><h3>Returns</h3><p><code>java.lang.String</code></p><hr><h2><a name="method_evaluate_function">evaluate_function</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.ResultSequence <strong>evaluate_function</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name
         ,
      java.util.Collection args)</code></p><p></p><h3>Parameters</h3><p><code>name</code></p><p><code>args</code></p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.ResultSequence</code> - a ResultSequence from funct.evaluate(args)</p><h3>Throws:</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code></p><hr><h2><a name="method_focus">focus</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.internal.Focus <strong>focus</strong>()</code></p><p>Return the focus</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.internal.Focus</code> - _focus</p><hr><h2><a name="method_get_collation">get_collation</a></h2><p><code>public java.util.Comparator <strong>get_collation</strong>(java.lang.String uri)</code></p><p></p><h3>Parameters</h3><p><code>uri</code></p><h3>Returns</h3><p><code>java.util.Comparator</code></p><hr><h2><a name="method_get_doc">get_doc</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.ResultSequence <strong>get_doc</strong>(java.net.URI resolved)</code></p><p>get document</p><h3>Parameters</h3><p><code>resolved</code></p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.ResultSequence</code> - a ResultSequence from ResultSequenceFactory.create_new()</p><hr><h2><a name="method_get_variable">get_variable</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.internal.types.AnyType <strong>get_variable</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name)</code></p><p>Retrieve the variable name</p><h3>Parameters</h3><p><code>name</code></p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.internal.types.AnyType</code> - an AnyType result from get_var(name) or return NULL</p><hr><h2><a name="method_last">last</a></h2><p><code>public int <strong>last</strong>()</code></p><p>Retrieve the position of the last focus</p><h3>Returns</h3><p><code>int</code> - an integer result from _focus.last()</p><hr><h2><a name="method_node_position">node_position</a></h2><p><code>public int <strong>node_position</strong>(org.w3c.dom.Node node)</code></p><p>Use focus().position() to retrieve the value.</p><h3>Parameters</h3><p><code>node</code></p><h3>Returns</h3><p><code>int</code></p><hr><h2><a name="method_resolve_uri">resolve_uri</a></h2><p><code>public java.net.URI <strong>resolve_uri</strong>(java.lang.String uri)</code></p><p></p><h3>Parameters</h3><p><code>uri</code></p><h3>Returns</h3><p><code>java.net.URI</code></p><hr><h2><a name="method_set_collation_provider">set_collation_provider</a></h2><p><code>public void <strong>set_collation_provider</strong>(org.eclipse.wst.xml.xpath2.processor.CollationProvider provider)</code></p><p></p><h3>Parameters</h3><p><code>provider</code></p><hr><h2><a name="method_set_default_collation">set_default_collation</a></h2><p><code>public void <strong>set_default_collation</strong>(java.lang.String _default_collation)</code></p><p></p><h3>Parameters</h3><p><code>_default_collation</code></p><hr><h2><a name="method_set_focus">set_focus</a></h2><p><code>public void <strong>set_focus</strong>(org.eclipse.wst.xml.xpath2.processor.internal.Focus f)</code></p><p>Changes the current focus.</p><h3>Parameters</h3><p><code>f</code> - focus to set</p><hr><h2><a name="method_set_variable">set_variable</a></h2><p><code>public void <strong>set_variable</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName var
         ,
      org.eclipse.wst.xml.xpath2.processor.internal.types.AnyType val)</code></p><p>Sets the value of a variable.</p><h3>Parameters</h3><p><code>var</code> - Variable name.</p><p><code>val</code> - Variable value.</p><hr><h2><a name="method_tz">tz</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.internal.types.XSDuration <strong>tz</strong>()</code></p><p>Reads the day from a TimeDuration type</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.internal.types.XSDuration</code> - an xs:integer _tz</p><hr></body></html>