<html><body><p><font size="+1"><strong>Package org.eclipse.wst.xsl.core.model</strong></font></p><hr><h2><font size="-1"><strong>org.eclipse.wst.xsl.core.model</strong></font><br>
               Class CallTemplate</h2><br><hr><pre>public class <strong>CallTemplate</strong>
extends org.eclipse.wst.xsl.core.model.XSLElement</pre>The <code>xsl:call-template</code> model element.<p></p><p></p><hr><table width="100%" border="1"><tr cols="2" bgcolor="#CCCCFF"><td colspan="2" width="100%"><h2>Field Summary</h2></td></tr><tr valign="top"><td width="20%" align="right"><code>package-private java.util.List</code></td><td width="80%" align="left"><code><a href="#field_parameters">parameters</a></code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr></table><br><table width="100%" border="1"><tr bgcolor="#CCCCFF"><td width="100%"><h2>Constructor Summary</h2></td></tr><tr><td><code><strong><a href="#con_CallTemplate">CallTemplate</a></strong>(org.eclipse.wst.xsl.core.model.Stylesheet stylesheet)</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_addParameter">addParameter</a>(org.eclipse.wst.xsl.core.model.Parameter parameter)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Add a parameter to this.</td></tr><tr valign="top"><td width="20%" align="right"><code>public org.eclipse.wst.xsl.core.model.XSLModelObject.Type</code></td><td width="" align="left"><code><a href="#method_getModelType">getModelType</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </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_getName">getName</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the value of the <code>name</code> attribute if one exists.</td></tr><tr valign="top"><td width="20%" align="right"><code>public java.util.List</code></td><td width="" align="left"><code><a href="#method_getParameters">getParameters</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the list of parameters associated with this.</td></tr></table><hr><table cols="2" width="100%" border="1"><tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left"><td><h2>
                  Field Detail
               </h2></td></tr></table><h2><a name="field_parameters">parameters</a></h2><p><code>package-private java.util.List <strong>parameters</strong></code></p><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_CallTemplate">CallTemplate</a></h2><p><code>public <strong>CallTemplate</strong>(org.eclipse.wst.xsl.core.model.Stylesheet stylesheet)</code></p><p>Create a new instance of this.</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_addParameter">addParameter</a></h2><p><code>public void <strong>addParameter</strong>(org.eclipse.wst.xsl.core.model.Parameter parameter)</code></p><p>Add a parameter to this.</p><h3>Parameters</h3><p><code>parameter</code> - the parameter to add</p><hr><h2><a name="method_getModelType">getModelType</a></h2><p><code>public org.eclipse.wst.xsl.core.model.XSLModelObject.Type <strong>getModelType</strong>()</code></p><p></p><h3>Returns</h3><p><code>org.eclipse.wst.xsl.core.model.XSLModelObject.Type</code></p><hr><h2><a name="method_getName">getName</a></h2><p><code>public java.lang.String <strong>getName</strong>()</code></p><p>Get the value of the <code>name</code> attribute if one exists.</p><h3>Returns</h3><p><code>java.lang.String</code> - the template name, or null</p><hr><h2><a name="method_getParameters">getParameters</a></h2><p><code>public java.util.List <strong>getParameters</strong>()</code></p><p>Get the list of parameters associated with this.</p><h3>Returns</h3><p><code>java.util.List</code> - a list of parameters</p><hr></body></html>