The XQuery mediator can be used to perform an XQuery transformation. The 'key' attribute specifies the registry key for looking up XQuery script that going to be used for define transformation. The optional 'target' attribute specifies the node of the SOAP message that should be transformed. In case where the target value is not specified, then the first child of the SOAP body is selected. The 'variable' elements define a variable that could be bound to the dynamic context of the XQuery engine in order to access those variables during the XQuery script invocation .
In the variable definition , it is possible to specify just a literal value, or an XPath expression over the payload, or even specify a registry key or a registry key combined with an XPath expression that selects the value of the variable.Using key attribute of the variable, it is possible to bind an XML document located in the registry so that in the transformation that too can be used.The name of the variable corresponds to the name of variable declaration in the XQuery script. The type of the variable must be a valid type defined by the JSR-000225 (XQJ API).
Supported Types
<xquery key="string" [target="xpath"]> <variable name="string" type="string" [key="string"] [expression="xpath"] [value="string"]/>? </xquery>
Figure1: XQuery Mediator
Variables for the XQuery Mediator: Defines values/expressions that could be bound to the dynamic context of the XQuery engine in order to access those variables through the XQuery script.
Figure2: XQuery Mediator - Adding Variables
You have the following option in a variable.The supported types are defined in the Supported Types section
<xquery key="xquery\example.xq"> <variable name="payload" type="ELEMENT"/> </xquery>
In the above configuration, XQuery script is in the registry and that script can be picked by key xquery\example.xq. There is a one variable name payload and type as ELEMENT. As there is no expression in the variable definitions, default value - the first child of SOAP Body is used as the value of variable payload. . Within XQuery script, you can access this variable by defining declare variable $payload as document-node() external; . Refer sample 390 and 391 for more information.
<variable name="commission" type="ELEMENT" key="misc/commission.xml"></variable>
A variable definitions that pick a XML resource from the registry using key misc/commission.xml and bind in to XQuery Runtime so that it can be accessed with in XQuery script. Refer sample 391 for more information.
<variable name="price" type="DOUBLE" expression="self::node()//m0:return/m0:last/child::text()" xmlns:m0="http://services.samples/xsd"/>
A variable whose value is calculated from current message SOAP Payload using an expression. Here , value is a type of double.