<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 DynamicError</h2><br><hr><pre>public class <strong>DynamicError</strong>
extends org.eclipse.wst.xml.xpath2.processor.XPathException</pre>Dynamic Error like division by 0 or type errors.<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_DynamicError">DynamicError</a></strong>(java.lang.String code
         ,
      java.lang.String err)</code></td></tr><tr><td><code><strong><a href="#con_DynamicError">DynamicError</a></strong>(org.eclipse.wst.xml.xpath2.processor.internal.TypeError te)</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 org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_argument_type_error">argument_type_error</a>(java.lang.Class type)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the dynamic error.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_cant_cast">cant_cast</a>(java.lang.String err)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the dynamic error.</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_code">code</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the string of the code.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_contextUndefined">contextUndefined</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_div_zero">div_zero</a>(java.lang.String msg)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the error message when reads a Division by zero</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_doc_not_found">doc_not_found</a>(java.lang.String msg)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the error message when fn:doc cannot load its document</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_empty_seq">empty_seq</a>(java.lang.String msg)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the error message</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_errorResolvingURI">errorResolvingURI</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Error resolving relative uri against base-uri.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_inconsistentTimeZone">inconsistentTimeZone</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               The two arguments to fn:dateTime have inconsistent timezones</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_inputToLargeForDecimal">inputToLargeForDecimal</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_invalid_doc">invalid_doc</a>(java.lang.String msg)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the error message when reads Invalid argument to fn:doc</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_invalidCollectionArgument">invalidCollectionArgument</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the error message when reads Invalid argument to fn:collection</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_invalidForCastConstructor">invalidForCastConstructor</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Data is invalid for casting or the data type constructor.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_invalidLexicalValue">invalidLexicalValue</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Invalid lexical value</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_invalidPrefix">invalidPrefix</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               No namespace found for prefix.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_invalidTimezone">invalidTimezone</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Invalid Timezone value.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_invalidType">invalidType</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_lexical_error">lexical_error</a>(java.lang.String msg)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the error message when reads an Invalid lexical value</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_more_one_item">more_one_item</a>(java.lang.String msg)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the error message</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_nan">nan</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Overflow/underflow in duration operation.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_noBaseURI">noBaseURI</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               No base-uri defined.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_noContextDoc">noContextDoc</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               No context document</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_not_cmp">not_cmp</a>(java.lang.String msg)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the error message when reads an Items not comparable</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_not_one">not_one</a>(java.lang.String msg)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the error message</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_numeric_overflow">numeric_overflow</a>(java.lang.String msg)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Numeric operation overflow/underflow</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_overflowDateTime">overflowDateTime</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Overflow/underflow in date/time operation</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_overflowUnderflow">overflowUnderflow</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Overflow/underflow in duration operation.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_regex_error">regex_error</a>(java.lang.String err)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the dynamic error.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_regex_flags_error">regex_flags_error</a>(java.lang.String err)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the Dynamic Error for invalid flags in regular expressions</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_regex_match_zero_length">regex_match_zero_length</a>(java.lang.String err)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the dynamic error.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_throw_type_error">throw_type_error</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the dynamic error.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_unsupported_codepoint">unsupported_codepoint</a>(java.lang.String err)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the dynamic error for an unsupported Unicode codepoint</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_unsupported_collation">unsupported_collation</a>(java.lang.String collationName)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the dynamic error for an unsupported normalization form</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_unsupported_normalization_form">unsupported_normalization_form</a>(java.lang.String err)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the dynamic error for an unsupported normalization form</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_user_error">user_error</a>(java.lang.String ns
         ,
      java.lang.String code
         ,
      java.lang.String desc)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the dynamic error.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.DynamicError</code></td><td width="" align="left"><code><a href="#method_user_error">user_error</a>(java.lang.String err)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the dynamic error.</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_DynamicError">DynamicError</a></h2><p><code>public <strong>DynamicError</strong>(java.lang.String code
         ,
      java.lang.String err)</code></p><p>Constructor for Dynamic Error.</p><hr><h2><a name="con_DynamicError">DynamicError</a></h2><p><code>public <strong>DynamicError</strong>(org.eclipse.wst.xml.xpath2.processor.internal.TypeError te)</code></p><p>Constructor for Dynamic Error.</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_argument_type_error">argument_type_error</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>argument_type_error</strong>(java.lang.Class type)</code></p><p>Returns the dynamic error.</p><h3>Parameters</h3><p><code>type</code> - Type found</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the DynamicError.</p><hr><h2><a name="method_cant_cast">cant_cast</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>cant_cast</strong>(java.lang.String err)</code></p><p>Returns the dynamic error.</p><h3>Parameters</h3><p><code>err</code> - is the error</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the DynamicError.</p><hr><h2><a name="method_code">code</a></h2><p><code>public java.lang.String <strong>code</strong>()</code></p><p>Returns the string of the code.</p><h3>Returns</h3><p><code>java.lang.String</code> - the code.</p><hr><h2><a name="method_contextUndefined">contextUndefined</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>contextUndefined</strong>()</code></p><p></p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code></p><hr><h2><a name="method_div_zero">div_zero</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>div_zero</strong>(java.lang.String msg)</code></p><p>Returns the error message when reads a Division by zero</p><h3>Parameters</h3><p><code>msg</code> - is the message</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the make_error</p><hr><h2><a name="method_doc_not_found">doc_not_found</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>doc_not_found</strong>(java.lang.String msg)</code></p><p>Returns the error message when fn:doc cannot load its document</p><h3>Parameters</h3><p><code>msg</code> - is the message</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the make_error</p><hr><h2><a name="method_empty_seq">empty_seq</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>empty_seq</strong>(java.lang.String msg)</code></p><p>Returns the error message</p><h3>Parameters</h3><p><code>msg</code> - is the message</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the make_error</p><hr><h2><a name="method_errorResolvingURI">errorResolvingURI</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>errorResolvingURI</strong>()</code></p><p>Error resolving relative uri against base-uri.</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code></p><hr><h2><a name="method_inconsistentTimeZone">inconsistentTimeZone</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>inconsistentTimeZone</strong>()</code></p><p>The two arguments to fn:dateTime have inconsistent timezones</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code></p><hr><h2><a name="method_inputToLargeForDecimal">inputToLargeForDecimal</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>inputToLargeForDecimal</strong>()</code></p><p></p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code></p><h3>Throws:</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code></p><hr><h2><a name="method_invalid_doc">invalid_doc</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>invalid_doc</strong>(java.lang.String msg)</code></p><p>Returns the error message when reads Invalid argument to fn:doc</p><h3>Parameters</h3><p><code>msg</code> - is the message</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the make_error</p><hr><h2><a name="method_invalidCollectionArgument">invalidCollectionArgument</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>invalidCollectionArgument</strong>()</code></p><p>Returns the error message when reads Invalid argument to fn:collection</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the make_error</p><hr><h2><a name="method_invalidForCastConstructor">invalidForCastConstructor</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>invalidForCastConstructor</strong>()</code></p><p>Data is invalid for casting or the data type constructor.</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - FORG0001</p><hr><h2><a name="method_invalidLexicalValue">invalidLexicalValue</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>invalidLexicalValue</strong>()</code></p><p>Invalid lexical value</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code></p><hr><h2><a name="method_invalidPrefix">invalidPrefix</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>invalidPrefix</strong>()</code></p><p>No namespace found for prefix.</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code></p><hr><h2><a name="method_invalidTimezone">invalidTimezone</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>invalidTimezone</strong>()</code></p><p>Invalid Timezone value.</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code></p><hr><h2><a name="method_invalidType">invalidType</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>invalidType</strong>()</code></p><p></p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code></p><h3>Throws:</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code></p><hr><h2><a name="method_lexical_error">lexical_error</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>lexical_error</strong>(java.lang.String msg)</code></p><p>Returns the error message when reads an Invalid lexical value</p><h3>Parameters</h3><p><code>msg</code> - is the message</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the make_error</p><hr><h2><a name="method_more_one_item">more_one_item</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>more_one_item</strong>(java.lang.String msg)</code></p><p>Returns the error message</p><h3>Parameters</h3><p><code>msg</code> - is the message</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the make_error</p><hr><h2><a name="method_nan">nan</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>nan</strong>()</code></p><p>Overflow/underflow in duration operation.</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code></p><hr><h2><a name="method_noBaseURI">noBaseURI</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>noBaseURI</strong>()</code></p><p>No base-uri defined.</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code></p><hr><h2><a name="method_noContextDoc">noContextDoc</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>noContextDoc</strong>()</code></p><p>No context document</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code></p><hr><h2><a name="method_not_cmp">not_cmp</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>not_cmp</strong>(java.lang.String msg)</code></p><p>Returns the error message when reads an Items not comparable</p><h3>Parameters</h3><p><code>msg</code> - is the message</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the make_error</p><hr><h2><a name="method_not_one">not_one</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>not_one</strong>(java.lang.String msg)</code></p><p>Returns the error message</p><h3>Parameters</h3><p><code>msg</code> - is the message</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the make_error</p><hr><h2><a name="method_numeric_overflow">numeric_overflow</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>numeric_overflow</strong>(java.lang.String msg)</code></p><p>Numeric operation overflow/underflow</p><h3>Parameters</h3><p><code>msg</code> - is the message</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the make_error</p><hr><h2><a name="method_overflowDateTime">overflowDateTime</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>overflowDateTime</strong>()</code></p><p>Overflow/underflow in date/time operation</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code></p><hr><h2><a name="method_overflowUnderflow">overflowUnderflow</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>overflowUnderflow</strong>()</code></p><p>Overflow/underflow in duration operation.</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code></p><hr><h2><a name="method_regex_error">regex_error</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>regex_error</strong>(java.lang.String err)</code></p><p>Returns the dynamic error.</p><h3>Parameters</h3><p><code>err</code> - is the error</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the DynamicError.</p><hr><h2><a name="method_regex_flags_error">regex_flags_error</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>regex_flags_error</strong>(java.lang.String err)</code></p><p>Returns the Dynamic Error for invalid flags in regular expressions</p><h3>Parameters</h3><p><code>err</code></p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code></p><hr><h2><a name="method_regex_match_zero_length">regex_match_zero_length</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>regex_match_zero_length</strong>(java.lang.String err)</code></p><p>Returns the dynamic error.</p><h3>Parameters</h3><p><code>err</code> - is the error</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the DynamicError.</p><hr><h2><a name="method_throw_type_error">throw_type_error</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>throw_type_error</strong>()</code></p><p>Returns the dynamic error.</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the DynamicError.</p><h3>Throws:</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError - a Dynamic Error</code></p><hr><h2><a name="method_unsupported_codepoint">unsupported_codepoint</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>unsupported_codepoint</strong>(java.lang.String err)</code></p><p>Returns the dynamic error for an unsupported Unicode codepoint</p><h3>Parameters</h3><p><code>err</code> - is the error</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the DynamicError.</p><hr><h2><a name="method_unsupported_collation">unsupported_collation</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>unsupported_collation</strong>(java.lang.String collationName)</code></p><p>Returns the dynamic error for an unsupported normalization form</p><h3>Parameters</h3><p><code>collationName</code> - is the error</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the DynamicError.</p><hr><h2><a name="method_unsupported_normalization_form">unsupported_normalization_form</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>unsupported_normalization_form</strong>(java.lang.String err)</code></p><p>Returns the dynamic error for an unsupported normalization form</p><h3>Parameters</h3><p><code>err</code> - is the error</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the DynamicError.</p><hr><h2><a name="method_user_error">user_error</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>user_error</strong>(java.lang.String ns
         ,
      java.lang.String code
         ,
      java.lang.String desc)</code></p><p>Returns the dynamic error.</p><h3>Parameters</h3><p><code>ns</code></p><p><code>code</code></p><p><code>desc</code> - is the description of the error</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the DynamicError.</p><hr><h2><a name="method_user_error">user_error</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.DynamicError <strong>user_error</strong>(java.lang.String err)</code></p><p>Returns the dynamic error.</p><h3>Parameters</h3><p><code>err</code> - is the description of the error</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.DynamicError</code> - the DynamicError.</p><hr></body></html>