<html><body><p><font size="+1"><strong>Package org.eclipse.wst.xsl.invoker.config</strong></font></p><hr><h2><font size="-1"><strong>org.eclipse.wst.xsl.invoker.config</strong></font><br>
               Class TransformDefinition</h2><br><hr><pre>public class <strong>TransformDefinition</strong>
extends java.lang.Object</pre>A definition of a particular step in the transformation pipeline.<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_TransformDefinition">TransformDefinition</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_addParameter">addParameter</a>(org.eclipse.wst.xsl.invoker.config.TypedValue parameter)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Add a parameter to the set of parameters</td></tr><tr valign="top"><td width="20%" align="right"><code>public org.w3c.dom.Element</code></td><td width="" align="left"><code><a href="#method_asXML">asXML</a>(org.w3c.dom.Document doc)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Serialize this to a Document fragment.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xsl.invoker.config.TransformDefinition</code></td><td width="" align="left"><code><a href="#method_fromXML">fromXML</a>(org.w3c.dom.Element transformEl)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Create a new instance of this from its serialized form.</td></tr><tr valign="top"><td width="20%" align="right"><code>public java.util.Properties</code></td><td width="" align="left"><code><a href="#method_getOutputProperties">getOutputProperties</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the output properties for this.</td></tr><tr valign="top"><td width="20%" align="right"><code>public java.util.Set</code></td><td width="" align="left"><code><a href="#method_getParameters">getParameters</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               The set of parameters</td></tr><tr valign="top"><td width="20%" align="right"><code>public java.util.Map</code></td><td width="" align="left"><code><a href="#method_getParametersAsMap">getParametersAsMap</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the parameters as a map of name (<code>String</code>) v. value <code>TypedValue</code>.</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_getResolverClass">getResolverClass</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the name of the <code>URIResolver</code> class to use.</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_getStylesheetURL">getStylesheetURL</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the URL of the stylesheet.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_removeOutputProperty">removeOutputProperty</a>(java.lang.String name)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Remove an output property.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_removeParameter">removeParameter</a>(org.eclipse.wst.xsl.invoker.config.TypedValue parameter)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Remove a parameter.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_setOutputProperties">setOutputProperties</a>(java.util.Properties outputProperties)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Set the output properties for this.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_setOutputProperty">setOutputProperty</a>(java.lang.String name
         ,
      java.lang.String value)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Set the value of a specific output property.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_setResolverClass">setResolverClass</a>(java.lang.String resolver)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Set the name of the <code>URIResolver</code> class to use.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_setStylesheetURL">setStylesheetURL</a>(java.lang.String stylesheet)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Set the URL of the stylesheet.</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_TransformDefinition">TransformDefinition</a></h2><p><code>public <strong>TransformDefinition</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_addParameter">addParameter</a></h2><p><code>public void <strong>addParameter</strong>(org.eclipse.wst.xsl.invoker.config.TypedValue parameter)</code></p><p>Add a parameter to the set of parameters</p><h3>Parameters</h3><p><code>parameter</code> - the parameter to add</p><hr><h2><a name="method_asXML">asXML</a></h2><p><code>public org.w3c.dom.Element <strong>asXML</strong>(org.w3c.dom.Document doc)</code></p><p>Serialize this to a Document fragment.</p><h3>Parameters</h3><p><code>doc</code> - the document to attach to</p><h3>Returns</h3><p><code>org.w3c.dom.Element</code> - the root element of the fragment</p><hr><h2><a name="method_fromXML">fromXML</a></h2><p><code>public org.eclipse.wst.xsl.invoker.config.TransformDefinition <strong>fromXML</strong>(org.w3c.dom.Element transformEl)</code></p><p>Create a new instance of this from its serialized form.</p><h3>Parameters</h3><p><code>transformEl</code> - the element to create this from</p><h3>Returns</h3><p><code>org.eclipse.wst.xsl.invoker.config.TransformDefinition</code> - a new instance of this</p><hr><h2><a name="method_getOutputProperties">getOutputProperties</a></h2><p><code>public java.util.Properties <strong>getOutputProperties</strong>()</code></p><p>Get the output properties for this.</p><h3>Returns</h3><p><code>java.util.Properties</code> - the output properties</p><hr><h2><a name="method_getParameters">getParameters</a></h2><p><code>public java.util.Set <strong>getParameters</strong>()</code></p><p>The set of parameters</p><h3>Returns</h3><p><code>java.util.Set</code> - a set of <code>TypedValue</code>'s</p><hr><h2><a name="method_getParametersAsMap">getParametersAsMap</a></h2><p><code>public java.util.Map <strong>getParametersAsMap</strong>()</code></p><p>Get the parameters as a map of name (<code>String</code>) v. value <code>TypedValue</code>.</p><h3>Returns</h3><p><code>java.util.Map</code> - a map of names and values</p><h3>Throws:</h3><p><code>org.eclipse.wst.xsl.invoker.config.CreationException - if an exception occurred during object creation</code></p><hr><h2><a name="method_getResolverClass">getResolverClass</a></h2><p><code>public java.lang.String <strong>getResolverClass</strong>()</code></p><p>Get the name of the <code>URIResolver</code> class to use.</p><h3>Returns</h3><p><code>java.lang.String</code> - the resolver's class name</p><hr><h2><a name="method_getStylesheetURL">getStylesheetURL</a></h2><p><code>public java.lang.String <strong>getStylesheetURL</strong>()</code></p><p>Get the URL of the stylesheet.</p><h3>Returns</h3><p><code>java.lang.String</code> - the stylesheet URL</p><hr><h2><a name="method_removeOutputProperty">removeOutputProperty</a></h2><p><code>public void <strong>removeOutputProperty</strong>(java.lang.String name)</code></p><p>Remove an output property.</p><h3>Parameters</h3><p><code>name</code> - the output property to remove</p><hr><h2><a name="method_removeParameter">removeParameter</a></h2><p><code>public void <strong>removeParameter</strong>(org.eclipse.wst.xsl.invoker.config.TypedValue parameter)</code></p><p>Remove a parameter.</p><h3>Parameters</h3><p><code>parameter</code> - the parameter to remove</p><hr><h2><a name="method_setOutputProperties">setOutputProperties</a></h2><p><code>public void <strong>setOutputProperties</strong>(java.util.Properties outputProperties)</code></p><p>Set the output properties for this.</p><h3>Parameters</h3><p><code>outputProperties</code> - the output properties to set</p><hr><h2><a name="method_setOutputProperty">setOutputProperty</a></h2><p><code>public void <strong>setOutputProperty</strong>(java.lang.String name
         ,
      java.lang.String value)</code></p><p>Set the value of a specific output property.</p><h3>Parameters</h3><p><code>name</code> - the output property</p><p><code>value</code> - the value</p><hr><h2><a name="method_setResolverClass">setResolverClass</a></h2><p><code>public void <strong>setResolverClass</strong>(java.lang.String resolver)</code></p><p>Set the name of the <code>URIResolver</code> class to use.</p><h3>Parameters</h3><p><code>resolver</code> - the resolver's class name</p><hr><h2><a name="method_setStylesheetURL">setStylesheetURL</a></h2><p><code>public void <strong>setStylesheetURL</strong>(java.lang.String stylesheet)</code></p><p>Set the URL of the stylesheet.</p><h3>Parameters</h3><p><code>stylesheet</code> - the stylesheet URL</p><hr></body></html>