<html><body><p><font size="+1"><strong>Package org.eclipse.wst.xml.xpath2.processor.internal</strong></font></p><hr><h2><font size="-1"><strong>org.eclipse.wst.xml.xpath2.processor.internal</strong></font><br>
               Class FollowingSiblingAxis</h2><br><hr><pre>public class <strong>FollowingSiblingAxis</strong>
extends org.eclipse.wst.xml.xpath2.processor.internal.ForwardAxis</pre>The following-sibling axis contains the context node's following siblings,
 those children of the context node's parent that occur after the context node
 in document order; if the context node is an attribute nodeor namespace node,
 the following-sibling axis is empty.<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_FollowingSiblingAxis">FollowingSiblingAxis</a></strong>()</code></td></tr></table><br><table width="100%" border="1"><tr cols="2" bgcolor="#CCCCFF"><td colspan="2" width="100%"><h2>Method Summary</h2></td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_iterate">iterate</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.NodeType node
         ,
      org.eclipse.wst.xml.xpath2.api.ResultBuffer copyInto
         ,
      org.w3c.dom.Node limitNode)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Return the result of FollowingSiblingAxis expression</td></tr><tr valign="top"><td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code><a href="#method_name">name</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </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_FollowingSiblingAxis">FollowingSiblingAxis</a></h2><p><code>public <strong>FollowingSiblingAxis</strong>()</code></p><p></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_iterate">iterate</a></h2><p><code>public void <strong>iterate</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.NodeType node
         ,
      org.eclipse.wst.xml.xpath2.api.ResultBuffer copyInto
         ,
      org.w3c.dom.Node limitNode)</code></p><p>Return the result of FollowingSiblingAxis expression</p><h3>Parameters</h3><p><code>node</code> - is the type of node.</p><p><code>copyInto</code></p><p><code>limitNode</code></p><hr><h2><a name="method_name">name</a></h2><p><code>public java.lang.String <strong>name</strong>()</code></p><p></p><h3>Returns</h3><p><code>java.lang.String</code></p><hr></body></html>