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.
getReceiver
public Receiver getReceiver(Result result,
PipelineConfiguration pipe,
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.
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
- the newly constructed Receiver that performs the required serialization
newCDATAFilter
protected ProxyReceiver newCDATAFilter(PipelineConfiguration pipe,
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.
pipe
- the pipeline configurationoutputProperties
- the serialization parameters
- 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.
- the newly created CharacterMapExpander.
newContentHandlerProxy
protected ContentHandlerProxy newContentHandlerProxy()
Create a ContentHandlerProxy. This method exists so that it can be overridden in a subclass.
- 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.
- 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.
pipe
- the pipeline configurationoutputProperties
- the serialization parameters
- 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.
pipe
- the pipeline configurationoutputProperties
- the serialization parameters
- 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.
pipe
- the pipeline configurationoutputProperties
- the serialization parameters
- 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.
- 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.
result
- the result destinationproperties
- the serialization properties
- the newly created UncommittedSerializer.
newUnicodeNormalizer
protected ProxyReceiver newUnicodeNormalizer(PipelineConfiguration pipe,
Properties outputProperties)
throws XPathException
Create a Unicode Normalizer. This method exists so that it can be overridden in a subclass.
pipe
- the pipeline configurationoutputProperties
- the serialization parameters
- 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.
- 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.
pipe
- the pipeline configurationoutputProperties
- the serialization parameters
- 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.
pipe
- the pipeline configurationoutputProperties
- the serialization parameters
- 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.
pipe
- the pipeline configurationoutputProperties
- the serialization parameters
- 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.
- 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.
pipe
- the pipeline configurationoutputProperties
- the serialization parameters
- the newly created XML indenter.