The xslt: component allows you to process a message using an XSLT template. This can be ideal when using Templating to generate respopnses for requests.
xslt:templateName
Where templateName is the classpath-local URI of the template to invoke; or the complete URL of the remote template. Refer to the Spring Documentation for more detail of the URI syntax
Here are some example URIs
| URI | Description |
|---|---|
| xslt:com/acme/mytransform.xs | refers to the file com/acme/mytransform.xsl on the classpath |
| xslt:file:///foo/bar.xs | refers to the file /foo/bar.xsl |
| xslt:http://acme.com/cheese/foo.xsl{code} | refers to the remote http resource |
For example you could use something like
from("activemq:My.Queue").
to("xslt:com/acme/mytransform.xsl");
To use a xslt template to forumulate a response for a message for InOut message exchanges (where there is a JMSReplyTo header).
If you want to use InOnly and consume the message and send it to another destination you could use
from("activemq:My.Queue").
to("xslt:com/acme/mytransform.xsl").
to("activemq:Another.Queue");
By default, all headers are added as parameters which are available in the XSLT. To do this you will need to declare the parameter so it is then 'useable'.
<setHeader headerName="myParam"><constant>42</constant></setHeader> <to uri="xslt:MyTransform.xsl"/>
and the XSLT just needs to declare it at the top level for it to be available.
<xsl: ...... >
<xsl:param name="myParam"/>
<xsl:template ...>
To use the above examples in Spring XML you would use something like
<camelContext xmlns="http://activemq.apache.org/camel/schema/spring">
<route>
<from uri="activemq:My.Queue"/>
<to uri="xslt:org/apache/camel/spring/processor/example.xsl"/>
<to uri="activemq:Another.Queue"/>
</route>
</camelContext>
There is a test case along with its Spring XML if you want a concrete example.
| Name | Default Value | Description |
|---|---|---|
| converter | null | Option to override default XmlConverter. Will lookup for the converter in the Registry. The provided converted must be of type org.apache.camel.converter.jaxp.XmlConverter. |
| transformerFactory | null | New added in FUSE Mediation Router 1.6 Option to override default TransformerFactory. Will lookup for the transformerFactory in the Registry. The provided transformer factory must be of type javax.xml.transform.TransformerFactory. |
| transformerFactoryClass | null | New added in FUSE Mediation Router 1.6 Option to override default TransformerFactory. Will create a TransformerFactoryClass instance and set it to the coverter. |