Package net.sf.saxon.event
Class SerializerFactory
java.lang.Object
net.sf.saxon.event.SerializerFactory
- All Implemented Interfaces:
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:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected Receiver
createHTMLSerializer
(Emitter emitter, Properties props, PipelineConfiguration pipe, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer) Create a serialization pipeline to implement the HTML output method.protected Receiver
createTextSerializer
(Emitter emitter, Properties props, PipelineConfiguration pipe, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer) Create a serialization pipeline to implement the text output method.protected Receiver
createUserDefinedOutputMethod
(String method, Properties props, PipelineConfiguration pipe) Create a serialization pipeline to implement a user-defined output method.protected Receiver
createXHTMLSerializer
(Emitter emitter, Properties props, PipelineConfiguration pipe, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer) Create a serialization pipeline to implement the XHTML output method.protected Receiver
createXMLSerializer
(Emitter emitter, Properties props, PipelineConfiguration pipe, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer) Create a serialization pipeline to implement the XML output method.getReceiver
(Result result, PipelineConfiguration pipe, Properties props) Get a Receiver that wraps a given Result object.protected ProxyReceiver
newCDATAFilter
(PipelineConfiguration pipe, Properties outputProperties) Create a new CDATA Filter, responsible for insertion of CDATA sections where required.Create a new CharacterMapExpander.protected ContentHandlerProxy
Create a ContentHandlerProxy.protected Emitter
Create a new HTML Emitter.protected ProxyReceiver
newHTMLIndenter
(PipelineConfiguration pipe, Properties outputProperties) Create a new HTML Indenter.protected MetaTagAdjuster
newHTMLMetaTagAdjuster
(PipelineConfiguration pipe, Properties outputProperties) Create a new XHTML MetaTagAdjuster, responsible for insertion, removal, or replacement of meta elements.protected ProxyReceiver
newHTMLURIEscaper
(PipelineConfiguration pipe, Properties outputProperties) Create a new HTML URI Escaper, responsible for percent-encoding of URIs in HTML output documents.protected Emitter
Create a new Text Emitter.protected UncommittedSerializer
newUncommittedSerializer
(Result result, Properties properties) Create an UncommittedSerializer.protected ProxyReceiver
newUnicodeNormalizer
(PipelineConfiguration pipe, Properties outputProperties) Create a Unicode Normalizer.protected Emitter
Create a new XHTML Emitter.protected ProxyReceiver
newXHTMLIndenter
(PipelineConfiguration pipe, Properties outputProperties) Create a new XHTML Indenter.protected MetaTagAdjuster
newXHTMLMetaTagAdjuster
(PipelineConfiguration pipe, Properties outputProperties) Create a new XHTML MetaTagAdjuster, responsible for insertion, removal, or replacement of meta elements.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).protected Emitter
Create a new XML Emitter.protected ProxyReceiver
newXMLIndenter
(PipelineConfiguration pipe, Properties outputProperties) Create a new XML Indenter.
-
Constructor Details
-
SerializerFactory
public SerializerFactory()Create a SerializerFactory
-
-
Method Details
-
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 aSequenceWrapper
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, 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 methodnewHTMLEmitter()
props
- the serialization propertiespipe
- the pipeline configuration informationcharacterMapExpander
- the filter to be used for expanding character maps defined in the stylesheetnormalizer
- 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) 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 methodnewTEXTEmitter()
props
- the serialization propertiespipe
- the pipeline configuration informationcharacterMapExpander
- the filter to be used for expanding character maps defined in the stylesheetnormalizer
- 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, 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 methodnewXHTMLEmitter()
props
- the serialization propertiespipe
- the pipeline configuration informationcharacterMapExpander
- the filter to be used for expanding character maps defined in the stylesheetnormalizer
- 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) 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 methodnewXHTMLEmitter()
props
- the serialization propertiespipe
- the pipeline configuration informationcharacterMapExpander
- the filter to be used for expanding character maps defined in the stylesheetnormalizer
- 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) 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 propertiespipe
- the pipeline configuration information- Returns:
- a Receiver acting as the entry point to the serialization pipeline
- Throws:
XPathException
- if a failure occurs
-
newContentHandlerProxy
Create a ContentHandlerProxy. This method exists so that it can be overridden in a subclass.- Returns:
- the newly created ContentHandlerProxy.
-
newUncommittedSerializer
Create an UncommittedSerializer. This method exists so that it can be overridden in a subclass.- Parameters:
result
- the result destinationproperties
- the serialization properties- Returns:
- the newly created UncommittedSerializer.
-
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
Create a new HTML Emitter. This method exists so that it can be overridden in a subclass.- Returns:
- the newly created HTML 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
Create a new Text Emitter. This method exists so that it can be overridden in a subclass.- Returns:
- the newly created text emitter.
-
newXMLIndenter
Create a new XML Indenter. This method exists so that it can be overridden in a subclass.- Parameters:
pipe
- the pipeline configurationoutputProperties
- the serialization parameters- Returns:
- the newly created XML indenter.
-
newHTMLIndenter
Create a new HTML Indenter. This method exists so that it can be overridden in a subclass.- Parameters:
pipe
- the pipeline configurationoutputProperties
- the serialization parameters- Returns:
- the newly created HTML indenter.
-
newXHTMLIndenter
Create a new XHTML Indenter. This method exists so that it can be overridden in a subclass.- Parameters:
pipe
- the pipeline configurationoutputProperties
- 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 configurationoutputProperties
- the serialization parameters- Returns:
- the newly created XHTML MetaTagAdjuster.
-
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 configurationoutputProperties
- the serialization parameters- Returns:
- the newly created HTML MetaTagAdjuster.
-
newHTMLURIEscaper
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 configurationoutputProperties
- the serialization parameters- Returns:
- the newly created HTML URI escaper.
-
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.- Parameters:
pipe
- the pipeline configurationoutputProperties
- the serialization parameters- Returns:
- the newly created CDATA filter.
- Throws:
XPathException
-
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 configurationoutputProperties
- the serialization parameters- Returns:
- the newly created XML 1.0 content checker.
-
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.- Parameters:
pipe
- the pipeline configurationoutputProperties
- the serialization parameters- Returns:
- the newly created Unicode normalizer.
- Throws:
XPathException
-
newCharacterMapExpander
Create a new CharacterMapExpander. This method exists so that it can be overridden in a subclass.- Returns:
- the newly created CharacterMapExpander.
-