<html><body><p><font size="+1"><strong>Package org.eclipse.wst.xml.xpath2.processor.internal.ast</strong></font></p><hr><h2><font size="-1"><strong>org.eclipse.wst.xml.xpath2.processor.internal.ast</strong></font><br>
               Class FilterExpr</h2><br><hr><pre>public class <strong>FilterExpr</strong>
extends org.eclipse.wst.xml.xpath2.processor.internal.ast.StepExpr</pre>A filter expression consists simply of a primary expression followed by zero
 or more predicates. The result of the filter expression consists of all the
 items returned by the primary expression for which all the predicates are
 true. If no predicates are specified, the result is simply the result of the
 primary expression. This result may contain nodes, atomic values, or any
 combination of these. The ordering of the items returned by a filter
 expression is the same as their order in the result of the primary
 expression. Context positions are assigned to items based on their ordinal
 position in the result sequence. The first context position is 1.<hr><table width="100%" border="1"><tr bgcolor="#CCCCFF"><td width="100%"><h2>Constructor Summary</h2></td></tr><tr><td><code><strong><a href="#con_FilterExpr">FilterExpr</a></strong>(org.eclipse.wst.xml.xpath2.processor.internal.ast.PrimaryExpr pexpr
         ,
      java.util.Collection exprs)</code></td></tr></table><br><table width="100%" border="1"><tr cols="2" bgcolor="#CCCCFF"><td colspan="2" width="100%"><h2>Method Summary</h2></td></tr><tr valign="top"><td width="20%" align="right"><code>public java.lang.Object</code></td><td width="" align="left"><code><a href="#method_accept">accept</a>(org.eclipse.wst.xml.xpath2.processor.internal.ast.XPathVisitor v)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Support for Visitor interface.</td></tr><tr valign="top"><td width="20%" align="right"><code>public java.util.Iterator</code></td><td width="" align="left"><code><a href="#method_iterator">iterator</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the next predicate.</td></tr><tr valign="top"><td width="20%" align="right"><code>public int</code></td><td width="" align="left"><code><a href="#method_predicate_count">predicate_count</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Count the number of predicates.</td></tr><tr valign="top"><td width="20%" align="right"><code>public org.eclipse.wst.xml.xpath2.processor.internal.ast.PrimaryExpr</code></td><td width="" align="left"><code><a href="#method_primary">primary</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the primary expression.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_set_primary">set_primary</a>(org.eclipse.wst.xml.xpath2.processor.internal.ast.PrimaryExpr e)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Set a new primary expression.</td></tr></table><hr><table cols="2" width="100%" border="1"><tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left"><td><h2>
                  Constructor Detail
               </h2></td></tr></table><h2><a name="con_FilterExpr">FilterExpr</a></h2><p><code>public <strong>FilterExpr</strong>(org.eclipse.wst.xml.xpath2.processor.internal.ast.PrimaryExpr pexpr
         ,
      java.util.Collection exprs)</code></p><p>Constructor of FilterExpr.</p><hr><table cols="2" width="100%" border="1"><tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left"><td><h2>
                  Methods Detail
               </h2></td></tr></table><h2><a name="method_accept">accept</a></h2><p><code>public java.lang.Object <strong>accept</strong>(org.eclipse.wst.xml.xpath2.processor.internal.ast.XPathVisitor v)</code></p><p>Support for Visitor interface.</p><h3>Parameters</h3><p><code>v</code></p><h3>Returns</h3><p><code>java.lang.Object</code> - Result of Visitor operation.</p><hr><h2><a name="method_iterator">iterator</a></h2><p><code>public java.util.Iterator <strong>iterator</strong>()</code></p><p>Get the next predicate.</p><h3>Returns</h3><p><code>java.util.Iterator</code> - The next predicate.</p><hr><h2><a name="method_predicate_count">predicate_count</a></h2><p><code>public int <strong>predicate_count</strong>()</code></p><p>Count the number of predicates.</p><h3>Returns</h3><p><code>int</code> - The size of the collection of predicates.</p><hr><h2><a name="method_primary">primary</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.internal.ast.PrimaryExpr <strong>primary</strong>()</code></p><p>Get the primary expression.</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.internal.ast.PrimaryExpr</code> - The primary expression.</p><hr><h2><a name="method_set_primary">set_primary</a></h2><p><code>public void <strong>set_primary</strong>(org.eclipse.wst.xml.xpath2.processor.internal.ast.PrimaryExpr e)</code></p><p>Set a new primary expression.</p><h3>Parameters</h3><p><code>e</code> - is set as the new primary expression.</p><hr></body></html>