<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 Parameter</h2><br><hr><pre>public class <strong>Parameter</strong>
extends org.eclipse.wst.xsl.core.model.Variable</pre>The <code>xsl:parameter</code> or <code>xsl:with-param</code> model element.<p></p><p></p><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_Parameter">Parameter</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 java.lang.String</code></td><td width="" align="left"><code><a href="#method_getAs">getAs</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </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 boolean</code></td><td width="" align="left"><code><a href="#method_isValue">isValue</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get whether this has a value.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_setValue">setValue</a>(boolean valueSet)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Set whether this has a value.</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_Parameter">Parameter</a></h2><p><code>public <strong>Parameter</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_getAs">getAs</a></h2><p><code>public java.lang.String <strong>getAs</strong>()</code></p><p></p><h3>Returns</h3><p><code>java.lang.String</code></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_isValue">isValue</a></h2><p><code>public boolean <strong>isValue</strong>()</code></p><p>Get whether this has a value.</p><h3>Returns</h3><p><code>boolean</code> - <code>true</code> if this has a value</p><hr><h2><a name="method_setValue">setValue</a></h2><p><code>public void <strong>setValue</strong>(boolean valueSet)</code></p><p>Set whether this has a value.</p><h3>Parameters</h3><p><code>valueSet</code> - <code>true</code> if this has a value</p><hr></body></html>