<html>
  <title>Xalan Serializer Package.</title>
  <body>
    <p>Processes SAX events into streams.</p>
    
    <p>The {@link org.apache.xml.serializer.SerializerFactory} is used to 
    create a {@link org.apache.xml.serializer.Serializer} from a set of 
    output properties (see {@link javax.xml.transform.OutputKeys}).</p>
    <p>{@link org.apache.xml.serializer.ToStream} acts as the main 
    baseclass for the Xalan serializer implementations.  
    {@link org.apache.xml.serializer.ToHTMLStream} derives from this 
    to implement HTML serialization.  
    {@link org.apache.xml.serializer.ToTextStream}
    implements plain text serialization.
    {@link org.apache.xml.serializer.ToXMLStream}
    implements XML serialization.
    </p>
    <p>XML mapping from characters to entity references is defined in 
    XMLEntities.res.  HTML entity reference mapping is defined in HTMLEntities.res.
    </p>
    <p>Encoding information is defined in {@link org.apache.xml.serializer.Encodings}.</p>
 </body>
</html>


