Can someone point me in the right direction to pass parameters (or registry
values) into an XSLT transform?
In the documentation for the XSLT mediator it states,
"Optionally parameters (XSLT) could be passed into the transformation
through the 'property' elements."
I am trying to take advantage of this. Here is my synapse.xml code:
<localEntry key="xslt-key-resp"
src="file:repository/conf/resources/transform/MyTransform.xslt" />
.
.
.
<xslt key="xslt-key-resp">
<property name="TestMe" value="This is a test"/>
</xslt>
and MyTransform.xslt:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fn="http://www.w3.org/2005/02/xpath-functions">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<message inSession="FIX.4.2:OPTMED->BROKER" counter="1">
<header>
<field id="8"><![CDATA[FIX.4.2]]></field>
<field id="35"><![CDATA[8]]></field>
<field id="49"><![CDATA[BROKER]]></field>
<field id="52"><![CDATA[20090526-06:50:26.661]]></field>
<field id="56"><![CDATA[OPTMED]]></field>
</header>
<body>
<field id="11"><xsl:value-of select="$TestMe" /></field>
<field id="21"><![CDATA[1]]></field>
<field id="38"><![CDATA[10000]]></field>
<field id="40"><![CDATA[1]]></field>
<field id="54"><![CDATA[1]]></field>
<field id="59"><![CDATA[0]]></field>
<field id="60"><![CDATA[20090526-06:50:26.657]]></field>
<field id="453"><![CDATA[1]]></field>
</body>
<trailer>
<field id="10"><![CDATA[186]]></field>
</trailer>
</message>
</xsl:template>
</xsl:stylesheet>
When I run it, I get an exception:
2009-07-13 14:53:28,019 [-] [HttpClientWorker-20] ERROR XSLTMediator
Error creating XSLT transformer using : xslt-key-resp
javax.xml.transform.TransformerConfigurationException:
javax.xml.transform.TransformerException:
org.apache.xml.utils.WrappedRuntimeException: Could not find variable
with the name of TestMe
at
org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:961)
at
org.apache.synapse.mediators.transform.XSLTMediator.performXSLT(XSLTMediator.java:239)
at
org.apache.synapse.mediators.transform.XSLTMediator.mediate(XSLTMediator.java:197)
at
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:60)
at
org.apache.synapse.mediators.filters.FilterMediator.mediate(FilterMediator.java:112)
at
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:60)
at
org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:115)
at
org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:139)
at
org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:339)
at
org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:135)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:173)
at
org.apache.synapse.transport.nhttp.ClientWorker.run(ClientWorker.java:230)
at
org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
at java.lang.Thread.run(Thread.java:595)
Caused by: javax.xml.transform.TransformerException:
org.apache.xml.utils.WrappedRuntimeException: Could not find variable
with the name of TestMe
at
org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:952)
... 15 more
Caused by: org.apache.xml.utils.WrappedRuntimeException: Could not
find variable with the name of TestMe
at
org.apache.xpath.operations.Variable.fixupVariables(Variable.java:148)
at org.apache.xpath.XPath.fixupVariables(XPath.java:88)
at org.apache.xalan.templates.ElemValueOf.compose(ElemValueOf.java:183)
at
org.apache.xalan.templates.StylesheetRoot.composeTemplates(StylesheetRoot.java:361)
at
org.apache.xalan.templates.StylesheetRoot.composeTemplates(StylesheetRoot.java:366)
at
org.apache.xalan.templates.StylesheetRoot.composeTemplates(StylesheetRoot.java:366)
at
org.apache.xalan.templates.StylesheetRoot.composeTemplates(StylesheetRoot.java:366)
at
org.apache.xalan.templates.StylesheetRoot.composeTemplates(StylesheetRoot.java:366)
at
org.apache.xalan.templates.StylesheetRoot.composeTemplates(StylesheetRoot.java:366)
at
org.apache.xalan.templates.StylesheetRoot.recompose(StylesheetRoot.java:341)
at
org.apache.xalan.processor.StylesheetHandler.endDocument(StylesheetHandler.java:471)
at org.apache.xerces.parsers.AbstractSAXParser.endDocument(Unknown
Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl.endEntity(Unknown
Source)
at org.apache.xerces.impl.XMLEntityManager.endEntity(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.skipSpaces(Unknown Source)
at
org.apache.xerces.impl.XMLDocumentScannerImpl$TrailingMiscDispatcher.dispatch(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown
Source)
at
org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:922)
... 15 more
2009-07-13 14:53:28,219 [-] [DefaultQuartzScheduler_Worker-2] DEBUG
InMediator Current message is incoming - executing child mediators
2009-07-13 14:53:29,762 [-] [HttpClientWorker-20] ERROR XSLTMediator
Unable to perform XSLT transformation using : xslt-key-resp against
source XPath : s11:Body/child::*[position()=1] |
s12:Body/child::*[position()=1]
org.apache.synapse.SynapseException: Error creating XSLT transformer
using : xslt-key-resp
at
org.apache.synapse.mediators.AbstractMediator.handleException(AbstractMediator.java:275)
at
org.apache.synapse.mediators.transform.XSLTMediator.performXSLT(XSLTMediator.java:245)
at
org.apache.synapse.mediators.transform.XSLTMediator.mediate(XSLTMediator.java:197)
at
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:60)
at
org.apache.synapse.mediators.filters.FilterMediator.mediate(FilterMediator.java:112)
at
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:60)
at
org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:115)
at
org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:139)
at
org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:339)
at
org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:135)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:173)
at
org.apache.synapse.transport.nhttp.ClientWorker.run(ClientWorker.java:230)
at
org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
at java.lang.Thread.run(Thread.java:595)
Caused by: javax.xml.transform.TransformerConfigurationException:
javax.xml.transform.TransformerException:
org.apache.xml.utils.WrappedRuntimeException: Could not find variable
with the name of TestMe
at
org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:961)
at
org.apache.synapse.mediators.transform.XSLTMediator.performXSLT(XSLTMediator.java:239)
... 14 more
Caused by: javax.xml.transform.TransformerException:
org.apache.xml.utils.WrappedRuntimeException: Could not find variable
with the name of TestMe
at
org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:952)
... 15 more
Caused by: org.apache.xml.utils.WrappedRuntimeException: Could not
find variable with the name of TestMe
at
org.apache.xpath.operations.Variable.fixupVariables(Variable.java:148)
at org.apache.xpath.XPath.fixupVariables(XPath.java:88)
at org.apache.xalan.templates.ElemValueOf.compose(ElemValueOf.java:183)
at
org.apache.xalan.templates.StylesheetRoot.composeTemplates(StylesheetRoot.java:361)
at
org.apache.xalan.templates.StylesheetRoot.composeTemplates(StylesheetRoot.java:366)
at
org.apache.xalan.templates.StylesheetRoot.composeTemplates(StylesheetRoot.java:366)
at
org.apache.xalan.templates.StylesheetRoot.composeTemplates(StylesheetRoot.java:366)
at
org.apache.xalan.templates.StylesheetRoot.composeTemplates(StylesheetRoot.java:366)
at
org.apache.xalan.templates.StylesheetRoot.composeTemplates(StylesheetRoot.java:366)
at
org.apache.xalan.templates.StylesheetRoot.recompose(StylesheetRoot.java:341)
at
org.apache.xalan.processor.StylesheetHandler.endDocument(StylesheetHandler.java:471)
at org.apache.xerces.parsers.AbstractSAXParser.endDocument(Unknown
Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl.endEntity(Unknown
Source)
at org.apache.xerces.impl.XMLEntityManager.endEntity(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.skipSpaces(Unknown Source)
at
org.apache.xerces.impl.XMLDocumentScannerImpl$TrailingMiscDispatcher.dispatch(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown
Source)
at
org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:922)
... 15 more
Alternatively, is there a way to use "get-property('Registry-variable')" in
the XSLT file?
Is there an example of how to do this?
Thanks,
Bill