<html>
  <title>Xalan Templates Package.</title>
  <body>
    <p>Implements the {@link javax.xml.transform.Templates} interface, 
    and defines a set of classes that represent an XSLT stylesheet.</p>
    
    <p>{@link org.apache.xalan.templates.StylesheetRoot} implements the {@link javax.xml.transform.Templates} interface, and 
    extends {@link org.apache.xalan.templates.StylesheetComposed}, 
    which is a {@link org.apache.xalan.templates.Stylesheet} composed of itself 
    and its included Stylesheet objects. A StylesheetRoot also contains a 
    global list of all imported StylesheetComposed objects. The
    role of these objects is to hold immutable stylesheet data, not to perform 
    procedural tasks associated with the
    construction of the data (the org.apache.xalan.processor package) or with the transformation (the org.apache.xalan.transformer
    package).</p>
    <p>{@link org.apache.xalan.templates.ElemTemplateElement} is the superclass of 
    all XSLT instruction elements, including Stylesheet. The <i>x</i>Func classes
    extend members of the org.apache.xpath package and implement XSLT functions. Unlike 
    the Stylesheet "container" objects, the
    instruction element and function classes do contain procedural execute() 
    methods that are called during the transformation.</p>
    <p>
 </body>
</html>


