Sample 390: Introduction to the XQuery Mediator
<definitions xmlns="http://ws.apache.org/ns/synapse">
<!-- the SimpleURLRegistry allows access to a URL based registry (e.g. file:/// or http://) -->
<registry provider="org.apache.synapse.registry.url.SimpleURLRegistry">
<!-- the root property of the simple URL registry helps resolve a resource URL as root + key -->
<parameter name="root">file:repository/conf/sample/resources/</parameter>
<!-- all resources loaded from the URL registry would be cached for this number of milli seconds -->
<parameter name="cachableDuration">15000</parameter>
</registry>
<localEntry key="xquery-key-req"
src="file:repository/conf/sample/resources/xquery/xquery_req.xq"/>
<proxy name="StockQuoteProxy">
<target>
<inSequence>
<property name="body" expression="$body/child::*[position()=1]"/>
<xquery key="xquery-key-req">
<variable name="payload" type="ELEMENT"/>
</xquery>
<send>
<endpoint>
<address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<out>
<xquery key="xquery/xquery_res.xq">
<variable name="payload" type="ELEMENT"/>
<variable xmlns:m0="http://services.samples"
name="code" type="STRING"
expression="self::node()//m0:return/m0:symbol/child::text()"/>
<variable xmlns:m0="http://services.samples"
name="price" type="DOUBLE"
expression="self::node()//m0:return/m0:last/child::text()"/>
</xquery>
<send/>
</out>
</outSequence>
</target>
<publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
</proxy>
</definitions>
Objective
Demonstrate how to use the XQuery mediator for message content transformations
Executing the Client
This example uses the XQuery mediator to perform transformations. This sample
behaves the same as sample 8 and the only difference
is that this sample uses XQuery instead of XSLT for transformation.
Send a custom quote request to Synapse as follows.
ant stockquote -Daddurl=http://localhost:8280/services/StockQuoteProxy -Dmode=customquote
Request is transformed into a standard stock quote request by the XPery mediator.
The XQuery definition is loaded through a local entry. The response from Axis2
is transformed back to a custom quote response. In this case the XQuery definition
is loaded from the registry.
Back to Catalog