<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 Include</h2><br><hr><pre>public class <strong>Include</strong>
extends org.eclipse.wst.xsl.core.model.XSLElement</pre>The <code>xsl:include</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>public static  int</code></td><td width="80%" align="left"><code><a href="#field_IMPORT">IMPORT</a></code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Constant indicating that this is an &lt;code&gt;Import&lt;/code&gt;.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static  int</code></td><td width="80%" align="left"><code><a href="#field_INCLUDE">INCLUDE</a></code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Constant indicating that this is an &lt;code&gt;Include&lt;/code&gt;.</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_Include">Include</a></strong>(org.eclipse.wst.xsl.core.model.Stylesheet stylesheet)</code></td></tr><tr><td><code><strong><a href="#con_Include">Include</a></strong>(org.eclipse.wst.xsl.core.model.Stylesheet stylesheet
         ,
      int type)</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_getHref">getHref</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the value of the <code>href</code> attribute if one exists.</td></tr><tr valign="top"><td width="20%" align="right"><code>public IFile</code></td><td width="" align="left"><code><a href="#method_getHrefAsFile">getHrefAsFile</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Gets the included file as a source file, if possible (returned file may be null and need not exist).</td></tr><tr valign="top"><td width="20%" align="right"><code>public int</code></td><td width="" align="left"><code><a href="#method_getIncludeType">getIncludeType</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the type of include, whether an <code>Include</code> or an <code>Import</code>.</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></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_IMPORT">IMPORT</a></h2><p><code>public static  int <strong>IMPORT</strong></code></p><table><tr><td>Constant indicating that this is an <code>Import</code>.</td></tr></table><hr><h2><a name="field_INCLUDE">INCLUDE</a></h2><p><code>public static  int <strong>INCLUDE</strong></code></p><table><tr><td>Constant indicating that this is an <code>Include</code>.</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_Include">Include</a></h2><p><code>public <strong>Include</strong>(org.eclipse.wst.xsl.core.model.Stylesheet stylesheet)</code></p><p>Create a new instance of this.</p><hr><h2><a name="con_Include">Include</a></h2><p><code>protected <strong>Include</strong>(org.eclipse.wst.xsl.core.model.Stylesheet stylesheet
         ,
      int type)</code></p><p>Create a new instance of this, specifying whether an <code>Include</code> or an <code>Import</code>.</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_getHref">getHref</a></h2><p><code>public java.lang.String <strong>getHref</strong>()</code></p><p>Get the value of the <code>href</code> attribute if one exists.</p><h3>Returns</h3><p><code>java.lang.String</code> - the <code>href</code> value, or null</p><hr><h2><a name="method_getHrefAsFile">getHrefAsFile</a></h2><p><code>public IFile <strong>getHrefAsFile</strong>()</code></p><p>Gets the included file as a source file, if possible (returned file may be null and need not exist).</p><h3>Returns</h3><p><code>IFile</code> - the included file, or null</p><hr><h2><a name="method_getIncludeType">getIncludeType</a></h2><p><code>public int <strong>getIncludeType</strong>()</code></p><p>Get the type of include, whether an <code>Include</code> or an <code>Import</code>.</p><h3>Returns</h3><p><code>int</code> - one of the constants <code>INCLUDE</code> or <code>IMPORT</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></body></html>