Package net.sf.saxon.lib

## Class SerializerFactory

- java.lang.Object
- - net.sf.saxon.lib.SerializerFactory

- Direct Known Subclasses:
    `SerializerFactoryPE`

      public class SerializerFactory
      extends java.lang.Object

  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

    Constructors
    Constructor | Description
    --- | ---
    `SerializerFactory​(Configuration config)` | Create a SerializerFactory
    `SerializerFactory​(PipelineConfiguration pipe)` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Receiver` | `addHtml5Component​(Receiver target, java.util.Properties outputProperties)` | This method constructs a step in the output pipeline to perform namespace-related tasks for HTML5 serialization.
    `Receiver` | `addTextOutputFilter​(Receiver next, java.util.Properties properties)` | Add a filter to the text output method pipeline.
    `protected void` | `checkExtensions​(java.lang.String key)` |
    `protected static java.lang.String` | `checkListOfEQNames​(java.lang.String key, java.lang.String value)` |
    `protected static java.lang.String` | `checkListOfEQNamesAllowingStar​(java.lang.String key, java.lang.String value)` |
    `protected static void` | `checkNonNegativeInteger​(java.lang.String key, java.lang.String value)` |
    `java.lang.String` | `checkOutputProperty​(java.lang.String key, java.lang.String value)` | Check that a supplied output property is valid, and normalize the value (specifically in the case of boolean values where yes|true|1 are normalized to "yes", and no|false|0 are normalized to "no").
    `protected static java.lang.String` | `checkYesOrNo​(java.lang.String key, java.lang.String value)` |
    `protected SequenceReceiver` | `createHTMLSerializer​(Emitter emitter, SerializationProperties params, PipelineConfiguration pipe)` | Create a serialization pipeline to implement the HTML output method.
    `protected SequenceReceiver` | `createSaxonSerializationMethod​(java.lang.String method, SerializationProperties params, PipelineConfiguration pipe, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer, javax.xml.transform.stream.StreamResult result)` |
    `protected SequenceReceiver` | `createTextSerializer​(Emitter emitter, SerializationProperties params)` | Create a serialization pipeline to implement the text output method.
    `protected SequenceReceiver` | `createUserDefinedOutputMethod​(java.lang.String method, java.util.Properties props, PipelineConfiguration pipe)` | Create a serialization pipeline to implement a user-defined output method.
    `protected SequenceReceiver` | `createXHTMLSerializer​(Emitter emitter, SerializationProperties params, PipelineConfiguration pipe)` | Create a serialization pipeline to implement the XHTML output method.
    `protected SequenceReceiver` | `createXMLSerializer​(XMLEmitter emitter, SerializationProperties params)` | Create a serialization pipeline to implement the XML output method.
    `protected SequenceReceiver` | `customizeAdaptiveSerializer​(AdaptiveEmitter emitter, java.util.Properties props, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer)` | Create a serialization pipeline to implement the Adaptive output method.
    `protected SequenceReceiver` | `customizeJSONSerializer​(JSONSerializer emitter, java.util.Properties props, CharacterMapExpander characterMapExpander, ProxyReceiver normalizer)` | Create a serialization pipeline to implement the JSON output method.
    `Configuration` | `getConfiguration()` |
    `protected java.util.Comparator<AtomicValue>` | `getPropertySorter​(java.lang.String sortSpecification)` |
    `Receiver` | `getReceiver​(javax.xml.transform.Result result)` | Get a Receiver that wraps a given Result object.
    `Receiver` | `getReceiver​(javax.xml.transform.Result result, PipelineConfiguration pipe, java.util.Properties props)` | Deprecated. since Saxon 9.9: use one of the other `getReceiver` methods
    `Receiver` | `getReceiver​(javax.xml.transform.Result result, SerializationProperties params)` | Get a Receiver that wraps a given Result object.
    `Receiver` | `getReceiver​(javax.xml.transform.Result result, SerializationProperties params, PipelineConfiguration pipe)` | Get a Receiver that wraps a given Result object.
    `StreamWriterToReceiver` | `getXMLStreamWriter​(javax.xml.transform.stream.StreamResult result, java.util.Properties properties)` | Create a serializer with given output properties, and return an XMLStreamWriter that can be used to feed events to the serializer.
    `protected Receiver` | `injectCharacterMapExpander​(SerializationProperties params, Receiver out, boolean useNullMarkers)` |
    `protected Receiver` | `injectUnicodeNormalizer​(SerializationProperties params, Receiver out)` |
    `SequenceReceiver` | `makeSequenceNormalizer​(Receiver receiver, java.util.Properties properties)` |
    `protected Receiver` | `newAttributeSorter​(Receiver next, java.util.Properties outputProperties)` | Create a new AttributeSorter, responsible for sorting of attributes into a specified order.
    `protected ProxyReceiver` | `newCDATAFilter​(Receiver next, java.util.Properties outputProperties)` | Create a new CDATA Filter, responsible for insertion of CDATA sections where required.
    `CharacterMapExpander` | `newCharacterMapExpander​(Receiver next)` | Create a new CharacterMapExpander.
    `protected ContentHandlerProxy` | `newContentHandlerProxy()` | Create a ContentHandlerProxy.
    `protected Emitter` | `newHTMLEmitter​(java.util.Properties properties)` | Create a new HTML Emitter.
    `protected ProxyReceiver` | `newHTMLIndenter​(Receiver next, java.util.Properties outputProperties)` | Create a new HTML Indenter.
    `protected MetaTagAdjuster` | `newHTMLMetaTagAdjuster​(Receiver next, java.util.Properties outputProperties)` | Create a new XHTML MetaTagAdjuster, responsible for insertion, removal, or replacement of meta elements.
    `protected ProxyReceiver` | `newHTMLURIEscaper​(Receiver next, java.util.Properties outputProperties)` | Create a new HTML URI Escaper, responsible for percent-encoding of URIs in HTML output documents.
    `protected Receiver` | `newNamespaceSorter​(Receiver next, java.util.Properties outputProperties)` | Create a new NamespaceSorter, responsible for sorting of namespaces into a specified order.
    `SequenceWrapper` | `newSequenceWrapper​(Receiver destination)` | Get a SequenceWrapper, a class that serializes an XDM sequence with full annotation of item types, node kinds, etc.
    `protected Emitter` | `newTEXTEmitter()` | Create a new Text Emitter.
    `protected UncommittedSerializer` | `newUncommittedSerializer​(javax.xml.transform.Result result, Receiver next, SerializationProperties params)` | Create an UncommittedSerializer.
    `protected ProxyReceiver` | `newUnicodeNormalizer​(Receiver next, java.util.Properties outputProperties)` | Create a Unicode Normalizer.
    `protected Emitter` | `newXHTMLEmitter​(java.util.Properties properties)` | Create a new XHTML Emitter.
    `protected ProxyReceiver` | `newXHTMLIndenter​(Receiver next, java.util.Properties outputProperties)` | Create a new XHTML Indenter.
    `protected MetaTagAdjuster` | `newXHTMLMetaTagAdjuster​(Receiver next, java.util.Properties outputProperties)` | Create a new XHTML MetaTagAdjuster, responsible for insertion, removal, or replacement of meta elements.
    `protected ProxyReceiver` | `newXHTMLURIEscaper​(Receiver next, java.util.Properties outputProperties)` | Create a new XHTML URI Escaper, responsible for percent-encoding of URIs in HTML output documents.
    `protected ProxyReceiver` | `newXML10ContentChecker​(Receiver next, 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​(java.util.Properties properties)` | Create a new XML Emitter.
    `protected ProxyReceiver` | `newXMLIndenter​(XMLEmitter next, java.util.Properties outputProperties)` | Create a new XML Indenter.
    `static java.lang.String` | `parseListOfNodeNames​(java.lang.String value, NamespaceResolver nsResolver, boolean useDefaultNS, boolean prevalidated, java.lang.String errorCode)` | Process a serialization property whose value is a list of element names, for example cdata-section-elements
    `SequenceReceiver` | `prepareNextStylesheet​(PipelineConfiguration pipe, java.lang.String href, java.lang.String baseURI, javax.xml.transform.Result result)` | Prepare another stylesheet to handle the output of this one.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SerializerFactory

          public SerializerFactory​(Configuration config)

      Create a SerializerFactory
      Parameters:
        `config` - the Saxon Configuration

    - #### SerializerFactory

          public SerializerFactory​(PipelineConfiguration pipe)

  - ### Method Detail

    - #### getConfiguration

          public Configuration getConfiguration()

    - #### getXMLStreamWriter

          public StreamWriterToReceiver getXMLStreamWriter​(javax.xml.transform.stream.StreamResult result,
                                                           java.util.Properties properties)
                                                    throws XPathException

      Create a serializer with given output properties, and return an XMLStreamWriter that can be used to feed events to the serializer.
      Parameters:
        `result` - the destination of the serialized output (wraps a Writer, an OutputStream, or a File)
        `properties` - the serialization properties to be used
      Returns:
        a serializer in the form of an XMLStreamWriter
      Throws:
        `XPathException` - if any error occurs

    - #### getReceiver

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

      Deprecated.
      since Saxon 9.9: use one of the other `getReceiver` methods
      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.

      The effect of the method changes in Saxon 9.7 so that for serialization methods other than "json" and "adaptive", the returned Receiver performs the function of "sequence normalization" as defined in the Serialization specification. Previously the client code handled this by wrapping the result in a ComplexContentOutputter (usually as a side-effect of called XPathContext.changeOutputDestination()). Wrapping in a ComplexContentOutputter is no longer necessary, though it does no harm because the ComplexContentOutputter is idempotent.

      Changed in 9.9 so that no character maps are used. Previously the character maps from the Executable associated with the Controller referenced from the PipelineConfiguration were used.

      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. If this includes the property `SaxonOutputKeys.USE_CHARACTER_MAPS` then the PipelineConfiguration must contain a non-null Controller, and the Executable associated with this Controller must have a CharacterMapIndex which is used to resolve the names of the character maps appearing in this property.
      Returns:
        the newly constructed Receiver that performs the required serialization
      Throws:
        `XPathException` - if any failure occurs

    - #### getReceiver

          public Receiver getReceiver​(javax.xml.transform.Result result)
                               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.

      This version of the method calls `getReceiver(Result, SerializationProperties, PipelineConfiguration)` supplying default output properties, and a `PipelineConfiguration` newly constructed using `Configuration.makePipelineConfiguration()`.

      Parameters:
        `result` - The final destination of the serialized output. Usually a StreamResult, but other kinds of Result are possible.
      Throws:
        `XPathException` - if a serializer cannot be created

    - #### getReceiver

          public Receiver getReceiver​(javax.xml.transform.Result result,
                                      SerializationProperties params)
                               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.

      This version of the method calls `getReceiver(Result, SerializationProperties, PipelineConfiguration)` supplying a `PipelineConfiguration` newly constructed using `Configuration.makePipelineConfiguration()`.

      Parameters:
        `result` - The final destination of the serialized output. Usually a StreamResult, but other kinds of Result are possible.
        `params` - The serialization properties, including character maps
      Returns:
        the newly constructed Receiver that performs the required serialization
      Throws:
        `XPathException` - if a serializer cannot be created

    - #### getReceiver

          public Receiver getReceiver​(javax.xml.transform.Result result,
                                      SerializationProperties params,
                                      PipelineConfiguration pipe)
                               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.

      The effect of the method changes in Saxon 9.7 so that for serialization methods other than "json" and "adaptive", the returned Receiver performs the function of "sequence normalization" as defined in the Serialization specification. Previously the client code handled this by wrapping the result in a ComplexContentOutputter (usually as a side-effect of called XPathContext.changeOutputDestination()). Wrapping in a ComplexContentOutputter is no longer necessary, though it does no harm because the ComplexContentOutputter is idempotent.

      Parameters:
        `result` - The final destination of the serialized output. Usually a StreamResult, but other kinds of Result are possible.
        `params` - The serialization properties, including character maps
        `pipe` - The PipelineConfiguration.
      Returns:
        the newly constructed Receiver that performs the required serialization
      Throws:
        `XPathException` - if a serializer cannot be created

    - #### makeSequenceNormalizer

          public SequenceReceiver makeSequenceNormalizer​(Receiver receiver,
                                                         java.util.Properties properties)

    - #### createHTMLSerializer

          protected SequenceReceiver createHTMLSerializer​(Emitter emitter,
                                                          SerializationProperties params,
                                                          PipelineConfiguration pipe)
                                                   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(java.util.Properties)`
        `params` - 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

    - #### createTextSerializer

          protected SequenceReceiver createTextSerializer​(Emitter emitter,
                                                          SerializationProperties params)
                                                   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()`
        `params` - the serialization properties
      Returns:
        a Receiver acting as the entry point to the serialization pipeline
      Throws:
        `XPathException` - if a failure occurs

    - #### customizeJSONSerializer

          protected SequenceReceiver customizeJSONSerializer​(JSONSerializer emitter,
                                                             java.util.Properties props,
                                                             CharacterMapExpander characterMapExpander,
                                                             ProxyReceiver normalizer)
                                                      throws XPathException

      Create a serialization pipeline to implement the JSON 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
        `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`

    - #### customizeAdaptiveSerializer

          protected SequenceReceiver customizeAdaptiveSerializer​(AdaptiveEmitter emitter,
                                                                 java.util.Properties props,
                                                                 CharacterMapExpander characterMapExpander,
                                                                 ProxyReceiver normalizer)

      Create a serialization pipeline to implement the Adaptive 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
        `props` - the serialization properties
        `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

    - #### createXHTMLSerializer

          protected SequenceReceiver createXHTMLSerializer​(Emitter emitter,
                                                           SerializationProperties params,
                                                           PipelineConfiguration pipe)
                                                    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(java.util.Properties)`
        `params` - 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

    - #### addHtml5Component

          public Receiver addHtml5Component​(Receiver target,
                                            java.util.Properties outputProperties)

      This method constructs a step in the output pipeline to perform namespace-related tasks for HTML5 serialization. The default implementation adds a NamespaceReducer and an XHTMLPrefixRemover
      Parameters:
        `target` - the Receiver that receives the output of this step
        `outputProperties` - the serialization properties
      Returns:
        a new Receiver to perform HTML5-related namespace manipulation

    - #### createXMLSerializer

          protected SequenceReceiver createXMLSerializer​(XMLEmitter emitter,
                                                         SerializationProperties params)
                                                  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 `newXMLEmitter(java.util.Properties)`
        `params` - the serialization properties
      Returns:
        a Receiver acting as the entry point to the serialization pipeline
      Throws:
        `XPathException` - if a failure occurs

    - #### createSaxonSerializationMethod

          protected SequenceReceiver createSaxonSerializationMethod​(java.lang.String method,
                                                                    SerializationProperties params,
                                                                    PipelineConfiguration pipe,
                                                                    CharacterMapExpander characterMapExpander,
                                                                    ProxyReceiver normalizer,
                                                                    javax.xml.transform.stream.StreamResult result)
                                                             throws XPathException

      Throws:
        `XPathException`

    - #### createUserDefinedOutputMethod

          protected SequenceReceiver 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

    - #### injectCharacterMapExpander

          protected Receiver injectCharacterMapExpander​(SerializationProperties params,
                                                        Receiver out,
                                                        boolean useNullMarkers)
                                                 throws XPathException

      Throws:
        `XPathException`

    - #### injectUnicodeNormalizer

          protected Receiver injectUnicodeNormalizer​(SerializationProperties params,
                                                     Receiver out)
                                              throws XPathException

      Throws:
        `XPathException`

    - #### 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,
                                                                   Receiver next,
                                                                   SerializationProperties params)

      Create an UncommittedSerializer. This method exists so that it can be overridden in a subclass.
      Parameters:
        `result` - the result destination
        `next` - the next receiver in the pipeline
        `params` - the serialization parameters
      Returns:
        the newly created UncommittedSerializer.

    - #### newXMLEmitter

          protected Emitter newXMLEmitter​(java.util.Properties properties)

      Create a new XML Emitter. This method exists so that it can be overridden in a subclass.
      Parameters:
        `properties` - the output properties
      Returns:
        the newly created XML emitter.

    - #### newHTMLEmitter

          protected Emitter newHTMLEmitter​(java.util.Properties properties)

      Create a new HTML Emitter. This method exists so that it can be overridden in a subclass.
      Parameters:
        `properties` - the output properties
      Returns:
        the newly created HTML emitter.

    - #### newXHTMLEmitter

          protected Emitter newXHTMLEmitter​(java.util.Properties properties)

      Create a new XHTML Emitter. This method exists so that it can be overridden in a subclass.
      Parameters:
        `properties` - the output properties
      Returns:
        the newly created XHTML emitter.

    - #### addTextOutputFilter

          public Receiver addTextOutputFilter​(Receiver next,
                                              java.util.Properties properties)
                                       throws XPathException

      Add a filter to the text output method pipeline. This does nothing unless overridden in a subclass
      Parameters:
        `next` - the next receiver (typically the TextEmitter)
        `properties` - the output properties
      Returns:
        the receiver to be used in place of the "next" receiver
      Throws:
        `XPathException` - if the operation fails

    - #### 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​(XMLEmitter next,
                                                 java.util.Properties outputProperties)

      Create a new XML Indenter. This method exists so that it can be overridden in a subclass.
      Parameters:
        `next` - the next receiver in the pipeline
        `outputProperties` - the serialization parameters
      Returns:
        the newly created XML indenter.

    - #### newHTMLIndenter

          protected ProxyReceiver newHTMLIndenter​(Receiver next,
                                                  java.util.Properties outputProperties)

      Create a new HTML Indenter. This method exists so that it can be overridden in a subclass.
      Parameters:
        `next` - the next receiver in the pipeline
        `outputProperties` - the serialization parameters
      Returns:
        the newly created HTML indenter.

    - #### newXHTMLIndenter

          protected ProxyReceiver newXHTMLIndenter​(Receiver next,
                                                   java.util.Properties outputProperties)

      Create a new XHTML Indenter. This method exists so that it can be overridden in a subclass.
      Parameters:
        `next` - the next receiver in the pipeline
        `outputProperties` - the serialization parameters
      Returns:
        the newly created XHTML indenter.

    - #### newXHTMLMetaTagAdjuster

          protected MetaTagAdjuster newXHTMLMetaTagAdjuster​(Receiver next,
                                                            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:
        `next` - the next receiver in the pipeline
        `outputProperties` - the serialization parameters
      Returns:
        the newly created XHTML MetaTagAdjuster.

    - #### newHTMLMetaTagAdjuster

          protected MetaTagAdjuster newHTMLMetaTagAdjuster​(Receiver next,
                                                           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:
        `next` - the next receiver in the pipeline
        `outputProperties` - the serialization parameters
      Returns:
        the newly created HTML MetaTagAdjuster.

    - #### newHTMLURIEscaper

          protected ProxyReceiver newHTMLURIEscaper​(Receiver next,
                                                    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:
        `next` - the next receiver in the pipeline
        `outputProperties` - the serialization parameters
      Returns:
        the newly created HTML URI escaper.

    - #### newXHTMLURIEscaper

          protected ProxyReceiver newXHTMLURIEscaper​(Receiver next,
                                                     java.util.Properties outputProperties)

      Create a new XHTML 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:
        `next` - the next receiver in the pipeline
        `outputProperties` - the serialization parameters
      Returns:
        the newly created HTML URI escaper.

    - #### newCDATAFilter

          protected ProxyReceiver newCDATAFilter​(Receiver next,
                                                 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:
        `next` - the next receiver in the pipeline
        `outputProperties` - the serialization parameters
      Returns:
        the newly created CDATA filter.
      Throws:
        `XPathException` - if an error occurs

    - #### newAttributeSorter

          protected Receiver newAttributeSorter​(Receiver next,
                                                java.util.Properties outputProperties)
                                         throws XPathException

      Create a new AttributeSorter, responsible for sorting of attributes into a specified order. This method exists so that it can be overridden in a subclass. The Saxon-HE version of this method returns the supplied receiver unchanged (attribute sorting is not supported in Saxon-HE). The AttributeSorter handles both sorting of attributes into a user-specified order (saxon:attribute-order) and sorting into C14N order (saxon:canonical).
      Parameters:
        `next` - the next receiver in the pipeline
        `outputProperties` - the serialization parameters
      Returns:
        the newly created filter.
      Throws:
        `XPathException`

    - #### newNamespaceSorter

          protected Receiver newNamespaceSorter​(Receiver next,
                                                java.util.Properties outputProperties)
                                         throws XPathException

      Create a new NamespaceSorter, responsible for sorting of namespaces into a specified order.
      Parameters:
        `next` - the next receiver in the pipeline
        `outputProperties` - the serialization parameters
      Returns:
        the newly created filter.
      Throws:
        `XPathException`

    - #### newXML10ContentChecker

          protected ProxyReceiver newXML10ContentChecker​(Receiver next,
                                                         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:
        `next` - the next receiver in the pipeline
        `outputProperties` - the serialization parameters
      Returns:
        the newly created XML 1.0 content checker.

    - #### newUnicodeNormalizer

          protected ProxyReceiver newUnicodeNormalizer​(Receiver next,
                                                       java.util.Properties outputProperties)
                                                throws XPathException

      Create a Unicode Normalizer. This method exists so that it can be overridden in a subclass.
      Parameters:
        `next` - the next receiver in the pipeline
        `outputProperties` - the serialization parameters
      Returns:
        the newly created Unicode normalizer.
      Throws:
        `XPathException` - if an error occurs

    - #### newCharacterMapExpander

          public CharacterMapExpander newCharacterMapExpander​(Receiver next)

      Create a new CharacterMapExpander. This method exists so that it can be overridden in a subclass.
      Parameters:
        `next` - the next receiver in the pipeline
      Returns:
        the newly created CharacterMapExpander.

    - #### prepareNextStylesheet

          public SequenceReceiver prepareNextStylesheet​(PipelineConfiguration pipe,
                                                        java.lang.String href,
                                                        java.lang.String baseURI,
                                                        javax.xml.transform.Result result)
                                                 throws XPathException

      Prepare another stylesheet to handle the output of this one.

      This method is intended for internal use, to support the `saxon:next-in-chain` extension.

      Parameters:
        `pipe` - the current transformation
        `href` - URI of the next stylesheet to be applied
        `baseURI` - base URI for resolving href if it's a relative URI
        `result` - the output destination of the current stylesheet
      Returns:
        a replacement destination for the current stylesheet
      Throws:
        `XPathException` - if any dynamic error occurs

    - #### newSequenceWrapper

          public SequenceWrapper newSequenceWrapper​(Receiver destination)

      Get a SequenceWrapper, a class that serializes an XDM sequence with full annotation of item types, node kinds, etc. There are variants for Saxon-HE and Saxon-PE
      Parameters:
        `destination` - the place where the wrapped sequence will be sent
      Returns:
        the new SequenceWrapper

    - #### checkOutputProperty

          public java.lang.String checkOutputProperty​(java.lang.String key,
                                                      java.lang.String value)
                                               throws XPathException

      Check that a supplied output property is valid, and normalize the value (specifically in the case of boolean values where yes|true|1 are normalized to "yes", and no|false|0 are normalized to "no"). Clark names in the value (`{uri}local`) are normalized to EQNames (`Q{uri}local`)
      Parameters:
        `key` - the name of the property, in Clark format
        `value` - the value of the property. This may be set to null, in which case no validation takes place. The value must be in JAXP format, that is, with lexical QNames expanded to either EQNames or Clark names.
      Returns:
        normalized value of the property, or null if the supplied value is null
      Throws:
        `XPathException` - if the property name or value is invalid

    - #### checkYesOrNo

          protected static java.lang.String checkYesOrNo​(java.lang.String key,
                                                         java.lang.String value)
                                                  throws XPathException

      Throws:
        `XPathException`

    - #### checkNonNegativeInteger

          protected static void checkNonNegativeInteger​(java.lang.String key,
                                                        java.lang.String value)
                                                 throws XPathException

      Throws:
        `XPathException`

    - #### checkListOfEQNames

          protected static java.lang.String checkListOfEQNames​(java.lang.String key,
                                                               java.lang.String value)
                                                        throws XPathException

      Throws:
        `XPathException`

    - #### checkListOfEQNamesAllowingStar

          protected static java.lang.String checkListOfEQNamesAllowingStar​(java.lang.String key,
                                                                           java.lang.String value)
                                                                    throws XPathException

      Throws:
        `XPathException`

    - #### parseListOfNodeNames

          public static java.lang.String parseListOfNodeNames​(java.lang.String value,
                                                              NamespaceResolver nsResolver,
                                                              boolean useDefaultNS,
                                                              boolean prevalidated,
                                                              java.lang.String errorCode)
                                                       throws XPathException

      Process a serialization property whose value is a list of element names, for example cdata-section-elements
      Parameters:
        `value` - The value of the property as written
        `nsResolver` - The namespace resolver to use; may be null if prevalidated is set or if names are supplied in Clark format
        `useDefaultNS` - True if the namespace resolver should be used for unprefixed names; false if unprefixed names should be considered to be in no namespace
        `prevalidated` - true if the property has already been validated
        `errorCode` - The error code to return in the event of problems
      Returns:
        The list of element names with lexical QNames replaced by Clark names, starting with a single space
      Throws:
        `XPathException` - if any error is found in the list of element names, for example, an undeclared namespace prefix

    - #### checkExtensions

          protected void checkExtensions​(java.lang.String key)
                                  throws XPathException

      Throws:
        `XPathException`

    - #### getPropertySorter

          protected java.util.Comparator<AtomicValue> getPropertySorter​(java.lang.String sortSpecification)
                                                                 throws XPathException

      Throws:
        `XPathException`