## net.sf.saxon.event
Class SerializerFactory

    java.lang.Object
      net.sf.saxon.event.SerializerFactory

All Implemented Interfaces:
  java.io.Serializable

    public class SerializerFactory

extends java.lang.Object
implements java.io.Serializable

Helper class to construct a serialization pipeline for a given result destination and a given set of output properties. The pipeline is represented by a Receiver object to which result tree events are sent. Since Saxon 8.8 is is possible to write a subclass of SerializerFactory and register it with the Configuration, allowing customisation of the Serializer pipeline. The class includes methods for instantiating each of the components used on the Serialization pipeline. This allows a customized SerializerFactory to replace any or all of these components by subclasses that refine the behaviour.

See Also:
  Serialized Form

Constructor Summary
`SerializerFactory()` Create a SerializerFactory

Method Summary
`protected Receiver` `createHTMLSerializer(Emitter emitter, java.util.Properties props, PipelineConfiguration pipe, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer)` Create a serialization pipeline to implement the HTML output method.
`protected Receiver` `createTextSerializer(Emitter emitter, java.util.Properties props, PipelineConfiguration pipe, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer)` Create a serialization pipeline to implement the text output method.
`protected Receiver` `createUserDefinedOutputMethod(java.lang.String method, java.util.Properties props, PipelineConfiguration pipe)` Create a serialization pipeline to implement a user-defined output method.
`protected Receiver` `createXHTMLSerializer(Emitter emitter, java.util.Properties props, PipelineConfiguration pipe, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer)` Create a serialization pipeline to implement the XHTML output method.
`protected Receiver` `createXMLSerializer(Emitter emitter, java.util.Properties props, PipelineConfiguration pipe, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer)` Create a serialization pipeline to implement the XML output method.
`Receiver` `getReceiver(javax.xml.transform.Result result, PipelineConfiguration pipe, java.util.Properties props)` Get a Receiver that wraps a given Result object.
`protected ProxyReceiver` `newCDATAFilter(PipelineConfiguration pipe, java.util.Properties outputProperties)` Create a new CDATA Filter, responsible for insertion of CDATA sections where required.
`CharacterMapExpander` `newCharacterMapExpander()` Create a new CharacterMapExpander.
`protected ContentHandlerProxy` `newContentHandlerProxy()` Create a ContentHandlerProxy.
`protected Emitter` `newHTMLEmitter()` Create a new HTML Emitter.
`protected ProxyReceiver` `newHTMLIndenter(PipelineConfiguration pipe, java.util.Properties outputProperties)` Create a new HTML Indenter.
`protected MetaTagAdjuster` `newHTMLMetaTagAdjuster(PipelineConfiguration pipe, java.util.Properties outputProperties)` Create a new XHTML MetaTagAdjuster, responsible for insertion, removal, or replacement of meta elements.
`protected ProxyReceiver` `newHTMLURIEscaper(PipelineConfiguration pipe, java.util.Properties outputProperties)` Create a new HTML URI Escaper, responsible for percent-encoding of URIs in HTML output documents.
`protected Emitter` `newTEXTEmitter()` Create a new Text Emitter.
`protected UncommittedSerializer` `newUncommittedSerializer(javax.xml.transform.Result result, java.util.Properties properties)` Create an UncommittedSerializer.
`protected ProxyReceiver` `newUnicodeNormalizer(PipelineConfiguration pipe, java.util.Properties outputProperties)` Create a Unicode Normalizer.
`protected Emitter` `newXHTMLEmitter()` Create a new XHTML Emitter.
`protected ProxyReceiver` `newXHTMLIndenter(PipelineConfiguration pipe, java.util.Properties outputProperties)` Create a new XHTML Indenter.
`protected MetaTagAdjuster` `newXHTMLMetaTagAdjuster(PipelineConfiguration pipe, java.util.Properties outputProperties)` Create a new XHTML MetaTagAdjuster, responsible for insertion, removal, or replacement of meta elements.
`protected ProxyReceiver` `newXML10ContentChecker(PipelineConfiguration pipe, java.util.Properties outputProperties)` Create a new XML 1.0 content checker, responsible for checking that the output conforms to XML 1.0 rules (this is used only if the Configuration supports XML 1.1 but the specific output file requires XML 1.0).
`protected Emitter` `newXMLEmitter()` Create a new XML Emitter.
`protected ProxyReceiver` `newXMLIndenter(PipelineConfiguration pipe, java.util.Properties outputProperties)` Create a new XML Indenter.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### SerializerFactory

    public SerializerFactory()

  Create a SerializerFactory

Method Detail

### getReceiver

    public Receiver getReceiver(javax.xml.transform.Result result,
                                PipelineConfiguration pipe,
                                java.util.Properties props)
                         throws XPathException

  Get a Receiver that wraps a given Result object. Saxon calls this method to construct a serialization pipeline. The method can be overridden in a subclass; alternatively, the subclass can override the various methods used to instantiate components of the serialization pipeline.

  Note that this method ignores the `SaxonOutputKeys.WRAP` output property. If wrapped output is required, the user must create a `SequenceWrapper` directly.

  Parameters:
    `result` - The final destination of the serialized output. Usually a StreamResult, but other kinds of Result are possible.
    `pipe` - The PipelineConfiguration.
    `props` - The serialization properties
  Returns:
    the newly constructed Receiver that performs the required serialization
  Throws:
    `XPathException`

### createHTMLSerializer

    protected Receiver createHTMLSerializer(Emitter emitter,
                                            java.util.Properties props,
                                            PipelineConfiguration pipe,
                                            CharacterMapExpander characterMapExpander,
                                            ProxyReceiver normalizer)
                                     throws XPathException

  Create a serialization pipeline to implement the HTML output method. This method is protected so that it can be customized in a user-written SerializerFactory

  Parameters:
    `emitter` - the emitter at the end of the pipeline (created using the method `newHTMLEmitter()`
    `props` - the serialization properties
    `pipe` - the pipeline configuration information
    `characterMapExpander` - the filter to be used for expanding character maps defined in the stylesheet
    `normalizer` - the filter used for Unicode normalization
  Returns:
    a Receiver acting as the entry point to the serialization pipeline
  Throws:
    `XPathException` - if a failure occurs

### createTextSerializer

    protected Receiver createTextSerializer(Emitter emitter,
                                            java.util.Properties props,
                                            PipelineConfiguration pipe,
                                            CharacterMapExpander characterMapExpander,
                                            ProxyReceiver normalizer)
                                     throws XPathException

  Create a serialization pipeline to implement the text output method. This method is protected so that it can be customized in a user-written SerializerFactory

  Parameters:
    `emitter` - the emitter at the end of the pipeline (created using the method `newTEXTEmitter()`
    `props` - the serialization properties
    `pipe` - the pipeline configuration information
    `characterMapExpander` - the filter to be used for expanding character maps defined in the stylesheet
    `normalizer` - the filter used for Unicode normalization
  Returns:
    a Receiver acting as the entry point to the serialization pipeline
  Throws:
    `XPathException` - if a failure occurs

### createXHTMLSerializer

    protected Receiver createXHTMLSerializer(Emitter emitter,
                                             java.util.Properties props,
                                             PipelineConfiguration pipe,
                                             CharacterMapExpander characterMapExpander,
                                             ProxyReceiver normalizer)
                                      throws XPathException

  Create a serialization pipeline to implement the XHTML output method. This method is protected so that it can be customized in a user-written SerializerFactory

  Parameters:
    `emitter` - the emitter at the end of the pipeline (created using the method `newXHTMLEmitter()`
    `props` - the serialization properties
    `pipe` - the pipeline configuration information
    `characterMapExpander` - the filter to be used for expanding character maps defined in the stylesheet
    `normalizer` - the filter used for Unicode normalization
  Returns:
    a Receiver acting as the entry point to the serialization pipeline
  Throws:
    `XPathException` - if a failure occurs

### createXMLSerializer

    protected Receiver createXMLSerializer(Emitter emitter,
                                           java.util.Properties props,
                                           PipelineConfiguration pipe,
                                           CharacterMapExpander characterMapExpander,
                                           ProxyReceiver normalizer)
                                    throws XPathException

  Create a serialization pipeline to implement the XML output method. This method is protected so that it can be customized in a user-written SerializerFactory

  Parameters:
    `emitter` - the emitter at the end of the pipeline (created using the method `newXHTMLEmitter()`
    `props` - the serialization properties
    `pipe` - the pipeline configuration information
    `characterMapExpander` - the filter to be used for expanding character maps defined in the stylesheet
    `normalizer` - the filter used for Unicode normalization
  Returns:
    a Receiver acting as the entry point to the serialization pipeline
  Throws:
    `XPathException` - if a failure occurs

### createUserDefinedOutputMethod

    protected Receiver createUserDefinedOutputMethod(java.lang.String method,
                                                     java.util.Properties props,
                                                     PipelineConfiguration pipe)
                                              throws XPathException

  Create a serialization pipeline to implement a user-defined output method. This method is protected so that it can be customized in a user-written SerializerFactory

  Parameters:
    `method` - the name of the user-defined output method, as a QName in Clark format (that is "{uri}local").
    `props` - the serialization properties
    `pipe` - the pipeline configuration information
  Returns:
    a Receiver acting as the entry point to the serialization pipeline
  Throws:
    `XPathException` - if a failure occurs

### newContentHandlerProxy

    protected ContentHandlerProxy newContentHandlerProxy()

  Create a ContentHandlerProxy. This method exists so that it can be overridden in a subclass.

  Returns:
    the newly created ContentHandlerProxy.

### newUncommittedSerializer

    protected UncommittedSerializer newUncommittedSerializer(javax.xml.transform.Result result,
                                                             java.util.Properties properties)

  Create an UncommittedSerializer. This method exists so that it can be overridden in a subclass.

  Parameters:
    `result` - the result destination
    `properties` - the serialization properties
  Returns:
    the newly created UncommittedSerializer.

### newXMLEmitter

    protected Emitter newXMLEmitter()

  Create a new XML Emitter. This method exists so that it can be overridden in a subclass.

  Returns:
    the newly created XML emitter.

### newHTMLEmitter

    protected Emitter newHTMLEmitter()

  Create a new HTML Emitter. This method exists so that it can be overridden in a subclass.

  Returns:
    the newly created HTML emitter.

### newXHTMLEmitter

    protected Emitter newXHTMLEmitter()

  Create a new XHTML Emitter. This method exists so that it can be overridden in a subclass.

  Returns:
    the newly created XHTML emitter.

### newTEXTEmitter

    protected Emitter newTEXTEmitter()

  Create a new Text Emitter. This method exists so that it can be overridden in a subclass.

  Returns:
    the newly created text emitter.

### newXMLIndenter

    protected ProxyReceiver newXMLIndenter(PipelineConfiguration pipe,
                                           java.util.Properties outputProperties)

  Create a new XML Indenter. This method exists so that it can be overridden in a subclass.

  Parameters:
    `pipe` - the pipeline configuration
    `outputProperties` - the serialization parameters
  Returns:
    the newly created XML indenter.

### newHTMLIndenter

    protected ProxyReceiver newHTMLIndenter(PipelineConfiguration pipe,
                                            java.util.Properties outputProperties)

  Create a new HTML Indenter. This method exists so that it can be overridden in a subclass.

  Parameters:
    `pipe` - the pipeline configuration
    `outputProperties` - the serialization parameters
  Returns:
    the newly created HTML indenter.

### newXHTMLIndenter

    protected ProxyReceiver newXHTMLIndenter(PipelineConfiguration pipe,
                                             java.util.Properties outputProperties)

  Create a new XHTML Indenter. This method exists so that it can be overridden in a subclass.

  Parameters:
    `pipe` - the pipeline configuration
    `outputProperties` - the serialization parameters
  Returns:
    the newly created XHTML indenter.

### newXHTMLMetaTagAdjuster

    protected MetaTagAdjuster newXHTMLMetaTagAdjuster(PipelineConfiguration pipe,
                                                      java.util.Properties outputProperties)

  Create a new XHTML MetaTagAdjuster, responsible for insertion, removal, or replacement of meta elements. This method exists so that it can be overridden in a subclass.

  Parameters:
    `pipe` - the pipeline configuration
    `outputProperties` - the serialization parameters
  Returns:
    the newly created XHTML MetaTagAdjuster.

### newHTMLMetaTagAdjuster

    protected MetaTagAdjuster newHTMLMetaTagAdjuster(PipelineConfiguration pipe,
                                                     java.util.Properties outputProperties)

  Create a new XHTML MetaTagAdjuster, responsible for insertion, removal, or replacement of meta elements. This method exists so that it can be overridden in a subclass.

  Parameters:
    `pipe` - the pipeline configuration
    `outputProperties` - the serialization parameters
  Returns:
    the newly created HTML MetaTagAdjuster.

### newHTMLURIEscaper

    protected ProxyReceiver newHTMLURIEscaper(PipelineConfiguration pipe,
                                              java.util.Properties outputProperties)

  Create a new HTML URI Escaper, responsible for percent-encoding of URIs in HTML output documents. This method exists so that it can be overridden in a subclass.

  Parameters:
    `pipe` - the pipeline configuration
    `outputProperties` - the serialization parameters
  Returns:
    the newly created HTML URI escaper.

### newCDATAFilter

    protected ProxyReceiver newCDATAFilter(PipelineConfiguration pipe,
                                           java.util.Properties outputProperties)
                                    throws XPathException

  Create a new CDATA Filter, responsible for insertion of CDATA sections where required. This method exists so that it can be overridden in a subclass.

  Parameters:
    `pipe` - the pipeline configuration
    `outputProperties` - the serialization parameters
  Returns:
    the newly created CDATA filter.
  Throws:
    `XPathException`

### newXML10ContentChecker

    protected ProxyReceiver newXML10ContentChecker(PipelineConfiguration pipe,
                                                   java.util.Properties outputProperties)

  Create a new XML 1.0 content checker, responsible for checking that the output conforms to XML 1.0 rules (this is used only if the Configuration supports XML 1.1 but the specific output file requires XML 1.0). This method exists so that it can be overridden in a subclass.

  Parameters:
    `pipe` - the pipeline configuration
    `outputProperties` - the serialization parameters
  Returns:
    the newly created XML 1.0 content checker.

### newUnicodeNormalizer

    protected ProxyReceiver newUnicodeNormalizer(PipelineConfiguration pipe,
                                                 java.util.Properties outputProperties)
                                          throws XPathException

  Create a Unicode Normalizer. This method exists so that it can be overridden in a subclass.

  Parameters:
    `pipe` - the pipeline configuration
    `outputProperties` - the serialization parameters
  Returns:
    the newly created Unicode normalizer.
  Throws:
    `XPathException`

### newCharacterMapExpander

    public CharacterMapExpander newCharacterMapExpander()

  Create a new CharacterMapExpander. This method exists so that it can be overridden in a subclass.

  Returns:
    the newly created CharacterMapExpander.

Copyright (c) Saxonica Limited. All rights reserved.