<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 Variable</h2><br><hr><pre>public class <strong>Variable</strong>
extends org.eclipse.wst.xsl.core.model.XSLElement</pre>The <code>xsl:variable</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_Variable">Variable</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;
               If an XSLT 2.0, return the value of the <code>as</code> attribute if one exists.</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.lang.String</code></td><td width="" align="left"><code><a href="#method_getSelect">getSelect</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the value of the <code>select</code> attribute if one exists.</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_Variable">Variable</a></h2><p><code>public <strong>Variable</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>If an XSLT 2.0, return the value of the <code>as</code> attribute if one exists.</p><h3>Returns</h3><p><code>java.lang.String</code> - the as value, or null</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 variable name, or null</p><hr><h2><a name="method_getSelect">getSelect</a></h2><p><code>public java.lang.String <strong>getSelect</strong>()</code></p><p>Get the value of the <code>select</code> attribute if one exists.</p><h3>Returns</h3><p><code>java.lang.String</code> - the select value, or null</p><hr></body></html>