<html>
  <title>Xalan Serialize Package.</title>
  <body>
    <p>Processes SAX events into streams.</p>
    
    <p>The {@link org.apache.xalan.serialize.SerializerFactory} is used to 
    create a {@link org.apache.xalan.serialize.Serializer} from a set of 
    output properties (see {@link javax.xml.transform.OutputKeys}).</p>
    <p>{@link org.apache.xalan.serialize.SerializerToXML} acts as the main 
    baseclass for the Xalan serializer implementations.  
    {@link org.apache.xalan.serialize.SerializerToHTML} derives from this 
    to implement HTML serialization.  {@link org.apache.xalan.serialize.SerializerToText}
    implements plain text 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.xalan.serialize.Encodings}.</p>
 </body>
</html>


