This documentation is for WSO2 Enterprise Service Bus version 4.9.0 . View documentation for the latest release.

All docs This doc
Skip to end of metadata
Go to start of metadata

The XQuery Mediator performs an XQuery transformation on messages. 

The XQuery mediator is a content aware mediator.



Syntax

<xquery key="string" [target="xpath"]>
    <variable name="string" type="string" [key="string"] [expression="xpath"] [value="string"]/>?
</xquery>

UI Configuration

The parameters available to configure the XQuery mediator are as follows.

Parameter NameDescription
Key Type

This parameter specifies whether the key which represents the XQuery transformation should be a static key or a dynamic key.

  • Static: If this is selected, the key would be a static value. This value should be selected from the Registry for the Key parameter.
  • Dynamic: If this is selected, the key would be a dynamic value which has to be evaluated via an XPath expression. The relevant XPath expression can be entered in the Key parameter.
Key

The key that represents the XQuery transformation. The value you enter depends on the value you selected for the Key Type parameter. If you selected Static for the Key Type parameter, click Configuration Registry or Governance Registry as relevant to select the key from the resource tree. If you selected Dynamic for the Key Type parameter, enter the XPatch expression which calculates the dynamic key.

 

You can click NameSpaces to add namespaces if you are providing an expression. Then the Namespace Editor panel would appear where you can provide any number of namespace prefixes and URLs used in the XPath expression. 


Target

This parameter specifies the node of the message to which the XQuery transformation should be applied. The node is evaluated via an XPath expression. If no value is specified for this parameter, the XQuery transformation is applied to the first child of the SOAP body.

You can click NameSpaces to add namespaces if you are providing an expression. Then the Namespace Editor panel would appear where you can provide any number of namespace prefixes and URLs used in the XPath expression. 

Add Variable

This link allows you to define one or more variables that could be bound to the dynamic context of the XQuery engine in order to be accessed during the XQuery script invocation.

Click Add Variable to add a variable to the XQuery mediator configuration. The page will expand to display parameters relating to variables. The parameters displayed would differ depending on whether you select Value or Expression as the variable value type. Click on the relevant tab below to view the relevant UI configuration for variables.

Parameter NameDescription
Variable TypeThe data type of the variable. This should be be a valid type defined by the JSR-000225 (XQJ API). Supported values are as follows.
  • INT
  • INTEGER
  • BOOLEAN
  • BYTE
  • DOUBLE
  • SHORT
  • LONG
  • FLOAT
  • STRING
  • DOCUMENT
  • DOCUMENT_ELEMENT
  • ELEMENT
Variable NameThe name of the variable. It should correspond to the name of the variable declaration in the XQuery script.
Value Type

This parameter specifies whether the variable value should be a static value or a dynamic value

  • Value: If this is selected, the variable value is a static value. The static value should be entered in the Value/Experession parameter.
  • Expression: If this is selected the variable value is a dynamic value. The XPath expression to calculate it should be entered in the Value/Experession parameter.
Value/ExpressionThis parameter is used to enter the variable value. This can be a static value or an expression based on the value you selected for the Value Type parameter.
ActionThis parameter allows the variable to be deleted.

Parameter NameDescription
Variable TypeThe data type of the variable. Supported values are as follows.
  • INT
  • INTEGER
  • BOOLEAN
  • BYTE
  • DOUBLE
  • SHORT
  • LONG
  • FLOAT
  • STRING
  • DOCUMENT
  • ELEMENT
Variable NameThe name of the variable. It should correspond to the name of the variable declaration in the XQuery script.
Value Type

This parameter specifies whether the variable value should be a static value or a dynamic value

  • Value: If this is selected, the variable value is a static value. The static value should be entered in the Value/Experession parameter.
  • Expression: If this is selected the variable value is a dynamic value. The XPath expression to calculate it should be entered in the Value/Experession parameter.
Value/ExpressionThis parameter is used to enter the variable value. This can be a static value or an expression based on the value you selected for the Value Type parameter.
Registry KeyThe key to acces the variable value if it is saved in the Registry. Click either Configuration Registry or Governance Registry in the Registry Browser parameter as relevant to select the required key from the resource tree.
Registry BrowserIf the variable value is saved in the Registry, click either Configuration Registry or Governance Registry in the Registry Browser parameter as relevant to select the required key from the resource tree.
NS EditorYou can click NameSpaces to add namespaces if you are providing an expression. Then the Namespace Editor panel would appear where you can provide any number of namespace prefixes and URLs used in the XPath expression. 
ActionThis parameter allows the variable to be deleted.

Note

You can configure the mediator using XML. Click switch to source view in the Mediator window.


Examples

In this configuration, the XQuery script is saved in the registry, and it can be accessed via the xquery\example.xq key. The XQuery configuration has one variable named payload of which the variable type is ELEMENT.  As there is no expression in the variable definitions, the default value of the first child of the SOAP Body is used as the value of the variable payload. Within the XQuery script, you can access this variable by defining declare variable $payload as document-node() external;.

<xquery key="xquery\example.xq">
      <variable name="payload" type="ELEMENT"/>
</xquery>
Variables

The following variable picks an XML resource from the registry using key misc/commission.xml and binds into XQuery Runtime so that it can be accessed within the XQuery script.

<variable name="commission" type="ELEMENT" key="misc/commission.xml"></variable>


The value of the following variable is calculated from the current message SOAP Payload using an expression. The value type of the variable is DOUBLE.

<variable name="price" type="DOUBLE" expression="self::node()//m0:return/m0:last/child::text()" xmlns:m0="http://services.samples/xsd"/>

  • No labels