<HTML><HEAD></HEAD><BODY>
     <P><B>The main Xalan-Java 1 compatability package</B> -- facilities for setting up and performing XSL transformations.</P>
   
     <P>Use one of the {@link org.apache.xalan.xslt.XSLTProcessorFactory} static getProcessor methods to
      instantiate an {@link org.apache.xalan.xslt.XSLTProcessor}. The XSLTProcessor interface defines the 
      XSLT processor API. You should never need to call the underlying implementation 
      ({@link org.apache.xalan.xslt.XSLTEngineImpl}) directly.</P>
      
      <P>Instantiate {@link org.apache.xalan.xslt.XSLTInputSource} objects for the XML input and the XSL
      stylesheet, and an {@link org.apache.xalan.xslt.XSLTResultTarget} object for the transformation output. 
      You may construct these objects with a variety of containers/formats, including files or URLs, character
      streams,byte streams, SAX input streams or document handlers, and a DOM tree.</P>
      <P>As a general rule, use the XSLTProcessor process method to perform a transformation, thereby filling the
      XSLTResultTarget object. For repeated transformations, to gather information from the stylesheet before you
      perform the transformation, or to set up the processor to function as a SAX document handler, use the
       XSLTProcessor processStylesheet method to compile the XSL stylesheet, which returns a 
       {@link org.apache.xalan.xslt.StylesheetRoot} object with its own process method.</P>
   </BODY></HTML>