Sample 750: Stereotyping XSLT Transformations with Templates

<definitions xmlns="http://ws.apache.org/ns/synapse"> <proxy name="StockQuoteProxy"> <target> <inSequence> <!--use sequence template to trasnform incoming request--> <call-template target="xslt_func"> <with-param name="xslt_key" value="xslt-key-req"/> </call-template> <send> <endpoint> <address uri="http://localhost:9000/services/SimpleStockQuoteService"/> </endpoint> </send> </inSequence> <outSequence> <!--use sequence template to trasnform incoming response--> <call-template target="xslt_func"> <with-param name="xslt_key" value="xslt-key-back"/> </call-template> <send/> </outSequence> </target> </proxy> <!--this sequence template will trasnform requests with the given xslt local entry key And will log the message before and after. Takes Iterate local entry key as an argument--> <template xmlns="http://ws.apache.org/ns/synapse" name="xslt_func"> <parameter name="xslt_key"/> <sequence> <log level="full"> <property name="BEFORE_TRANSFORM" value="true" /> </log> <xslt key="{$func:xslt_key}"/> <log level="full"> <property name="AFTER_TRANSFORM" value="true" /> </log> </sequence> </template> <localEntry key="xslt-key-req" src="file:repository/samples/resources/transform/transform.xslt"/> <localEntry key="xslt-key-back" src="file:repository/samples/resources/transform/transform_back.xslt"/> </definitions>

Objective

Introduction to Apache Synapse Sequence Templates

Pre-requisites

  • Deploy the SimpleStockQuoteService in the sample Axis2 server and start Axis2
  • Start Synapse using the configuration numbered 750 (repository/conf/sample/synapse_sample_750.xml)
    Unix/Linux: sh synapse.sh -sample 750
    Windows: synapse.bat -sample 750

Executing the Client

First execute the sample client as follows.

ant stockquote -Daddurl=http://localhost:8280/services/StockQuoteProxy -Dmode=customquote

Sequence Template can act a reusable function. Here the proxy service reuses template xslt_func which will transform requests with the given xslt local entry key And will log the message before and after. It takes xslt transformation corresponding to local entry key as an argument (for insequence this key is xslt-key-req and out sequence it is xslt-key-back). We use call-template mediator for passing the xslt key parameter to a sequence template.

Back to Catalog