Class XsltTransformer

  • All Implemented Interfaces:
    Destination

    public class XsltTransformer
    extends java.lang.Object
    implements Destination
    An XsltTransformer represents a compiled and loaded stylesheet ready for execution. The XsltTransformer holds details of the dynamic evaluation context for the stylesheet.

    An XsltTransformer must not be used concurrently in multiple threads. It is safe, however, to reuse the object within a single thread to run the same stylesheet several times. Running the stylesheet does not change the context that has been established.

    An XsltTransformer is always constructed by running the Load method of an XsltExecutable.

    An XsltTransformer is itself a Destination. This means it is possible to use one XsltTransformer as the destination to receive the results of another transformation, this providing a simple way for transformations to be chained into a pipeline.

    Since:
    9.0
    • Constructor Detail

      • XsltTransformer

        protected XsltTransformer​(Processor processor,
                                  Controller controller)
        Protected constructor
        Parameters:
        processor - the S9API processor
        controller - the Saxon controller object
    • Method Detail

      • setInitialTemplate

        public void setInitialTemplate​(QName templateName)
                                throws SaxonApiException
        Set the initial named template for the transformation
        Parameters:
        templateName - the name of the initial template, or null to indicate that there should be no initial named template
        Throws:
        SaxonApiException - if there is no named template with this name
      • getInitialTemplate

        public QName getInitialTemplate()
        Get the initial named template for the transformation, if one has been set
        Returns:
        the name of the initial template, or null if none has been set
      • setInitialMode

        public void setInitialMode​(QName modeName)
        Set the initial mode for the transformation
        Parameters:
        modeName - the name of the initial mode, or null to indicate the default (unnamed) mode
      • getInitialMode

        public QName getInitialMode()
        Get the initial mode for the transformation, if one has been set.
        Returns:
        the initial mode for the transformation. Returns null if no mode has been set, or if the mode was set to null to represent the default (unnamed) mode
      • setSource

        public void setSource​(javax.xml.transform.Source source)
                       throws SaxonApiException
        Set the source document for the transformation. This method is equivalent to building a document from the supplied source object, and then supplying the document node of the resulting document as the initial context node.
        Parameters:
        source - the principal source document for the transformation
        Throws:
        SaxonApiException
      • setInitialContextNode

        public void setInitialContextNode​(XdmNode node)
        Set the initial context node for the transformation.

        This is ignored in the case where the XsltTransformer is used as the Destination of another process. In that case the initial context node will always be the document node of the document that is being streamed to this destination.

        Parameters:
        node - the initial context node, or null if there is to be no initial context node
      • getInitialContextNode

        public XdmNode getInitialContextNode()
        Get the initial context node for the transformation, if one has been set
        Returns:
        the initial context node, or null if none has been set. This will not necessarily be the same XdmNode instance as was supplied, but it will be an XdmNode object that represents the same underlying node.
      • setParameter

        public void setParameter​(QName name,
                                 XdmValue value)
        Set the value of a stylesheet parameter
        Parameters:
        name - the name of the stylesheet parameter, as a QName
        value - the value of the stylesheet parameter, or null to clear a previously set value
      • getParameter

        public XdmValue getParameter​(QName name)
        Get the value that has been set for a stylesheet parameter
        Parameters:
        name - the parameter whose name is required
        Returns:
        the value that has been set for the parameter, or null if no value has been set
      • setDestination

        public void setDestination​(Destination destination)
        Set the destination to be used for the transformation.

        This method can be used to chain transformations into a pipeline, by using one XsltTransformer as the destination of another

        Parameters:
        destination - the destination to be used
      • setMessageListener

        public void setMessageListener​(MessageListener listener)
        Set the MessageListener to be notified whenever the stylesheet evaluates an xsl:message instruction. If no MessageListener is nominated, the output of xsl:message instructions will be serialized and sent to the standard error stream.
        Parameters:
        listener - the MessageListener to be used
        Since:
        9.1
      • getMessageListener

        public MessageListener getMessageListener()
        Get the MessageListener to be notified whenever the stylesheet evaluates an xsl:message instruction. If no MessageListener has been nominated, return null
        Returns:
        the user-supplied MessageListener, or null if none has been supplied
        Since:
        9.1
      • transform

        public void transform()
                       throws SaxonApiException
        Perform the transformation. If this method is used, a destination must have been supplied previously
        Throws:
        SaxonApiException - if any dynamic error occurs during the transformation
        java.lang.IllegalStateException - if no destination has been supplied
      • getReceiver

        public Receiver getReceiver​(Configuration config)
                             throws SaxonApiException
        Return a Receiver which can be used to supply the principal source document for the transformation. This method is intended primarily for internal use, though it can also be called by a user application that wishes to feed events into the transformation engine.

        Saxon calls this method to obtain a Receiver, to which it then sends a sequence of events representing the content of an XML document. This method is provided so that XsltTransformer implements Destination, allowing one transformation to receive the results of another in a pipeline.

        Before calling this method, the setDestination(net.sf.saxon.s9api.Destination) method must be called to supply a destination for the transformation.

        Note that when an XsltTransformer is used as a Destination, the initial context node set on that XsltTransformer is ignored.

        Specified by:
        getReceiver in interface Destination
        Parameters:
        config - The Saxon configuration. This is supplied so that the destination can use information from the configuration (for example, a reference to the name pool) to construct or configure the returned Receiver.
        Returns:
        the Receiver to which events are to be sent.
        Throws:
        SaxonApiException - if the Receiver cannot be created
        java.lang.IllegalStateException - if no Destination has been supplied
      • getUnderlyingController

        public Controller getUnderlyingController()
        Get the underlying Controller used to implement this XsltTransformer. This provides access to lower-level methods not otherwise available in the s9api interface. Note that classes and methods obtained by this route cannot be guaranteed stable from release to release.
        Since:
        9.0.0.4