net.sf.saxon.event

Class SerializerFactory

public class SerializerFactory extends Object implements 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.
Constructor Summary
SerializerFactory()
Create a SerializerFactory
Method Summary
protected ReceivercreateHTMLSerializer(Emitter emitter, Properties props, PipelineConfiguration pipe, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer)
Create a serialization pipeline to implement the HTML output method.
protected ReceivercreateTextSerializer(Emitter emitter, Properties props, PipelineConfiguration pipe, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer)
Create a serialization pipeline to implement the text output method.
protected ReceivercreateUserDefinedOutputMethod(String method, Properties props, PipelineConfiguration pipe)
Create a serialization pipeline to implement a user-defined output method.
protected ReceivercreateXHTMLSerializer(Emitter emitter, Properties props, PipelineConfiguration pipe, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer)
Create a serialization pipeline to implement the XHTML output method.
protected ReceivercreateXMLSerializer(Emitter emitter, Properties props, PipelineConfiguration pipe, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer)
Create a serialization pipeline to implement the XML output method.
ReceivergetReceiver(Result result, PipelineConfiguration pipe, Properties props)
Get a Receiver that wraps a given Result object.
protected ProxyReceivernewCDATAFilter(PipelineConfiguration pipe, Properties outputProperties)
Create a new CDATA Filter, responsible for insertion of CDATA sections where required.
CharacterMapExpandernewCharacterMapExpander()
Create a new CharacterMapExpander.
protected ContentHandlerProxynewContentHandlerProxy()
Create a ContentHandlerProxy.
protected EmitternewHTMLEmitter()
Create a new HTML Emitter.
protected ProxyReceivernewHTMLIndenter(PipelineConfiguration pipe, Properties outputProperties)
Create a new HTML Indenter.
protected MetaTagAdjusternewHTMLMetaTagAdjuster(PipelineConfiguration pipe, Properties outputProperties)
Create a new XHTML MetaTagAdjuster, responsible for insertion, removal, or replacement of meta elements.
protected ProxyReceivernewHTMLURIEscaper(PipelineConfiguration pipe, Properties outputProperties)
Create a new HTML URI Escaper, responsible for percent-encoding of URIs in HTML output documents.
protected EmitternewTEXTEmitter()
Create a new Text Emitter.
protected UncommittedSerializernewUncommittedSerializer(Result result, Properties properties)
Create an UncommittedSerializer.
protected ProxyReceivernewUnicodeNormalizer(PipelineConfiguration pipe, Properties outputProperties)
Create a Unicode Normalizer.
protected EmitternewXHTMLEmitter()
Create a new XHTML Emitter.
protected ProxyReceivernewXHTMLIndenter(PipelineConfiguration pipe, Properties outputProperties)
Create a new XHTML Indenter.
protected MetaTagAdjusternewXHTMLMetaTagAdjuster(PipelineConfiguration pipe, Properties outputProperties)
Create a new XHTML MetaTagAdjuster, responsible for insertion, removal, or replacement of meta elements.
protected ProxyReceivernewXML10ContentChecker(PipelineConfiguration pipe, 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 EmitternewXMLEmitter()
Create a new XML Emitter.
protected ProxyReceivernewXMLIndenter(PipelineConfiguration pipe, Properties outputProperties)
Create a new XML Indenter.

Constructor Detail

SerializerFactory

public SerializerFactory()
Create a SerializerFactory

Method Detail

createHTMLSerializer

protected Receiver createHTMLSerializer(Emitter emitter, Properties props, PipelineConfiguration pipe, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer)
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 SerializerFactory 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, Properties props, PipelineConfiguration pipe, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer)
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 SerializerFactory 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(String method, Properties props, PipelineConfiguration pipe)
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

createXHTMLSerializer

protected Receiver createXHTMLSerializer(Emitter emitter, Properties props, PipelineConfiguration pipe, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer)
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 SerializerFactory 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, Properties props, PipelineConfiguration pipe, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer)
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 SerializerFactory 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

getReceiver

public Receiver getReceiver(Result result, PipelineConfiguration pipe, Properties props)
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 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

newCDATAFilter

protected ProxyReceiver newCDATAFilter(PipelineConfiguration pipe, Properties outputProperties)
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.

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.

newContentHandlerProxy

protected ContentHandlerProxy newContentHandlerProxy()
Create a ContentHandlerProxy. This method exists so that it can be overridden in a subclass.

Returns: the newly created ContentHandlerProxy.

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.

newHTMLIndenter

protected ProxyReceiver newHTMLIndenter(PipelineConfiguration pipe, 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.

newHTMLMetaTagAdjuster

protected MetaTagAdjuster newHTMLMetaTagAdjuster(PipelineConfiguration pipe, 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, 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.

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.

newUncommittedSerializer

protected UncommittedSerializer newUncommittedSerializer(Result result, 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.

newUnicodeNormalizer

protected ProxyReceiver newUnicodeNormalizer(PipelineConfiguration pipe, Properties outputProperties)
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.

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.

newXHTMLIndenter

protected ProxyReceiver newXHTMLIndenter(PipelineConfiguration pipe, 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, 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.

newXML10ContentChecker

protected ProxyReceiver newXML10ContentChecker(PipelineConfiguration pipe, 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.

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.

newXMLIndenter

protected ProxyReceiver newXMLIndenter(PipelineConfiguration pipe, 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.