## net.sf.saxon.s9api
Class XsltTransformer

    java.lang.Object
      net.sf.saxon.s9api.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 Summary
`protected` `XsltTransformer(Processor processor, Controller controller)` Protected constructor

Method Summary
`Destination` `getDestination()` Get the destination that was specified in a previous call of `setDestination(net.sf.saxon.s9api.Destination)`
`XdmNode` `getInitialContextNode()` Get the initial context node for the transformation, if one has been set
`QName` `getInitialMode()` Get the initial mode for the transformation, if one has been set.
`QName` `getInitialTemplate()` Get the initial named template for the transformation, if one has been set
`MessageListener` `getMessageListener()` Get the MessageListener to be notified whenever the stylesheet evaluates an `xsl:message` instruction.
`XdmValue` `getParameter(QName name)` Get the value that has been set for a stylesheet parameter
`Receiver` `getReceiver(Configuration config)` Return a Receiver which can be used to supply the principal source document for the transformation.
`Controller` `getUnderlyingController()` Get the underlying Controller used to implement this XsltTransformer.
`void` `setDestination(Destination destination)` Set the destination to be used for the transformation.
`void` `setInitialContextNode(XdmNode node)` Set the initial context node for the transformation.
`void` `setInitialMode(QName modeName)` Set the initial mode for the transformation
`void` `setInitialTemplate(QName templateName)` Set the initial named template for the transformation
`void` `setMessageListener(MessageListener listener)` Set the MessageListener to be notified whenever the stylesheet evaluates an `xsl:message` instruction.
`void` `setParameter(QName name, XdmValue value)` Set the value of a stylesheet parameter
`void` `setSource(javax.xml.transform.Source source)` Set the source document for the transformation.
`void` `transform()` Perform the transformation.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

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

### getDestination

    public Destination getDestination()

  Get the destination that was specified in a previous call of `setDestination(net.sf.saxon.s9api.Destination)`

  Returns:
    the destination, or null if none has been supplied

### 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

Copyright (c) Saxonica Limited. All rights reserved.