Sophie

Sophie

distrib > Mageia > 7 > i586 > by-pkgid > b3bdfe6d859a3d6920ff2c44b38e9a6f > files > 1718

saxon-manual-9.4.0.9-2.mga7.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_18) on Fri Dec 09 20:48:06 GMT 2011 -->
<TITLE>
Expression
</TITLE>

<META NAME="date" CONTENT="2011-12-09">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="Expression";
    }
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">
<HR>


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../net/sf/saxon/expr/EveryItemMappingIterator.html" title="class in net.sf.saxon.expr"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../net/sf/saxon/expr/FilterExpression.html" title="class in net.sf.saxon.expr"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html?net/sf/saxon/expr/Expression.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="Expression.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
net.sf.saxon.expr</FONT>
<BR>
Class Expression</H2>
<PRE>
<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</A>
  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>net.sf.saxon.expr.Expression</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://download.oracle.com/javase/6/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/javax/xml/transform/SourceLocator.html?is-external=true" title="class or interface in javax.xml.transform">SourceLocator</A>, <A HREF="../../../../net/sf/saxon/event/LocationProvider.html" title="interface in net.sf.saxon.event">LocationProvider</A>, <A HREF="../../../../net/sf/saxon/event/SaxonLocator.html" title="interface in net.sf.saxon.event">SaxonLocator</A>, <A HREF="../../../../net/sf/saxon/trace/InstructionInfo.html" title="interface in net.sf.saxon.trace">InstructionInfo</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/org/xml/sax/Locator.html?is-external=true" title="class or interface in org.xml.sax">Locator</A></DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../net/sf/saxon/expr/Assignation.html" title="class in net.sf.saxon.expr">Assignation</A>, <A HREF="../../../../net/sf/saxon/expr/AxisExpression.html" title="class in net.sf.saxon.expr">AxisExpression</A>, <A HREF="../../../../com/saxonica/update/BasicUpdatingExpression.html" title="class in com.saxonica.update">BasicUpdatingExpression</A>, <A HREF="../../../../net/sf/saxon/expr/BinaryExpression.html" title="class in net.sf.saxon.expr">BinaryExpression</A>, <A HREF="../../../../net/sf/saxon/expr/CompareToIntegerConstant.html" title="class in net.sf.saxon.expr">CompareToIntegerConstant</A>, <A HREF="../../../../com/saxonica/bytecode/CompiledExpression.html" title="class in com.saxonica.bytecode">CompiledExpression</A>, <A HREF="../../../../net/sf/saxon/expr/sort/ConditionalSorter.html" title="class in net.sf.saxon.expr.sort">ConditionalSorter</A>, <A HREF="../../../../net/sf/saxon/expr/ContextItemExpression.html" title="class in net.sf.saxon.expr">ContextItemExpression</A>, <A HREF="../../../../com/saxonica/update/CopyModifyExpression.html" title="class in com.saxonica.update">CopyModifyExpression</A>, <A HREF="../../../../net/sf/saxon/expr/ErrorExpression.html" title="class in net.sf.saxon.expr">ErrorExpression</A>, <A HREF="../../../../com/saxonica/expr/EvaluateInstr.html" title="class in com.saxonica.expr">EvaluateInstr</A>, <A HREF="../../../../net/sf/saxon/expr/FilterExpression.html" title="class in net.sf.saxon.expr">FilterExpression</A>, <A HREF="../../../../net/sf/saxon/expr/flwor/FLWORExpression.html" title="class in net.sf.saxon.expr.flwor">FLWORExpression</A>, <A HREF="../../../../com/saxonica/expr/Fork.html" title="class in com.saxonica.expr">Fork</A>, <A HREF="../../../../net/sf/saxon/expr/FunctionCall.html" title="class in net.sf.saxon.expr">FunctionCall</A>, <A HREF="../../../../com/saxonica/functions/hof/FunctionItemExpression.html" title="class in com.saxonica.functions.hof">FunctionItemExpression</A>, <A HREF="../../../../com/saxonica/expr/IndexedFilterExpression.html" title="class in com.saxonica.expr">IndexedFilterExpression</A>, <A HREF="../../../../com/saxonica/expr/IndexedLookupExpression.html" title="class in com.saxonica.expr">IndexedLookupExpression</A>, <A HREF="../../../../net/sf/saxon/expr/instruct/Instruction.html" title="class in net.sf.saxon.expr.instruct">Instruction</A>, <A HREF="../../../../net/sf/saxon/expr/IntegerRangeTest.html" title="class in net.sf.saxon.expr">IntegerRangeTest</A>, <A HREF="../../../../net/sf/saxon/expr/IsLastExpression.html" title="class in net.sf.saxon.expr">IsLastExpression</A>, <A HREF="../../../../net/sf/saxon/expr/Literal.html" title="class in net.sf.saxon.expr">Literal</A>, <A HREF="../../../../net/sf/saxon/expr/instruct/NumberInstruction.html" title="class in net.sf.saxon.expr.instruct">NumberInstruction</A>, <A HREF="../../../../com/saxonica/functions/hof/PartialApply.html" title="class in com.saxonica.functions.hof">PartialApply</A>, <A HREF="../../../../net/sf/saxon/pattern/PatternSponsor.html" title="class in net.sf.saxon.pattern">PatternSponsor</A>, <A HREF="../../../../net/sf/saxon/expr/SimpleExpression.html" title="class in net.sf.saxon.expr">SimpleExpression</A>, <A HREF="../../../../net/sf/saxon/expr/SingleNodeExpression.html" title="class in net.sf.saxon.expr">SingleNodeExpression</A>, <A HREF="../../../../net/sf/saxon/expr/SlashExpression.html" title="class in net.sf.saxon.expr">SlashExpression</A>, <A HREF="../../../../net/sf/saxon/expr/sort/SortExpression.html" title="class in net.sf.saxon.expr.sort">SortExpression</A>, <A HREF="../../../../com/saxonica/stream/StreamingCopy.html" title="class in com.saxonica.stream">StreamingCopy</A>, <A HREF="../../../../net/sf/saxon/expr/SuppliedParameterReference.html" title="class in net.sf.saxon.expr">SuppliedParameterReference</A>, <A HREF="../../../../com/saxonica/expr/SwitchExpression.html" title="class in com.saxonica.expr">SwitchExpression</A>, <A HREF="../../../../net/sf/saxon/expr/TailExpression.html" title="class in net.sf.saxon.expr">TailExpression</A>, <A HREF="../../../../com/saxonica/expr/TryCatch.html" title="class in com.saxonica.expr">TryCatch</A>, <A HREF="../../../../net/sf/saxon/expr/flwor/TupleExpression.html" title="class in net.sf.saxon.expr.flwor">TupleExpression</A>, <A HREF="../../../../net/sf/saxon/expr/UnaryExpression.html" title="class in net.sf.saxon.expr">UnaryExpression</A>, <A HREF="../../../../net/sf/saxon/expr/VariableReference.html" title="class in net.sf.saxon.expr">VariableReference</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public abstract class <B>Expression</B><DT>extends <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://download.oracle.com/javase/6/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/javax/xml/transform/SourceLocator.html?is-external=true" title="class or interface in javax.xml.transform">SourceLocator</A>, <A HREF="../../../../net/sf/saxon/trace/InstructionInfo.html" title="interface in net.sf.saxon.trace">InstructionInfo</A></DL>
</PRE>

<P>
Interface supported by an XPath expression. This includes both compile-time
 and run-time methods.

 <p>Two expressions are considered equal if they return the same result when evaluated in the
 same context.</p>
<P>

<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#net.sf.saxon.expr.Expression">Serialized Form</A></DL>
<HR>

<P>
<!-- =========== FIELD SUMMARY =========== -->

<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Field Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#EFFECTIVE_BOOLEAN_VALUE">EFFECTIVE_BOOLEAN_VALUE</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#EVALUATE_METHOD">EVALUATE_METHOD</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#EVENT_FEED_METHOD">EVENT_FEED_METHOD</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#ITEM_FEED_METHOD">ITEM_FEED_METHOD</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#ITERATE_METHOD">ITERATE_METHOD</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#locationId">locationId</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../net/sf/saxon/value/IntegerValue.html" title="class in net.sf.saxon.value">IntegerValue</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#MAX_SEQUENCE_LENGTH">MAX_SEQUENCE_LENGTH</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../net/sf/saxon/value/IntegerValue.html" title="class in net.sf.saxon.value">IntegerValue</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#MAX_STRING_LENGTH">MAX_STRING_LENGTH</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#PROCESS_METHOD">PROCESS_METHOD</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#PUSH_SELECTION">PUSH_SELECTION</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#staticProperties">staticProperties</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../net/sf/saxon/value/IntegerValue.html" title="class in net.sf.saxon.value">IntegerValue</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#UNBOUNDED_LOWER">UNBOUNDED_LOWER</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../net/sf/saxon/value/IntegerValue.html" title="class in net.sf.saxon.value">IntegerValue</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#UNBOUNDED_UPPER">UNBOUNDED_UPPER</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#WATCH_METHOD">WATCH_METHOD</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#Expression()">Expression</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/parser/PathMap.PathMapNodeSet.html" title="class in net.sf.saxon.expr.parser">PathMap.PathMapNodeSet</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#addToPathMap(net.sf.saxon.expr.parser.PathMap, net.sf.saxon.expr.parser.PathMap.PathMapNodeSet)">addToPathMap</A></B>(<A HREF="../../../../net/sf/saxon/expr/parser/PathMap.html" title="class in net.sf.saxon.expr.parser">PathMap</A>&nbsp;pathMap,
             <A HREF="../../../../net/sf/saxon/expr/parser/PathMap.PathMapNodeSet.html" title="class in net.sf.saxon.expr.parser">PathMap.PathMapNodeSet</A>&nbsp;pathMapNodeSet)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add a representation of this expression to a PathMap.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#adoptChildExpression(net.sf.saxon.expr.Expression)">adoptChildExpression</A></B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;child)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set up a parent-child relationship between this expression and a given child expression.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#checkForUpdatingSubexpressions()">checkForUpdatingSubexpressions</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Check to ensure that this expression does not contain any inappropriate updating subexpressions.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#checkPermittedContents(net.sf.saxon.type.SchemaType, net.sf.saxon.expr.StaticContext, boolean)">checkPermittedContents</A></B>(<A HREF="../../../../net/sf/saxon/type/SchemaType.html" title="interface in net.sf.saxon.type">SchemaType</A>&nbsp;parentType,
                       <A HREF="../../../../net/sf/saxon/expr/StaticContext.html" title="interface in net.sf.saxon.expr">StaticContext</A>&nbsp;env,
                       boolean&nbsp;whole)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Check that any elements and attributes constructed or returned by this expression are acceptable
 in the content model of a given complex type.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected abstract &nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#computeCardinality()">computeCardinality</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute the static cardinality of this expression</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#computeDependencies()">computeDependencies</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute the dependencies of an expression, as the union of the
 dependencies of its subexpressions.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#computeSpecialProperties()">computeSpecialProperties</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute the special properties of this expression.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#computeStaticProperties()">computeStaticProperties</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute the static properties.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#copy()">copy</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copy an expression.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#doPromotion(net.sf.saxon.expr.Expression, net.sf.saxon.expr.parser.PromotionOffer)">doPromotion</A></B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;subexpression,
            <A HREF="../../../../net/sf/saxon/expr/parser/PromotionOffer.html" title="class in net.sf.saxon.expr.parser">PromotionOffer</A>&nbsp;offer)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Promote a subexpression if possible, and if the expression was changed, carry out housekeeping
 to reset the static properties and correct the parent pointers in the tree</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#dynamicError(java.lang.String, java.lang.String, net.sf.saxon.expr.XPathContext)">dynamicError</A></B>(<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;message,
             <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;code,
             <A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method used in subclasses to signal a dynamic error</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#effectiveBooleanValue(net.sf.saxon.expr.XPathContext)">effectiveBooleanValue</A></B>(<A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the effective boolean value of the expression.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/CharSequence.html?is-external=true" title="class or interface in java.lang">CharSequence</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#evaluateAsString(net.sf.saxon.expr.XPathContext)">evaluateAsString</A></B>(<A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Evaluate an expression as a String.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/om/Item.html" title="interface in net.sf.saxon.om">Item</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#evaluateItem(net.sf.saxon.expr.XPathContext)">evaluateItem</A></B>(<A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Evaluate an expression as a single item.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#evaluatePendingUpdates(net.sf.saxon.expr.XPathContext, net.sf.saxon.expr.PendingUpdateList)">evaluatePendingUpdates</A></B>(<A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context,
                       <A HREF="../../../../net/sf/saxon/expr/PendingUpdateList.html" title="interface in net.sf.saxon.expr">PendingUpdateList</A>&nbsp;pul)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Evaluate an updating expression, adding the results to a Pending Update List.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#explain(net.sf.saxon.trace.ExpressionPresenter)">explain</A></B>(<A HREF="../../../../net/sf/saxon/trace/ExpressionPresenter.html" title="class in net.sf.saxon.trace">ExpressionPresenter</A>&nbsp;out)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Diagnostic print of expression structure.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#explain(java.io.OutputStream)">explain</A></B>(<A HREF="http://download.oracle.com/javase/6/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</A>&nbsp;out)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Diagnostic print of expression structure.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getCardinality()">getCardinality</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine the static cardinality of the expression.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getColumnNumber()">getColumnNumber</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the column number of the expression</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getColumnNumber(long)">getColumnNumber</A></B>(long&nbsp;locationId)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the column number within the document, entity, or module containing a particular location</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getConstructType()">getConstructType</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the type of this expression for use in tracing and diagnostics</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Container.html" title="interface in net.sf.saxon.expr">Container</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getContainer()">getContainer</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the container in which this expression is located.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getDependencies()">getDependencies</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine which aspects of the context the expression depends on.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getEvaluationMethod()">getEvaluationMethod</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/instruct/Executable.html" title="class in net.sf.saxon.expr.instruct">Executable</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getExecutable()">getExecutable</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the executable containing this expression</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getExpressionName()">getExpressionName</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a name identifying the kind of expression, in terms meaningful to a user.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getHostLanguage()">getHostLanguage</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the host language (XSLT, XQuery, XPath) used to implement the code in this container</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getImplementationMethod()">getImplementationMethod</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An implementation of Expression must provide at least one of the methods evaluateItem(), iterate(), or process().</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/value/IntegerValue.html" title="class in net.sf.saxon.value">IntegerValue</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getIntegerBounds()">getIntegerBounds</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For an expression that returns an integer or a sequence of integers, get
 a lower and upper bound on the values of the integers that may be returned, from
 static analysis.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getIntrinsicDependencies()">getIntrinsicDependencies</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine the intrinsic dependencies of an expression, that is, those which are not derived
 from the dependencies of its subexpressions.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;<A HREF="../../../../net/sf/saxon/type/ItemType.html" title="interface in net.sf.saxon.type">ItemType</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getItemType(net.sf.saxon.type.TypeHierarchy)">getItemType</A></B>(<A HREF="../../../../net/sf/saxon/type/TypeHierarchy.html" title="class in net.sf.saxon.type">TypeHierarchy</A>&nbsp;th)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine the data type of the expression, if possible.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getLineNumber()">getLineNumber</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the line number of the expression</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getLineNumber(long)">getLineNumber</A></B>(long&nbsp;locationId)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the line number within the document or module containing a particular location</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getLocationId()">getLocationId</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the location ID of the expression</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/event/LocationProvider.html" title="interface in net.sf.saxon.event">LocationProvider</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getLocationProvider()">getLocationProvider</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the LocationProvider allowing location identifiers to be resolved.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/om/StructuredQName.html" title="class in net.sf.saxon.om">StructuredQName</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getObjectName()">getObjectName</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a name identifying the object of the expression, for example a function name, template name,
 variable name, key name, element name, etc.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/6/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</A>&lt;<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getProperties()">getProperties</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get an iterator over all the properties available.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getProperty(java.lang.String)">getProperty</A></B>(<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;name)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the value of a particular property of the instruction.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getPublicId()">getPublicId</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the publicId of the module containing the expression (to satisfy the SourceLocator interface)</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getSlotsUsed()">getSlotsUsed</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the local variables (identified by their slot numbers) on which this expression depends.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getSpecialProperties()">getSpecialProperties</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the static properties of this expression (other than its type).</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getSystemId()">getSystemId</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the systemId of the module containing the expression</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#getSystemId(long)">getSystemId</A></B>(long&nbsp;locationId)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the URI of the document or module containing a particular location</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#hasLoopingSubexpression(net.sf.saxon.expr.Expression)">hasLoopingSubexpression</A></B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;child)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Given an expression that is an immediate child of this expression, test whether
 the evaluation of the parent expression causes the child expression to be
 evaluated repeatedly</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#hasVariableBinding(net.sf.saxon.expr.Binding)">hasVariableBinding</A></B>(<A HREF="../../../../net/sf/saxon/expr/Binding.html" title="interface in net.sf.saxon.expr">Binding</A>&nbsp;binding)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#implementsStaticTypeCheck()">implementsStaticTypeCheck</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine whether this expression implements its own method for static type checking</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#isSubtreeExpression()">isSubtreeExpression</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine whether the expression can be evaluated without reference to the part of the context
 document outside the subtree rooted at the context node.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#isUpdatingExpression()">isUpdatingExpression</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine whether this is an updating expression as defined in the XQuery update specification</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#isVacuousExpression()">isVacuousExpression</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine whether this is a vacuous expression as defined in the XQuery update specification</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/om/SequenceIterator.html" title="interface in net.sf.saxon.om">SequenceIterator</A>&lt;? extends <A HREF="../../../../net/sf/saxon/om/Item.html" title="interface in net.sf.saxon.om">Item</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#iterate(net.sf.saxon.expr.XPathContext)">iterate</A></B>(<A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return an Iterator to iterate over the values of a sequence.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/evpull/EventIterator.html" title="interface in net.sf.saxon.evpull">EventIterator</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#iterateEvents(net.sf.saxon.expr.XPathContext)">iterateEvents</A></B>(<A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Deliver the result of the expression as a sequence of events.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/6/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</A>&lt;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#iterateSameFocusSubExpressions()">iterateSameFocusSubExpressions</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the immediate sub-expressions of this expression that are evaluated with the
 same focus (context item, position, and size) as the parent expression.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/6/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</A>&lt;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#iterateSubExpressions()">iterateSubExpressions</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the immediate sub-expressions of this expression.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#markTailFunctionCalls(net.sf.saxon.om.StructuredQName, int)">markTailFunctionCalls</A></B>(<A HREF="../../../../net/sf/saxon/om/StructuredQName.html" title="class in net.sf.saxon.om">StructuredQName</A>&nbsp;qName,
                      int&nbsp;arity)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mark tail-recursive calls on stylesheet functions.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#optimize(net.sf.saxon.expr.parser.ExpressionVisitor, net.sf.saxon.expr.parser.ExpressionVisitor.ContextItemType)">optimize</A></B>(<A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor</A>&nbsp;visitor,
         <A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.ContextItemType.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor.ContextItemType</A>&nbsp;contextItemType)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Perform optimisation of an expression and its subexpressions.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#process(net.sf.saxon.expr.XPathContext)">process</A></B>(<A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Process the instruction, without returning any tail calls</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#promote(net.sf.saxon.expr.parser.PromotionOffer, net.sf.saxon.expr.Expression)">promote</A></B>(<A HREF="../../../../net/sf/saxon/expr/parser/PromotionOffer.html" title="class in net.sf.saxon.expr.parser">PromotionOffer</A>&nbsp;offer,
        <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;parent)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Offer promotion for this subexpression.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#replaceSubExpression(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Expression)">replaceSubExpression</A></B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;original,
                     <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;replacement)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Replace one subexpression by a replacement subexpression</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#resetLocalStaticProperties()">resetLocalStaticProperties</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reset the static properties of the expression to -1, so that they have to be recomputed
 next time they are used.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#setContainer(net.sf.saxon.expr.Container)">setContainer</A></B>(<A HREF="../../../../net/sf/saxon/expr/Container.html" title="interface in net.sf.saxon.expr">Container</A>&nbsp;container)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mark an expression as being in a given Container.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#setEvaluationMethod(int)">setEvaluationMethod</A></B>(int&nbsp;method)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#setFiltered(boolean)">setFiltered</A></B>(boolean&nbsp;filtered)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mark an expression as filtered: that is, it appears as the base expression in a filter expression.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#setFlattened(boolean)">setFlattened</A></B>(boolean&nbsp;flattened)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mark an expression as being "flattened".</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#setLocationId(int)">setLocationId</A></B>(int&nbsp;id)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the location ID on an expression.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#simplify(net.sf.saxon.expr.parser.ExpressionVisitor)">simplify</A></B>(<A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor</A>&nbsp;visitor)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Simplify an expression.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#staticTypeCheck(net.sf.saxon.value.SequenceType, boolean, net.sf.saxon.expr.parser.RoleLocator, net.sf.saxon.TypeCheckerEnvironment)">staticTypeCheck</A></B>(<A HREF="../../../../net/sf/saxon/value/SequenceType.html" title="class in net.sf.saxon.value">SequenceType</A>&nbsp;req,
                boolean&nbsp;backwardsCompatible,
                <A HREF="../../../../net/sf/saxon/expr/parser/RoleLocator.html" title="class in net.sf.saxon.expr.parser">RoleLocator</A>&nbsp;role,
                <A HREF="../../../../net/sf/saxon/TypeCheckerEnvironment.html" title="interface in net.sf.saxon">TypeCheckerEnvironment</A>&nbsp;visitor)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Static type checking of some expressions is delegated to the expression itself, by calling
 this method.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#suppressValidation(int)">suppressValidation</A></B>(int&nbsp;parentValidationMode)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Suppress validation on contained element constructors, on the grounds that the parent element
 is already performing validation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#toString()">toString</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The toString() method for an expression attempts to give a representation of the expression
 in an XPath-like form, but there is no guarantee that the syntax will actually be true XPath.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#typeCheck(net.sf.saxon.expr.parser.ExpressionVisitor, net.sf.saxon.expr.parser.ExpressionVisitor.ContextItemType)">typeCheck</A></B>(<A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor</A>&nbsp;visitor,
          <A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.ContextItemType.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor.ContextItemType</A>&nbsp;contextItemType)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Perform type checking of an expression and its subexpressions.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/expr/Expression.html#typeError(java.lang.String, java.lang.String, net.sf.saxon.expr.XPathContext)">typeError</A></B>(<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;message,
          <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;errorCode,
          <A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method used in subclasses to signal a runtime type error</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ FIELD DETAIL =========== -->

<A NAME="field_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Field Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="EVALUATE_METHOD"><!-- --></A><H3>
EVALUATE_METHOD</H3>
<PRE>
public static final int <B>EVALUATE_METHOD</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#net.sf.saxon.expr.Expression.EVALUATE_METHOD">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="ITERATE_METHOD"><!-- --></A><H3>
ITERATE_METHOD</H3>
<PRE>
public static final int <B>ITERATE_METHOD</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#net.sf.saxon.expr.Expression.ITERATE_METHOD">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="PROCESS_METHOD"><!-- --></A><H3>
PROCESS_METHOD</H3>
<PRE>
public static final int <B>PROCESS_METHOD</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#net.sf.saxon.expr.Expression.PROCESS_METHOD">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="WATCH_METHOD"><!-- --></A><H3>
WATCH_METHOD</H3>
<PRE>
public static final int <B>WATCH_METHOD</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#net.sf.saxon.expr.Expression.WATCH_METHOD">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="ITEM_FEED_METHOD"><!-- --></A><H3>
ITEM_FEED_METHOD</H3>
<PRE>
public static final int <B>ITEM_FEED_METHOD</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#net.sf.saxon.expr.Expression.ITEM_FEED_METHOD">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="EVENT_FEED_METHOD"><!-- --></A><H3>
EVENT_FEED_METHOD</H3>
<PRE>
public static final int <B>EVENT_FEED_METHOD</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#net.sf.saxon.expr.Expression.EVENT_FEED_METHOD">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="PUSH_SELECTION"><!-- --></A><H3>
PUSH_SELECTION</H3>
<PRE>
public static final int <B>PUSH_SELECTION</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#net.sf.saxon.expr.Expression.PUSH_SELECTION">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="EFFECTIVE_BOOLEAN_VALUE"><!-- --></A><H3>
EFFECTIVE_BOOLEAN_VALUE</H3>
<PRE>
public static final int <B>EFFECTIVE_BOOLEAN_VALUE</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#net.sf.saxon.expr.Expression.EFFECTIVE_BOOLEAN_VALUE">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="staticProperties"><!-- --></A><H3>
staticProperties</H3>
<PRE>
protected int <B>staticProperties</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="locationId"><!-- --></A><H3>
locationId</H3>
<PRE>
protected int <B>locationId</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="UNBOUNDED_LOWER"><!-- --></A><H3>
UNBOUNDED_LOWER</H3>
<PRE>
public static final <A HREF="../../../../net/sf/saxon/value/IntegerValue.html" title="class in net.sf.saxon.value">IntegerValue</A> <B>UNBOUNDED_LOWER</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="UNBOUNDED_UPPER"><!-- --></A><H3>
UNBOUNDED_UPPER</H3>
<PRE>
public static final <A HREF="../../../../net/sf/saxon/value/IntegerValue.html" title="class in net.sf.saxon.value">IntegerValue</A> <B>UNBOUNDED_UPPER</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="MAX_STRING_LENGTH"><!-- --></A><H3>
MAX_STRING_LENGTH</H3>
<PRE>
public static final <A HREF="../../../../net/sf/saxon/value/IntegerValue.html" title="class in net.sf.saxon.value">IntegerValue</A> <B>MAX_STRING_LENGTH</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="MAX_SEQUENCE_LENGTH"><!-- --></A><H3>
MAX_SEQUENCE_LENGTH</H3>
<PRE>
public static final <A HREF="../../../../net/sf/saxon/value/IntegerValue.html" title="class in net.sf.saxon.value">IntegerValue</A> <B>MAX_SEQUENCE_LENGTH</B></PRE>
<DL>
<DL>
</DL>
</DL>

<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="Expression()"><!-- --></A><H3>
Expression</H3>
<PRE>
public <B>Expression</B>()</PRE>
<DL>
</DL>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="getExpressionName()"><!-- --></A><H3>
getExpressionName</H3>
<PRE>
public <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getExpressionName</B>()</PRE>
<DL>
<DD>Get a name identifying the kind of expression, in terms meaningful to a user.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>a name identifying the kind of expression, in terms meaningful to a user.
 The name will always be in the form of a lexical XML QName, and should match the name used
 in explain() output displaying the expression.</DL>
</DD>
</DL>
<HR>

<A NAME="getImplementationMethod()"><!-- --></A><H3>
getImplementationMethod</H3>
<PRE>
public int <B>getImplementationMethod</B>()</PRE>
<DL>
<DD>An implementation of Expression must provide at least one of the methods evaluateItem(), iterate(), or process().
 This method indicates which of these methods is provided directly. The other methods will always be available
 indirectly, using an implementation that relies on one of the other methods.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the implementation method, for example <A HREF="../../../../net/sf/saxon/expr/Expression.html#ITERATE_METHOD"><CODE>ITERATE_METHOD</CODE></A> or <A HREF="../../../../net/sf/saxon/expr/Expression.html#EVALUATE_METHOD"><CODE>EVALUATE_METHOD</CODE></A> or
 <A HREF="../../../../net/sf/saxon/expr/Expression.html#PROCESS_METHOD"><CODE>PROCESS_METHOD</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="implementsStaticTypeCheck()"><!-- --></A><H3>
implementsStaticTypeCheck</H3>
<PRE>
public boolean <B>implementsStaticTypeCheck</B>()</PRE>
<DL>
<DD>Determine whether this expression implements its own method for static type checking
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>true if this expression has a non-trivial implementation of the staticTypeCheck()
 method</DL>
</DD>
</DL>
<HR>

<A NAME="hasVariableBinding(net.sf.saxon.expr.Binding)"><!-- --></A><H3>
hasVariableBinding</H3>
<PRE>
public boolean <B>hasVariableBinding</B>(<A HREF="../../../../net/sf/saxon/expr/Binding.html" title="interface in net.sf.saxon.expr">Binding</A>&nbsp;binding)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="simplify(net.sf.saxon.expr.parser.ExpressionVisitor)"><!-- --></A><H3>
simplify</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>simplify</B>(<A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor</A>&nbsp;visitor)
                    throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Simplify an expression. This performs any static optimization (by rewriting the expression
 as a different expression). The default implementation does nothing.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>visitor</CODE> - an expression visitor
<DT><B>Returns:</B><DD>the simplified expression
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - if an error is discovered during expression
     rewriting</DL>
</DD>
</DL>
<HR>

<A NAME="typeCheck(net.sf.saxon.expr.parser.ExpressionVisitor, net.sf.saxon.expr.parser.ExpressionVisitor.ContextItemType)"><!-- --></A><H3>
typeCheck</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>typeCheck</B>(<A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor</A>&nbsp;visitor,
                            <A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.ContextItemType.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor.ContextItemType</A>&nbsp;contextItemType)
                     throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Perform type checking of an expression and its subexpressions. This is the second phase of
 static optimization.

 <p>This checks statically that the operands of the expression have
 the correct type; if necessary it generates code to do run-time type checking or type
 conversion. A static type error is reported only if execution cannot possibly succeed, that
 is, if a run-time type error is inevitable. The call may return a modified form of the expression.</p>

 <p>This method is called after all references to functions and variables have been resolved
 to the declaration of the function or variable. However, the types of such functions and
 variables may not be accurately known if they have not been explicitly declared.</p>

 <p>If the implementation returns a value other than "this", then it is required to ensure that
 the location information in the returned expression have been set up correctly.
 It should not rely on the caller to do this, although for historical reasons many callers do so.</p>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>visitor</CODE> - an expression visitor<DD><CODE>contextItemType</CODE> - the static type of "." at the point where this expression is invoked.
 The parameter is set to null if it is known statically that the context item will be undefined.
 If the type of the context item is not known statically, the argument is set to
 <A HREF="../../../../net/sf/saxon/type/Type.html#ITEM_TYPE"><CODE>Type.ITEM_TYPE</CODE></A>
<DT><B>Returns:</B><DD>the original expression, rewritten to perform necessary run-time type checks,
 and to perform other type-related optimizations
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - if an error is discovered during this phase
     (typically a type error)</DL>
</DD>
</DL>
<HR>

<A NAME="staticTypeCheck(net.sf.saxon.value.SequenceType, boolean, net.sf.saxon.expr.parser.RoleLocator, net.sf.saxon.TypeCheckerEnvironment)"><!-- --></A><H3>
staticTypeCheck</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>staticTypeCheck</B>(<A HREF="../../../../net/sf/saxon/value/SequenceType.html" title="class in net.sf.saxon.value">SequenceType</A>&nbsp;req,
                                  boolean&nbsp;backwardsCompatible,
                                  <A HREF="../../../../net/sf/saxon/expr/parser/RoleLocator.html" title="class in net.sf.saxon.expr.parser">RoleLocator</A>&nbsp;role,
                                  <A HREF="../../../../net/sf/saxon/TypeCheckerEnvironment.html" title="interface in net.sf.saxon">TypeCheckerEnvironment</A>&nbsp;visitor)
                           throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Static type checking of some expressions is delegated to the expression itself, by calling
 this method. The default implementation of the method throws UnsupportedOperationException.
 If there is a non-default implementation, then implementsStaticTypeCheck() will return true
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>req</CODE> - the required type<DD><CODE>backwardsCompatible</CODE> - true if backwards compatibility mode applies<DD><CODE>role</CODE> - the role of the expression in relation to the required type<DD><CODE>visitor</CODE> - an expression visitor
<DT><B>Returns:</B><DD>the expression after type checking (perhaps augmented with dynamic type checking code)
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - if failures occur, for example if the static type of one branch of the conditional
 is incompatible with the required type</DL>
</DD>
</DL>
<HR>

<A NAME="optimize(net.sf.saxon.expr.parser.ExpressionVisitor, net.sf.saxon.expr.parser.ExpressionVisitor.ContextItemType)"><!-- --></A><H3>
optimize</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>optimize</B>(<A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor</A>&nbsp;visitor,
                           <A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.ContextItemType.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor.ContextItemType</A>&nbsp;contextItemType)
                    throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Perform optimisation of an expression and its subexpressions. This is the third and final
 phase of static optimization.

 <p>This method is called after all references to functions and variables have been resolved
 to the declaration of the function or variable, and after all type checking has been done.</p>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>visitor</CODE> - an expression visitor<DD><CODE>contextItemType</CODE> - the static type of "." at the point where this expression is invoked.
 The parameter is set to null if it is known statically that the context item will be undefined.
 If the type of the context item is not known statically, the argument is set to
 <A HREF="../../../../net/sf/saxon/type/Type.html#ITEM_TYPE"><CODE>Type.ITEM_TYPE</CODE></A>
<DT><B>Returns:</B><DD>the original expression, rewritten if appropriate to optimize execution
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - if an error is discovered during this phase
     (typically a type error)</DL>
</DD>
</DL>
<HR>

<A NAME="promote(net.sf.saxon.expr.parser.PromotionOffer, net.sf.saxon.expr.Expression)"><!-- --></A><H3>
promote</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>promote</B>(<A HREF="../../../../net/sf/saxon/expr/parser/PromotionOffer.html" title="class in net.sf.saxon.expr.parser">PromotionOffer</A>&nbsp;offer,
                          <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;parent)
                   throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Offer promotion for this subexpression. The offer will be accepted if the subexpression
 is not dependent on the factors (e.g. the context item) identified in the PromotionOffer.
 By default the offer is not accepted - this is appropriate in the case of simple expressions
 such as constant values and variable references where promotion would give no performance
 advantage. This method is always called at compile time.

 <p>This method must be overridden for any Expression that has subexpressions.</p>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>offer</CODE> - details of the offer, for example the offer to move
     expressions that don't depend on the context to an outer level in
     the containing expression<DD><CODE>parent</CODE> - the containing expression in the expression tree
<DT><B>Returns:</B><DD>if the offer is not accepted, return this expression unchanged.
      Otherwise return the result of rewriting the expression to promote
      this subexpression
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - if any error is detected</DL>
</DD>
</DL>
<HR>

<A NAME="getSpecialProperties()"><!-- --></A><H3>
getSpecialProperties</H3>
<PRE>
public final int <B>getSpecialProperties</B>()</PRE>
<DL>
<DD>Get the static properties of this expression (other than its type). The result is
 bit-signficant. These properties are used for optimizations. In general, if
 property bit is set, it is true, but if it is unset, the value is unknown.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>a set of flags indicating static properties of this expression</DL>
</DD>
</DL>
<HR>

<A NAME="getCardinality()"><!-- --></A><H3>
getCardinality</H3>
<PRE>
public int <B>getCardinality</B>()</PRE>
<DL>
<DD>Determine the static cardinality of the expression. This establishes how many items
 there will be in the result of the expression, at compile time (i.e., without
 actually evaluating the result.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>one of the values Cardinality.ONE_OR_MORE,
     Cardinality.ZERO_OR_MORE, Cardinality.EXACTLY_ONE,
     Cardinality.ZERO_OR_ONE, Cardinality.EMPTY. This default
     implementation returns ZERO_OR_MORE (which effectively gives no
     information).</DL>
</DD>
</DL>
<HR>

<A NAME="getItemType(net.sf.saxon.type.TypeHierarchy)"><!-- --></A><H3>
getItemType</H3>
<PRE>
public abstract <A HREF="../../../../net/sf/saxon/type/ItemType.html" title="interface in net.sf.saxon.type">ItemType</A> <B>getItemType</B>(<A HREF="../../../../net/sf/saxon/type/TypeHierarchy.html" title="class in net.sf.saxon.type">TypeHierarchy</A>&nbsp;th)</PRE>
<DL>
<DD>Determine the data type of the expression, if possible. All expression return
 sequences, in general; this method determines the type of the items within the
 sequence, assuming that (a) this is known in advance, and (b) it is the same for
 all items in the sequence.

 <p>This method should always return a result, though it may be the best approximation
 that is available at the time.</p>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>th</CODE> - the type hierarchy cache
<DT><B>Returns:</B><DD>a value such as Type.STRING, Type.BOOLEAN, Type.NUMBER,
     Type.NODE, or Type.ITEM (meaning not known at compile time)</DL>
</DD>
</DL>
<HR>

<A NAME="getDependencies()"><!-- --></A><H3>
getDependencies</H3>
<PRE>
public int <B>getDependencies</B>()</PRE>
<DL>
<DD>Determine which aspects of the context the expression depends on. The result is
 a bitwise-or'ed value composed from constants such as XPathContext.VARIABLES and
 XPathContext.CURRENT_NODE. The default implementation combines the intrinsic
 dependencies of this expression with the dependencies of the subexpressions,
 computed recursively. This is overridden for expressions such as FilterExpression
 where a subexpression's dependencies are not necessarily inherited by the parent
 expression.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>a set of bit-significant flags identifying the dependencies of
     the expression</DL>
</DD>
</DL>
<HR>

<A NAME="getIntegerBounds()"><!-- --></A><H3>
getIntegerBounds</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/value/IntegerValue.html" title="class in net.sf.saxon.value">IntegerValue</A>[] <B>getIntegerBounds</B>()</PRE>
<DL>
<DD>For an expression that returns an integer or a sequence of integers, get
 a lower and upper bound on the values of the integers that may be returned, from
 static analysis. The default implementation returns null, meaning "unknown" or
 "not applicable". Other implementations return an array of two IntegerValue objects,
 representing the lower and upper bounds respectively. The values
 UNBOUNDED_LOWER and UNBOUNDED_UPPER are used by convention to indicate that
 the value may be arbitrarily large. The values MAX_STRING_LENGTH and MAX_SEQUENCE_LENGTH
 are used to indicate values limited by the size of a string or the size of a sequence.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the lower and upper bounds of integer values in the result, or null to indicate
 unknown or not applicable.</DL>
</DD>
</DL>
<HR>

<A NAME="iterateSubExpressions()"><!-- --></A><H3>
iterateSubExpressions</H3>
<PRE>
public <A HREF="http://download.oracle.com/javase/6/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</A>&lt;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&gt; <B>iterateSubExpressions</B>()</PRE>
<DL>
<DD>Get the immediate sub-expressions of this expression. Default implementation
 returns a zero-length array, appropriate for an expression that has no
 sub-expressions.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>an iterator containing the sub-expressions of this expression</DL>
</DD>
</DL>
<HR>

<A NAME="iterateSameFocusSubExpressions()"><!-- --></A><H3>
iterateSameFocusSubExpressions</H3>
<PRE>
public <A HREF="http://download.oracle.com/javase/6/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</A>&lt;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&gt; <B>iterateSameFocusSubExpressions</B>()</PRE>
<DL>
<DD>Get the immediate sub-expressions of this expression that are evaluated with the
 same focus (context item, position, and size) as the parent expression. The default
 implementation returns all the sub-expressions of this expression
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>an iterator containing those sub-expressions of this expression that are
 evaluated with the same focus as the parent expression</DL>
</DD>
</DL>
<HR>

<A NAME="hasLoopingSubexpression(net.sf.saxon.expr.Expression)"><!-- --></A><H3>
hasLoopingSubexpression</H3>
<PRE>
public boolean <B>hasLoopingSubexpression</B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;child)</PRE>
<DL>
<DD>Given an expression that is an immediate child of this expression, test whether
 the evaluation of the parent expression causes the child expression to be
 evaluated repeatedly
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>child</CODE> - the immediate subexpression
<DT><B>Returns:</B><DD>true if the child expression is evaluated repeatedly</DL>
</DD>
</DL>
<HR>

<A NAME="setFlattened(boolean)"><!-- --></A><H3>
setFlattened</H3>
<PRE>
public void <B>setFlattened</B>(boolean&nbsp;flattened)</PRE>
<DL>
<DD>Mark an expression as being "flattened". This is a collective term that includes extracting the
 string value or typed value, or operations such as simple value construction that concatenate text
 nodes before atomizing. The implication of all of these is that although the expression might
 return nodes, the identity of the nodes has no significance. This is called during type checking
 of the parent expression.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>flattened</CODE> - set to true if the result of the expression is atomized or otherwise turned into
 an atomic value</DL>
</DD>
</DL>
<HR>

<A NAME="setFiltered(boolean)"><!-- --></A><H3>
setFiltered</H3>
<PRE>
public void <B>setFiltered</B>(boolean&nbsp;filtered)</PRE>
<DL>
<DD>Mark an expression as filtered: that is, it appears as the base expression in a filter expression.
 This notification currently has no effect except when the expression is a variable reference.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>filtered</CODE> - if true, marks this expression as the base of a filter expression</DL>
</DD>
</DL>
<HR>

<A NAME="evaluateItem(net.sf.saxon.expr.XPathContext)"><!-- --></A><H3>
evaluateItem</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/om/Item.html" title="interface in net.sf.saxon.om">Item</A> <B>evaluateItem</B>(<A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)
                  throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Evaluate an expression as a single item. This always returns either a single Item or
 null (denoting the empty sequence). No conversion is done. This method should not be
 used unless the static type of the expression is a subtype of "item" or "item?": that is,
 it should not be called if the expression may return a sequence. There is no guarantee that
 this condition will be detected.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>context</CODE> - The context in which the expression is to be evaluated
<DT><B>Returns:</B><DD>the node or atomic value that results from evaluating the
     expression; or null to indicate that the result is an empty
     sequence
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - if any dynamic error occurs evaluating the
     expression</DL>
</DD>
</DL>
<HR>

<A NAME="iterate(net.sf.saxon.expr.XPathContext)"><!-- --></A><H3>
iterate</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/om/SequenceIterator.html" title="interface in net.sf.saxon.om">SequenceIterator</A>&lt;? extends <A HREF="../../../../net/sf/saxon/om/Item.html" title="interface in net.sf.saxon.om">Item</A>&gt; <B>iterate</B>(<A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)
                                         throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Return an Iterator to iterate over the values of a sequence. The value of every
 expression can be regarded as a sequence, so this method is supported for all
 expressions. This default implementation handles iteration for expressions that
 return singleton values: for non-singleton expressions, the subclass must
 provide its own implementation.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>context</CODE> - supplies the context for evaluation
<DT><B>Returns:</B><DD>a SequenceIterator that can be used to iterate over the result
     of the expression
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - if any dynamic error occurs evaluating the
     expression</DL>
</DD>
</DL>
<HR>

<A NAME="iterateEvents(net.sf.saxon.expr.XPathContext)"><!-- --></A><H3>
iterateEvents</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/evpull/EventIterator.html" title="interface in net.sf.saxon.evpull">EventIterator</A> <B>iterateEvents</B>(<A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)
                            throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Deliver the result of the expression as a sequence of events.

 <p>The events (of class <A HREF="../../../../net/sf/saxon/evpull/PullEvent.html" title="interface in net.sf.saxon.evpull"><CODE>PullEvent</CODE></A>) are either complete
 items, or one of startElement, endElement, startDocument, or endDocument, known
 as semi-nodes. The stream of events may also include a nested EventIterator.
 If a start-end pair exists in the sequence, then the events between
 this pair represent the content of the document or element. The content sequence will
 have been processed to the extent that any attribute and namespace nodes in the
 content sequence will have been merged into the startElement event. Namespace fixup
 will have been performed: that is, unique prefixes will have been allocated to element
 and attribute nodes, and all namespaces will be declared by means of a namespace node
 in the startElement event or in an outer startElement forming part of the sequence.
 However, duplicate namespaces may appear in the sequence.</p>
 <p>The content of an element or document may include adjacent or zero-length text nodes,
 atomic values, and nodes represented as nodes rather than broken down into events.</p>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>context</CODE> - The dynamic evaluation context
<DT><B>Returns:</B><DD>the result of the expression as an iterator over a sequence of PullEvent objects
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - if a dynamic error occurs during expression evaluation</DL>
</DD>
</DL>
<HR>

<A NAME="effectiveBooleanValue(net.sf.saxon.expr.XPathContext)"><!-- --></A><H3>
effectiveBooleanValue</H3>
<PRE>
public boolean <B>effectiveBooleanValue</B>(<A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)
                              throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Get the effective boolean value of the expression. This returns false if the value
 is the empty sequence, a zero-length string, a number equal to zero, or the boolean
 false. Otherwise it returns true.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>context</CODE> - The context in which the expression is to be evaluated
<DT><B>Returns:</B><DD>the effective boolean value
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - if any dynamic error occurs evaluating the
     expression</DL>
</DD>
</DL>
<HR>

<A NAME="evaluateAsString(net.sf.saxon.expr.XPathContext)"><!-- --></A><H3>
evaluateAsString</H3>
<PRE>
public <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/CharSequence.html?is-external=true" title="class or interface in java.lang">CharSequence</A> <B>evaluateAsString</B>(<A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)
                              throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Evaluate an expression as a String. This function must only be called in contexts
 where it is known that the expression will return a single string (or where an empty sequence
 is to be treated as a zero-length string). Implementations should not attempt to convert
 the result to a string, other than converting () to "". This method is used mainly to
 evaluate expressions produced by compiling an attribute value template.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>context</CODE> - The context in which the expression is to be evaluated
<DT><B>Returns:</B><DD>the value of the expression, evaluated in the current context.
     The expression must return a string or (); if the value of the
     expression is (), this method returns "".
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - if any dynamic error occurs evaluating the
     expression
<DD><CODE><A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</A></CODE> - if the result type of the
     expression is not xs:string?</DL>
</DD>
</DL>
<HR>

<A NAME="process(net.sf.saxon.expr.XPathContext)"><!-- --></A><H3>
process</H3>
<PRE>
public void <B>process</B>(<A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)
             throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Process the instruction, without returning any tail calls
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>context</CODE> - The dynamic context, giving access to the current node,
 the current variables, etc.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - if a dynamic error occurs</DL>
</DD>
</DL>
<HR>

<A NAME="evaluatePendingUpdates(net.sf.saxon.expr.XPathContext, net.sf.saxon.expr.PendingUpdateList)"><!-- --></A><H3>
evaluatePendingUpdates</H3>
<PRE>
public void <B>evaluatePendingUpdates</B>(<A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context,
                                   <A HREF="../../../../net/sf/saxon/expr/PendingUpdateList.html" title="interface in net.sf.saxon.expr">PendingUpdateList</A>&nbsp;pul)
                            throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Evaluate an updating expression, adding the results to a Pending Update List.
 The default implementation of this method, which is used for non-updating expressions,
 throws an UnsupportedOperationException
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>context</CODE> - the XPath dynamic evaluation context<DD><CODE>pul</CODE> - the pending update list to which the results should be written
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - if evaluation fails
<DD><CODE><A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the expression is not an updating expression</DL>
</DD>
</DL>
<HR>

<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
public <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>The toString() method for an expression attempts to give a representation of the expression
 in an XPath-like form, but there is no guarantee that the syntax will actually be true XPath.
 In the case of XSLT instructions, the toString() method gives an abstracted view of the syntax
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>a representation of the expression as a string</DL>
</DD>
</DL>
<HR>

<A NAME="explain(net.sf.saxon.trace.ExpressionPresenter)"><!-- --></A><H3>
explain</H3>
<PRE>
public abstract void <B>explain</B>(<A HREF="../../../../net/sf/saxon/trace/ExpressionPresenter.html" title="class in net.sf.saxon.trace">ExpressionPresenter</A>&nbsp;out)</PRE>
<DL>
<DD>Diagnostic print of expression structure. The abstract expression tree
 is written to the supplied output destination.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>out</CODE> - the expression presenter used to display the structure</DL>
</DD>
</DL>
<HR>

<A NAME="explain(java.io.OutputStream)"><!-- --></A><H3>
explain</H3>
<PRE>
public final void <B>explain</B>(<A HREF="http://download.oracle.com/javase/6/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</A>&nbsp;out)</PRE>
<DL>
<DD>Diagnostic print of expression structure. The abstract expression tree
 is written to the supplied outputstream.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>out</CODE> - the expression presenter used to display the structure</DL>
</DD>
</DL>
<HR>

<A NAME="checkPermittedContents(net.sf.saxon.type.SchemaType, net.sf.saxon.expr.StaticContext, boolean)"><!-- --></A><H3>
checkPermittedContents</H3>
<PRE>
public void <B>checkPermittedContents</B>(<A HREF="../../../../net/sf/saxon/type/SchemaType.html" title="interface in net.sf.saxon.type">SchemaType</A>&nbsp;parentType,
                                   <A HREF="../../../../net/sf/saxon/expr/StaticContext.html" title="interface in net.sf.saxon.expr">StaticContext</A>&nbsp;env,
                                   boolean&nbsp;whole)
                            throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Check that any elements and attributes constructed or returned by this expression are acceptable
 in the content model of a given complex type. It's always OK to say yes, since the check will be
 repeated at run-time. The process of checking element and attribute constructors against the content
 model of a complex type also registers the type of content expected of those constructors, so the
 static validation can continue recursively.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>parentType</CODE> - the "given complex type": the method is checking that the nodes returned by this
 expression are acceptable members of the content model of this type<DD><CODE>env</CODE> - the static context<DD><CODE>whole</CODE> - if true, we want to check that the value of this expression satisfies the content model
 as a whole; if false we want to check that the value of the expression is acceptable as one part
 of the content
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - if the value delivered by this expression cannot be part of the content model
 of the given type</DL>
</DD>
</DL>
<HR>

<A NAME="setContainer(net.sf.saxon.expr.Container)"><!-- --></A><H3>
setContainer</H3>
<PRE>
public void <B>setContainer</B>(<A HREF="../../../../net/sf/saxon/expr/Container.html" title="interface in net.sf.saxon.expr">Container</A>&nbsp;container)</PRE>
<DL>
<DD>Mark an expression as being in a given Container. This link is used primarily for diagnostics:
 the container links to the location map held in the executable.

 <p>This affects the expression and all its subexpressions. Any subexpressions that are not in the
 same container are marked with the new container, and this proceeds recursively. However, any
 subexpression that is already in the correct container is not modified.</p>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>container</CODE> - The container of this expression.</DL>
</DD>
</DL>
<HR>

<A NAME="getContainer()"><!-- --></A><H3>
getContainer</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Container.html" title="interface in net.sf.saxon.expr">Container</A> <B>getContainer</B>()</PRE>
<DL>
<DD>Get the container in which this expression is located. This will usually be a top-level construct
 such as a function or global variable, and XSLT template, or an XQueryExpression. In the case of
 free-standing XPath expressions it will be the StaticContext object
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the expression's container</DL>
</DD>
</DL>
<HR>

<A NAME="adoptChildExpression(net.sf.saxon.expr.Expression)"><!-- --></A><H3>
adoptChildExpression</H3>
<PRE>
public void <B>adoptChildExpression</B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;child)</PRE>
<DL>
<DD>Set up a parent-child relationship between this expression and a given child expression.
 <p>
 Note: many calls on this method are now redundant, but are kept in place for "belt-and-braces"
 reasons. The rule is that an implementation of simplify(), typeCheck(), or optimize() that returns
 a value other than "this" is required to set the location information and parent pointer in the new
 child expression. However, in the past this was often left to the caller, which did it by calling
 this method, either unconditionally on return from one of these methods, or after testing that the
 returned object was not the same as the original.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>child</CODE> - the child expression</DL>
</DD>
</DL>
<HR>

<A NAME="setLocationId(int)"><!-- --></A><H3>
setLocationId</H3>
<PRE>
public void <B>setLocationId</B>(int&nbsp;id)</PRE>
<DL>
<DD>Set the location ID on an expression.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - the location id</DL>
</DD>
</DL>
<HR>

<A NAME="getLocationId()"><!-- --></A><H3>
getLocationId</H3>
<PRE>
public final int <B>getLocationId</B>()</PRE>
<DL>
<DD>Get the location ID of the expression
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>a location identifier, which can be turned into real
 location information by reference to a location provider</DL>
</DD>
</DL>
<HR>

<A NAME="getLineNumber()"><!-- --></A><H3>
getLineNumber</H3>
<PRE>
public int <B>getLineNumber</B>()</PRE>
<DL>
<DD>Get the line number of the expression
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="http://download.oracle.com/javase/6/docs/api/javax/xml/transform/SourceLocator.html?is-external=true#getLineNumber()" title="class or interface in javax.xml.transform">getLineNumber</A></CODE> in interface <CODE><A HREF="http://download.oracle.com/javase/6/docs/api/javax/xml/transform/SourceLocator.html?is-external=true" title="class or interface in javax.xml.transform">SourceLocator</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../../net/sf/saxon/trace/InstructionInfo.html#getLineNumber()">getLineNumber</A></CODE> in interface <CODE><A HREF="../../../../net/sf/saxon/trace/InstructionInfo.html" title="interface in net.sf.saxon.trace">InstructionInfo</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://download.oracle.com/javase/6/docs/api/org/xml/sax/Locator.html?is-external=true#getLineNumber()" title="class or interface in org.xml.sax">getLineNumber</A></CODE> in interface <CODE><A HREF="http://download.oracle.com/javase/6/docs/api/org/xml/sax/Locator.html?is-external=true" title="class or interface in org.xml.sax">Locator</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the line number of the expression within the containing module</DL>
</DD>
</DL>
<HR>

<A NAME="getColumnNumber()"><!-- --></A><H3>
getColumnNumber</H3>
<PRE>
public int <B>getColumnNumber</B>()</PRE>
<DL>
<DD>Get the column number of the expression
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="http://download.oracle.com/javase/6/docs/api/javax/xml/transform/SourceLocator.html?is-external=true#getColumnNumber()" title="class or interface in javax.xml.transform">getColumnNumber</A></CODE> in interface <CODE><A HREF="http://download.oracle.com/javase/6/docs/api/javax/xml/transform/SourceLocator.html?is-external=true" title="class or interface in javax.xml.transform">SourceLocator</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://download.oracle.com/javase/6/docs/api/org/xml/sax/Locator.html?is-external=true#getColumnNumber()" title="class or interface in org.xml.sax">getColumnNumber</A></CODE> in interface <CODE><A HREF="http://download.oracle.com/javase/6/docs/api/org/xml/sax/Locator.html?is-external=true" title="class or interface in org.xml.sax">Locator</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getSystemId()"><!-- --></A><H3>
getSystemId</H3>
<PRE>
public <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getSystemId</B>()</PRE>
<DL>
<DD>Get the systemId of the module containing the expression
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="http://download.oracle.com/javase/6/docs/api/javax/xml/transform/SourceLocator.html?is-external=true#getSystemId()" title="class or interface in javax.xml.transform">getSystemId</A></CODE> in interface <CODE><A HREF="http://download.oracle.com/javase/6/docs/api/javax/xml/transform/SourceLocator.html?is-external=true" title="class or interface in javax.xml.transform">SourceLocator</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../../net/sf/saxon/trace/InstructionInfo.html#getSystemId()">getSystemId</A></CODE> in interface <CODE><A HREF="../../../../net/sf/saxon/trace/InstructionInfo.html" title="interface in net.sf.saxon.trace">InstructionInfo</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://download.oracle.com/javase/6/docs/api/org/xml/sax/Locator.html?is-external=true#getSystemId()" title="class or interface in org.xml.sax">getSystemId</A></CODE> in interface <CODE><A HREF="http://download.oracle.com/javase/6/docs/api/org/xml/sax/Locator.html?is-external=true" title="class or interface in org.xml.sax">Locator</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the URI of the containing module</DL>
</DD>
</DL>
<HR>

<A NAME="getPublicId()"><!-- --></A><H3>
getPublicId</H3>
<PRE>
public final <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getPublicId</B>()</PRE>
<DL>
<DD>Get the publicId of the module containing the expression (to satisfy the SourceLocator interface)
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="http://download.oracle.com/javase/6/docs/api/javax/xml/transform/SourceLocator.html?is-external=true#getPublicId()" title="class or interface in javax.xml.transform">getPublicId</A></CODE> in interface <CODE><A HREF="http://download.oracle.com/javase/6/docs/api/javax/xml/transform/SourceLocator.html?is-external=true" title="class or interface in javax.xml.transform">SourceLocator</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://download.oracle.com/javase/6/docs/api/org/xml/sax/Locator.html?is-external=true#getPublicId()" title="class or interface in org.xml.sax">getPublicId</A></CODE> in interface <CODE><A HREF="http://download.oracle.com/javase/6/docs/api/org/xml/sax/Locator.html?is-external=true" title="class or interface in org.xml.sax">Locator</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getExecutable()"><!-- --></A><H3>
getExecutable</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/instruct/Executable.html" title="class in net.sf.saxon.expr.instruct">Executable</A> <B>getExecutable</B>()</PRE>
<DL>
<DD>Get the executable containing this expression
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the containing Executable</DL>
</DD>
</DL>
<HR>

<A NAME="getLocationProvider()"><!-- --></A><H3>
getLocationProvider</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/event/LocationProvider.html" title="interface in net.sf.saxon.event">LocationProvider</A> <B>getLocationProvider</B>()</PRE>
<DL>
<DD>Get the LocationProvider allowing location identifiers to be resolved.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the LocationProvider used to turn the location id into real location information</DL>
</DD>
</DL>
<HR>

<A NAME="doPromotion(net.sf.saxon.expr.Expression, net.sf.saxon.expr.parser.PromotionOffer)"><!-- --></A><H3>
doPromotion</H3>
<PRE>
public final <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>doPromotion</B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;subexpression,
                                    <A HREF="../../../../net/sf/saxon/expr/parser/PromotionOffer.html" title="class in net.sf.saxon.expr.parser">PromotionOffer</A>&nbsp;offer)
                             throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Promote a subexpression if possible, and if the expression was changed, carry out housekeeping
 to reset the static properties and correct the parent pointers in the tree
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>subexpression</CODE> - the subexpression that is a candidate for promotion<DD><CODE>offer</CODE> - details of the promotion being considered @return the result of the promotion. This will be the current expression if no promotion
 actions have taken place
<DT><B>Returns:</B><DD>the expression that results from doing the promotion as requested. Returns null if and only
 if the supplied subexpression is null.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - if an error occurs</DL>
</DD>
</DL>
<HR>

<A NAME="computeStaticProperties()"><!-- --></A><H3>
computeStaticProperties</H3>
<PRE>
public final void <B>computeStaticProperties</B>()</PRE>
<DL>
<DD>Compute the static properties. This should only be done once for each
 expression.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="resetLocalStaticProperties()"><!-- --></A><H3>
resetLocalStaticProperties</H3>
<PRE>
public void <B>resetLocalStaticProperties</B>()</PRE>
<DL>
<DD>Reset the static properties of the expression to -1, so that they have to be recomputed
 next time they are used.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="computeCardinality()"><!-- --></A><H3>
computeCardinality</H3>
<PRE>
protected abstract int <B>computeCardinality</B>()</PRE>
<DL>
<DD>Compute the static cardinality of this expression
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the computed cardinality, as one of the values <A HREF="../../../../net/sf/saxon/expr/StaticProperty.html#ALLOWS_ZERO_OR_ONE"><CODE>StaticProperty.ALLOWS_ZERO_OR_ONE</CODE></A>,
 <A HREF="../../../../net/sf/saxon/expr/StaticProperty.html#EXACTLY_ONE"><CODE>StaticProperty.EXACTLY_ONE</CODE></A>, <A HREF="../../../../net/sf/saxon/expr/StaticProperty.html#ALLOWS_ONE_OR_MORE"><CODE>StaticProperty.ALLOWS_ONE_OR_MORE</CODE></A>,
 <A HREF="../../../../net/sf/saxon/expr/StaticProperty.html#ALLOWS_ZERO_OR_MORE"><CODE>StaticProperty.ALLOWS_ZERO_OR_MORE</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="computeSpecialProperties()"><!-- --></A><H3>
computeSpecialProperties</H3>
<PRE>
protected int <B>computeSpecialProperties</B>()</PRE>
<DL>
<DD>Compute the special properties of this expression. These properties are denoted by a bit-significant
 integer, possible values are in class <A HREF="../../../../net/sf/saxon/expr/StaticProperty.html" title="class in net.sf.saxon.expr"><CODE>StaticProperty</CODE></A>. The "special" properties are properties
 other than cardinality and dependencies, and most of them relate to properties of node sequences, for
 example whether the nodes are in document order.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the special properties, as a bit-significant integer</DL>
</DD>
</DL>
<HR>

<A NAME="computeDependencies()"><!-- --></A><H3>
computeDependencies</H3>
<PRE>
public int <B>computeDependencies</B>()</PRE>
<DL>
<DD>Compute the dependencies of an expression, as the union of the
 dependencies of its subexpressions. (This is overridden for path expressions
 and filter expressions, where the dependencies of a subexpression are not all
 propogated). This method should be called only once, to compute the dependencies;
 after that, getDependencies should be used.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the depencies, as a bit-mask</DL>
</DD>
</DL>
<HR>

<A NAME="getIntrinsicDependencies()"><!-- --></A><H3>
getIntrinsicDependencies</H3>
<PRE>
public int <B>getIntrinsicDependencies</B>()</PRE>
<DL>
<DD>Determine the intrinsic dependencies of an expression, that is, those which are not derived
 from the dependencies of its subexpressions. For example, position() has an intrinsic dependency
 on the context position, while (position()+1) does not. The default implementation
 of the method returns 0, indicating "no dependencies".
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>a set of bit-significant flags identifying the "intrinsic"
     dependencies. The flags are documented in class net.sf.saxon.value.StaticProperty</DL>
</DD>
</DL>
<HR>

<A NAME="checkForUpdatingSubexpressions()"><!-- --></A><H3>
checkForUpdatingSubexpressions</H3>
<PRE>
public void <B>checkForUpdatingSubexpressions</B>()
                                    throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Check to ensure that this expression does not contain any inappropriate updating subexpressions.
 This check is overridden for those expressions that permit updating subexpressions.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - if the expression has a non-permitted updating subexpression</DL>
</DD>
</DL>
<HR>

<A NAME="isUpdatingExpression()"><!-- --></A><H3>
isUpdatingExpression</H3>
<PRE>
public boolean <B>isUpdatingExpression</B>()</PRE>
<DL>
<DD>Determine whether this is an updating expression as defined in the XQuery update specification
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>true if this is an updating expression</DL>
</DD>
</DL>
<HR>

<A NAME="isVacuousExpression()"><!-- --></A><H3>
isVacuousExpression</H3>
<PRE>
public boolean <B>isVacuousExpression</B>()</PRE>
<DL>
<DD>Determine whether this is a vacuous expression as defined in the XQuery update specification
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>true if this expression is vacuous</DL>
</DD>
</DL>
<HR>

<A NAME="copy()"><!-- --></A><H3>
copy</H3>
<PRE>
public abstract <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>copy</B>()</PRE>
<DL>
<DD>Copy an expression. This makes a deep copy.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the copy of the original expression</DL>
</DD>
</DL>
<HR>

<A NAME="replaceSubExpression(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Expression)"><!-- --></A><H3>
replaceSubExpression</H3>
<PRE>
public boolean <B>replaceSubExpression</B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;original,
                                    <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;replacement)</PRE>
<DL>
<DD>Replace one subexpression by a replacement subexpression
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>original</CODE> - the original subexpression<DD><CODE>replacement</CODE> - the replacement subexpression
<DT><B>Returns:</B><DD>true if the original subexpression is found</DL>
</DD>
</DL>
<HR>

<A NAME="suppressValidation(int)"><!-- --></A><H3>
suppressValidation</H3>
<PRE>
public void <B>suppressValidation</B>(int&nbsp;parentValidationMode)</PRE>
<DL>
<DD>Suppress validation on contained element constructors, on the grounds that the parent element
 is already performing validation. The default implementation does nothing.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>parentValidationMode</CODE> - the kind of validation being performed on the parent expression</DL>
</DD>
</DL>
<HR>

<A NAME="markTailFunctionCalls(net.sf.saxon.om.StructuredQName, int)"><!-- --></A><H3>
markTailFunctionCalls</H3>
<PRE>
public int <B>markTailFunctionCalls</B>(<A HREF="../../../../net/sf/saxon/om/StructuredQName.html" title="class in net.sf.saxon.om">StructuredQName</A>&nbsp;qName,
                                 int&nbsp;arity)</PRE>
<DL>
<DD>Mark tail-recursive calls on stylesheet functions. For most expressions, this does nothing.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qName</CODE> - the name of the function<DD><CODE>arity</CODE> - the arity (number of parameters) of the function
<DT><B>Returns:</B><DD><A HREF="../../../../net/sf/saxon/expr/UserFunctionCall.html#NOT_TAIL_CALL"><CODE>UserFunctionCall.NOT_TAIL_CALL</CODE></A> if no tail call was found;
 <A HREF="../../../../net/sf/saxon/expr/UserFunctionCall.html#FOREIGN_TAIL_CALL"><CODE>UserFunctionCall.FOREIGN_TAIL_CALL</CODE></A> if a tail call on a different function was found;</DL>
</DD>
</DL>
<HR>

<A NAME="getSlotsUsed()"><!-- --></A><H3>
getSlotsUsed</H3>
<PRE>
public final int[] <B>getSlotsUsed</B>()</PRE>
<DL>
<DD>Get the local variables (identified by their slot numbers) on which this expression depends.
 Should only be called if the caller has established that there is a dependency on local variables.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>an array of integers giving the slot numbers of the local variables referenced in this
 expression.</DL>
</DD>
</DL>
<HR>

<A NAME="dynamicError(java.lang.String, java.lang.String, net.sf.saxon.expr.XPathContext)"><!-- --></A><H3>
dynamicError</H3>
<PRE>
protected void <B>dynamicError</B>(<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;message,
                            <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;code,
                            <A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)
                     throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Method used in subclasses to signal a dynamic error
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>message</CODE> - the error message<DD><CODE>code</CODE> - the error code<DD><CODE>context</CODE> - the XPath dynamic context
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - always thrown, to signal a dynamic error</DL>
</DD>
</DL>
<HR>

<A NAME="typeError(java.lang.String, java.lang.String, net.sf.saxon.expr.XPathContext)"><!-- --></A><H3>
typeError</H3>
<PRE>
protected void <B>typeError</B>(<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;message,
                         <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;errorCode,
                         <A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)
                  throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Method used in subclasses to signal a runtime type error
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>message</CODE> - the error message<DD><CODE>errorCode</CODE> - the error code<DD><CODE>context</CODE> - the XPath dynamic context
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - always thrown, to signal a dynamic error</DL>
</DD>
</DL>
<HR>

<A NAME="getConstructType()"><!-- --></A><H3>
getConstructType</H3>
<PRE>
public int <B>getConstructType</B>()</PRE>
<DL>
<DD>Get the type of this expression for use in tracing and diagnostics
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../net/sf/saxon/trace/InstructionInfo.html#getConstructType()">getConstructType</A></CODE> in interface <CODE><A HREF="../../../../net/sf/saxon/trace/InstructionInfo.html" title="interface in net.sf.saxon.trace">InstructionInfo</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the type of expression, as enumerated in class <A HREF="../../../../net/sf/saxon/trace/Location.html" title="class in net.sf.saxon.trace"><CODE>Location</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="getObjectName()"><!-- --></A><H3>
getObjectName</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/om/StructuredQName.html" title="class in net.sf.saxon.om">StructuredQName</A> <B>getObjectName</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../net/sf/saxon/trace/InstructionInfo.html#getObjectName()">InstructionInfo</A></CODE></B></DD>
<DD>Get a name identifying the object of the expression, for example a function name, template name,
 variable name, key name, element name, etc. This is used only where the name is known statically.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../net/sf/saxon/trace/InstructionInfo.html#getObjectName()">getObjectName</A></CODE> in interface <CODE><A HREF="../../../../net/sf/saxon/trace/InstructionInfo.html" title="interface in net.sf.saxon.trace">InstructionInfo</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the QName of the object declared or manipulated by this instruction or expression</DL>
</DD>
</DL>
<HR>

<A NAME="getProperty(java.lang.String)"><!-- --></A><H3>
getProperty</H3>
<PRE>
public <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A> <B>getProperty</B>(<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;name)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../net/sf/saxon/trace/InstructionInfo.html#getProperty(java.lang.String)">InstructionInfo</A></CODE></B></DD>
<DD>Get the value of a particular property of the instruction. Properties
 of XSLT instructions are generally known by the name of the stylesheet attribute
 that defines them.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../net/sf/saxon/trace/InstructionInfo.html#getProperty(java.lang.String)">getProperty</A></CODE> in interface <CODE><A HREF="../../../../net/sf/saxon/trace/InstructionInfo.html" title="interface in net.sf.saxon.trace">InstructionInfo</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - The name of the required property
<DT><B>Returns:</B><DD>The value of the requested property, or null if the property is not available</DL>
</DD>
</DL>
<HR>

<A NAME="getLineNumber(long)"><!-- --></A><H3>
getLineNumber</H3>
<PRE>
public int <B>getLineNumber</B>(long&nbsp;locationId)</PRE>
<DL>
<DD>Get the line number within the document or module containing a particular location
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../net/sf/saxon/event/LocationProvider.html#getLineNumber(long)">getLineNumber</A></CODE> in interface <CODE><A HREF="../../../../net/sf/saxon/event/LocationProvider.html" title="interface in net.sf.saxon.event">LocationProvider</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>locationId</CODE> - identifier of the location in question (as passed down the Receiver pipeline)
<DT><B>Returns:</B><DD>the line number within the document or module.</DL>
</DD>
</DL>
<HR>

<A NAME="getColumnNumber(long)"><!-- --></A><H3>
getColumnNumber</H3>
<PRE>
public int <B>getColumnNumber</B>(long&nbsp;locationId)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../net/sf/saxon/event/LocationProvider.html#getColumnNumber(long)">LocationProvider</A></CODE></B></DD>
<DD>Get the column number within the document, entity, or module containing a particular location
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../net/sf/saxon/event/LocationProvider.html#getColumnNumber(long)">getColumnNumber</A></CODE> in interface <CODE><A HREF="../../../../net/sf/saxon/event/LocationProvider.html" title="interface in net.sf.saxon.event">LocationProvider</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>locationId</CODE> - identifier of the location in question (as passed down the Receiver pipeline)
<DT><B>Returns:</B><DD>the column number within the document, entity, or module, or -1 if this is not available</DL>
</DD>
</DL>
<HR>

<A NAME="getSystemId(long)"><!-- --></A><H3>
getSystemId</H3>
<PRE>
public <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getSystemId</B>(long&nbsp;locationId)</PRE>
<DL>
<DD>Get the URI of the document or module containing a particular location
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../net/sf/saxon/event/LocationProvider.html#getSystemId(long)">getSystemId</A></CODE> in interface <CODE><A HREF="../../../../net/sf/saxon/event/LocationProvider.html" title="interface in net.sf.saxon.event">LocationProvider</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>locationId</CODE> - identifier of the location in question (as passed down the Receiver pipeline)
<DT><B>Returns:</B><DD>the URI of the document or module.</DL>
</DD>
</DL>
<HR>

<A NAME="getProperties()"><!-- --></A><H3>
getProperties</H3>
<PRE>
public <A HREF="http://download.oracle.com/javase/6/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</A>&lt;<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&gt; <B>getProperties</B>()</PRE>
<DL>
<DD>Get an iterator over all the properties available. The values returned by the iterator
 will be of type String, and each string can be supplied as input to the getProperty()
 method to retrieve the value of the property. The iterator may return properties whose
 value is null.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../net/sf/saxon/trace/InstructionInfo.html#getProperties()">getProperties</A></CODE> in interface <CODE><A HREF="../../../../net/sf/saxon/trace/InstructionInfo.html" title="interface in net.sf.saxon.trace">InstructionInfo</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>an iterator over the properties.</DL>
</DD>
</DL>
<HR>

<A NAME="getHostLanguage()"><!-- --></A><H3>
getHostLanguage</H3>
<PRE>
public int <B>getHostLanguage</B>()</PRE>
<DL>
<DD>Get the host language (XSLT, XQuery, XPath) used to implement the code in this container
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>typically <A HREF="../../../../net/sf/saxon/Configuration.html#XSLT"><CODE>Configuration.XSLT</CODE></A> or <A HREF="../../../../net/sf/saxon/Configuration.html#XQUERY"><CODE>Configuration.XQUERY</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="addToPathMap(net.sf.saxon.expr.parser.PathMap, net.sf.saxon.expr.parser.PathMap.PathMapNodeSet)"><!-- --></A><H3>
addToPathMap</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/parser/PathMap.PathMapNodeSet.html" title="class in net.sf.saxon.expr.parser">PathMap.PathMapNodeSet</A> <B>addToPathMap</B>(<A HREF="../../../../net/sf/saxon/expr/parser/PathMap.html" title="class in net.sf.saxon.expr.parser">PathMap</A>&nbsp;pathMap,
                                           <A HREF="../../../../net/sf/saxon/expr/parser/PathMap.PathMapNodeSet.html" title="class in net.sf.saxon.expr.parser">PathMap.PathMapNodeSet</A>&nbsp;pathMapNodeSet)</PRE>
<DL>
<DD>Add a representation of this expression to a PathMap. The PathMap captures a map of the nodes visited
 by an expression in a source tree.

 <p>The default implementation of this method assumes that an expression does no navigation other than
 the navigation done by evaluating its subexpressions, and that the subexpressions are evaluated in the
 same context as the containing expression. The method must be overridden for any expression
 where these assumptions do not hold. For example, implementations exist for AxisExpression, ParentExpression,
 and RootExpression (because they perform navigation), and for the doc(), document(), and collection()
 functions because they create a new navigation root. Implementations also exist for PathExpression and
 FilterExpression because they have subexpressions that are evaluated in a different context from the
 calling expression.</p>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pathMap</CODE> - the PathMap to which the expression should be added<DD><CODE>pathMapNodeSet</CODE> - the PathMapNodeSet to which the paths embodied in this expression should be added
<DT><B>Returns:</B><DD>the pathMapNodeSet representing the points in the source document that are both reachable by this
 expression, and that represent possible results of this expression. For an expression that does
 navigation, it represents the end of the arc in the path map that describes the navigation route. For other
 expressions, it is the same as the input pathMapNode.</DL>
</DD>
</DL>
<HR>

<A NAME="isSubtreeExpression()"><!-- --></A><H3>
isSubtreeExpression</H3>
<PRE>
public boolean <B>isSubtreeExpression</B>()</PRE>
<DL>
<DD>Determine whether the expression can be evaluated without reference to the part of the context
 document outside the subtree rooted at the context node.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>true if the expression has no dependencies on the context node, or if the only dependencies
 on the context node are downward selections using the self, child, descendant, attribute, and namespace
 axes.</DL>
</DD>
</DL>
<HR>

<A NAME="setEvaluationMethod(int)"><!-- --></A><H3>
setEvaluationMethod</H3>
<PRE>
public void <B>setEvaluationMethod</B>(int&nbsp;method)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getEvaluationMethod()"><!-- --></A><H3>
getEvaluationMethod</H3>
<PRE>
public int <B>getEvaluationMethod</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../net/sf/saxon/expr/EveryItemMappingIterator.html" title="class in net.sf.saxon.expr"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../net/sf/saxon/expr/FilterExpression.html" title="class in net.sf.saxon.expr"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html?net/sf/saxon/expr/Expression.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="Expression.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright (c) 2004-2011 Saxonica Limited. All rights reserved.
</BODY>
</HTML>