<html>
  <title>Xalan Processor Package.</title>
  <body>
    <p>Parses an XSLT stylesheet document (which may include and import other stylesheet documents) and produces a StylesheetRoot
    (a TRaX Templates object).</p>
    
    <p>StylesheetProcessor implements the TRaX {@link javax.xml.transform.TransformerFactory} interface,
    as well as the {@link javax.xml.transform.sax.SAXTransformerFactory} interface. 
    It registers the {@link org.apache.xalan.processor.StylesheetHandler} object 
    (a TrAX {@link javax.xml.transform.sax.TemplatesHandler} implementation) 
    as the SAX ContentHandler for an XMLReader, and uses the XMLReader to parse 
    the stylesheet document.</p>
    <p>Before parsing the XSLT input, StylesheetHandler assembles an {@link org.apache.xalan.processor.XSLTSchema}, 
    which uses {@link org.apache.xalan.processor.XSLTElementDef}
    and {@link org.apache.xalan.processor.XSLTAttributeDef} objects to 
    recursively define the elements and attributes that an XSLT stylesheet may 
    contain. The StylesheetHandler then passes on each parse event to the 
    {@link org.apache.xalan.processor.XSLTElementProcessor} which the 
    XSLTElementDef assigned to the element associated with that event.</p>
 </body>
</html>


