<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 StaticContext</h2><br><hr><pre>public class <strong>StaticContext</strong>
extends </pre>interface to static context<hr><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;
               add function to library</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_add_namespace">add_namespace</a>(java.lang.String prefix
         ,
      java.lang.String ns)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               add namespace</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_add_variable">add_variable</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               add variable</td></tr><tr valign="top"><td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code><a href="#method_attribute_declared">attribute_declared</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName attr)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               is the attribute declared?</td></tr><tr valign="top"><td width="20%" align="right"><code>public org.apache.xerces.xs.XSTypeDefinition</code></td><td width="" align="left"><code><a href="#method_attribute_type_definition">attribute_type_definition</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName attr)</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.types.XSAnyURI</code></td><td width="" align="left"><code><a href="#method_base_uri">base_uri</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               base uri</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_function_namespace">default_function_namespace</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               the default function namespace</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_namespace">default_namespace</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               the default namespace</td></tr><tr valign="top"><td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code><a href="#method_del_variable">del_variable</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               delete the variable</td></tr><tr valign="top"><td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code><a href="#method_derives_from">derives_from</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.NodeType at
         ,
      org.eclipse.wst.xml.xpath2.processor.internal.types.QName et)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code><a href="#method_derives_from">derives_from</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.NodeType at
         ,
      org.apache.xerces.xs.XSTypeDefinition et)</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_destroy_scope">destroy_scope</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               destroy scope</td></tr><tr valign="top"><td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code><a href="#method_element_declared">element_declared</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName elem)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               is the element declared?</td></tr><tr valign="top"><td width="20%" align="right"><code>public org.apache.xerces.xs.XSTypeDefinition</code></td><td width="" align="left"><code><a href="#method_element_type_definition">element_type_definition</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName elem)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code><a href="#method_expand_elem_type_qname">expand_elem_type_qname</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               expand element type qname</td></tr><tr valign="top"><td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code><a href="#method_expand_function_qname">expand_function_qname</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               expand function</td></tr><tr valign="top"><td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code><a href="#method_expand_qname">expand_qname</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               expand qname</td></tr><tr valign="top"><td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code><a href="#method_function_exists">function_exists</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name
         ,
      int arity)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               is the element declared?</td></tr><tr valign="top"><td width="20%" align="right"><code>public java.util.Map</code></td><td width="" align="left"><code><a href="#method_get_collections">get_collections</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.internal.types.AnyAtomicType</code></td><td width="" align="left"><code><a href="#method_make_atomic">make_atomic</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name)</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_new_scope">new_scope</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               new scope</td></tr><tr valign="top"><td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code><a href="#method_prefix_exists">prefix_exists</a>(java.lang.String prefix)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               namespaces does the prefix exist</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_resolve_prefix">resolve_prefix</a>(java.lang.String prefix)</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_base_uri">set_base_uri</a>(java.lang.String baseuri)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Sets the base uri for the context.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_set_collections">set_collections</a>(java.util.Map collections)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code><a href="#method_type_defined">type_defined</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code><a href="#method_variable_exists">variable_exists</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code><a href="#method_variable_in_scope">variable_in_scope</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName var)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code><a href="#method_xpath1_compatible">xpath1_compatible</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               is it xpath 1.0 compatible.</td></tr></table><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>add function to library</p><h3>Parameters</h3><p><code>fl</code> - is the function library</p><hr><h2><a name="method_add_namespace">add_namespace</a></h2><p><code>public void <strong>add_namespace</strong>(java.lang.String prefix
         ,
      java.lang.String ns)</code></p><p>add namespace</p><h3>Parameters</h3><p><code>prefix</code> - the prefix of the namespace</p><p><code>ns</code> - is the XSTypeDefinition of the node</p><hr><h2><a name="method_add_variable">add_variable</a></h2><p><code>public void <strong>add_variable</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name)</code></p><p>add variable</p><h3>Parameters</h3><p><code>name</code> - is the qname</p><hr><h2><a name="method_attribute_declared">attribute_declared</a></h2><p><code>public boolean <strong>attribute_declared</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName attr)</code></p><p>is the attribute declared?</p><h3>Parameters</h3><p><code>attr</code> - is the attribute of the qname</p><h3>Returns</h3><p><code>boolean</code> - boolean</p><hr><h2><a name="method_attribute_type_definition">attribute_type_definition</a></h2><p><code>public org.apache.xerces.xs.XSTypeDefinition <strong>attribute_type_definition</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName attr)</code></p><p></p><h3>Parameters</h3><p><code>attr</code> - is the qname variable</p><h3>Returns</h3><p><code>org.apache.xerces.xs.XSTypeDefinition</code> - attributes's type definition</p><hr><h2><a name="method_base_uri">base_uri</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.internal.types.XSAnyURI <strong>base_uri</strong>()</code></p><p>base uri</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.internal.types.XSAnyURI</code> - uri</p><hr><h2><a name="method_default_function_namespace">default_function_namespace</a></h2><p><code>public java.lang.String <strong>default_function_namespace</strong>()</code></p><p>the default function namespace</p><h3>Returns</h3><p><code>java.lang.String</code> - string</p><hr><h2><a name="method_default_namespace">default_namespace</a></h2><p><code>public java.lang.String <strong>default_namespace</strong>()</code></p><p>the default namespace</p><h3>Returns</h3><p><code>java.lang.String</code> - string</p><hr><h2><a name="method_del_variable">del_variable</a></h2><p><code>public boolean <strong>del_variable</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name)</code></p><p>delete the variable</p><h3>Parameters</h3><p><code>name</code> - is the qname</p><h3>Returns</h3><p><code>boolean</code> - boolean if deleted variable</p><hr><h2><a name="method_derives_from">derives_from</a></h2><p><code>public boolean <strong>derives_from</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.NodeType at
         ,
      org.eclipse.wst.xml.xpath2.processor.internal.types.QName et)</code></p><p></p><h3>Parameters</h3><p><code>at</code> - the node type</p><p><code>et</code> - is the qname</p><h3>Returns</h3><p><code>boolean</code> - boolean</p><hr><h2><a name="method_derives_from">derives_from</a></h2><p><code>public boolean <strong>derives_from</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.NodeType at
         ,
      org.apache.xerces.xs.XSTypeDefinition et)</code></p><p></p><h3>Parameters</h3><p><code>at</code> - the node type</p><p><code>et</code> - is the XSTypeDefinition of the node</p><h3>Returns</h3><p><code>boolean</code> - boolean</p><hr><h2><a name="method_destroy_scope">destroy_scope</a></h2><p><code>public void <strong>destroy_scope</strong>()</code></p><p>destroy scope</p><hr><h2><a name="method_element_declared">element_declared</a></h2><p><code>public boolean <strong>element_declared</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName elem)</code></p><p>is the element declared?</p><h3>Parameters</h3><p><code>elem</code> - is the elem of the qname</p><h3>Returns</h3><p><code>boolean</code> - boolean</p><hr><h2><a name="method_element_type_definition">element_type_definition</a></h2><p><code>public org.apache.xerces.xs.XSTypeDefinition <strong>element_type_definition</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName elem)</code></p><p></p><h3>Parameters</h3><p><code>elem</code> - is the elem of the qname</p><h3>Returns</h3><p><code>org.apache.xerces.xs.XSTypeDefinition</code> - element's type definition</p><hr><h2><a name="method_expand_elem_type_qname">expand_elem_type_qname</a></h2><p><code>public boolean <strong>expand_elem_type_qname</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name)</code></p><p>expand element type qname</p><h3>Parameters</h3><p><code>name</code> - is the qname</p><h3>Returns</h3><p><code>boolean</code> - boolean if function can be expanded</p><hr><h2><a name="method_expand_function_qname">expand_function_qname</a></h2><p><code>public boolean <strong>expand_function_qname</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name)</code></p><p>expand function</p><h3>Parameters</h3><p><code>name</code> - is the qname</p><h3>Returns</h3><p><code>boolean</code> - boolean if function can be expanded</p><hr><h2><a name="method_expand_qname">expand_qname</a></h2><p><code>public boolean <strong>expand_qname</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name)</code></p><p>expand qname</p><h3>Parameters</h3><p><code>name</code> - is the qname</p><h3>Returns</h3><p><code>boolean</code> - boolean if function can be expanded</p><hr><h2><a name="method_function_exists">function_exists</a></h2><p><code>public boolean <strong>function_exists</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name
         ,
      int arity)</code></p><p>is the element declared?</p><h3>Parameters</h3><p><code>name</code> - is the qname name</p><p><code>arity</code> - integer of qname</p><h3>Returns</h3><p><code>boolean</code> - boolean</p><hr><h2><a name="method_get_collections">get_collections</a></h2><p><code>public java.util.Map <strong>get_collections</strong>()</code></p><p></p><h3>Returns</h3><p><code>java.util.Map</code></p><hr><h2><a name="method_make_atomic">make_atomic</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.internal.types.AnyAtomicType <strong>make_atomic</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name)</code></p><p></p><h3>Parameters</h3><p><code>name</code> - is the qname</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.internal.types.AnyAtomicType</code> - any atomic type</p><hr><h2><a name="method_new_scope">new_scope</a></h2><p><code>public void <strong>new_scope</strong>()</code></p><p>new scope</p><hr><h2><a name="method_prefix_exists">prefix_exists</a></h2><p><code>public boolean <strong>prefix_exists</strong>(java.lang.String prefix)</code></p><p>namespaces does the prefix exist</p><h3>Parameters</h3><p><code>prefix</code> - is the prefix</p><h3>Returns</h3><p><code>boolean</code> - boolean</p><hr><h2><a name="method_resolve_prefix">resolve_prefix</a></h2><p><code>public java.lang.String <strong>resolve_prefix</strong>(java.lang.String prefix)</code></p><p></p><h3>Parameters</h3><p><code>prefix</code> - is the prefix</p><h3>Returns</h3><p><code>java.lang.String</code> - string</p><hr><h2><a name="method_set_base_uri">set_base_uri</a></h2><p><code>public void <strong>set_base_uri</strong>(java.lang.String baseuri)</code></p><p>Sets the base uri for the context.</p><h3>Parameters</h3><p><code>baseuri</code></p><hr><h2><a name="method_set_collections">set_collections</a></h2><p><code>public void <strong>set_collections</strong>(java.util.Map collections)</code></p><p></p><h3>Parameters</h3><p><code>collections</code></p><hr><h2><a name="method_type_defined">type_defined</a></h2><p><code>public boolean <strong>type_defined</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name)</code></p><p></p><h3>Parameters</h3><p><code>name</code> - is qname</p><h3>Returns</h3><p><code>boolean</code> - boolean</p><hr><h2><a name="method_variable_exists">variable_exists</a></h2><p><code>public boolean <strong>variable_exists</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName name)</code></p><p></p><h3>Parameters</h3><p><code>name</code> - is the qname</p><h3>Returns</h3><p><code>boolean</code> - boolean if variable exists</p><hr><h2><a name="method_variable_in_scope">variable_in_scope</a></h2><p><code>public boolean <strong>variable_in_scope</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.QName var)</code></p><p></p><h3>Parameters</h3><p><code>var</code> - is the variable of qname</p><h3>Returns</h3><p><code>boolean</code></p><hr><h2><a name="method_xpath1_compatible">xpath1_compatible</a></h2><p><code>public boolean <strong>xpath1_compatible</strong>()</code></p><p>is it xpath 1.0 compatible.</p><h3>Returns</h3><p><code>boolean</code> - boolean</p><hr></body></html>