The Valiade Mediator is used for schema validation of messages.
The portion of the message that needs to be validated is chosen by evaluating the XPath expression. Then this message is validated against the schema specified. Users can specify a sequence to be executed in case of a validation failure. This mediator provides an extension point by providing properties to configure the underline validation engineThe Validate Mediator validates XML messages against a specified schema. You can specify an XPath to extract and validate a specific part of the message. Otherwise, the mediator validates the first child of the SOAP body of the current message.
Tip |
---|
A Fault Mediator should be added as a child to the Validate mediator in order specify the fault sequence to be followed if the validation fails. |
Info |
---|
The Validate mediator is a content aware mediator. |
...
Code Block | ||||
---|---|---|---|---|
| ||||
<validate [source="xpath"]> <property name="validation-feature-id" value="true|false"/>* <schema key="string"/>+ <on-fail> mediator+ </on-fail> </validate> |
...
UI Configuration
The Validate Mediator validates the result of the evaluation of the source XPath expression, against the schema specified. If the source attribute is not specified, the validation is performed against the first child of the SOAP body of the current message. If the validation fails, the on-fail sequence of mediators is executed. Properties could be used to turn some of the features of the validator on/off.
UI Configuration
...
mediator configuration can be divided into the following sections.
Schema keys defined for Validate Mediator
This section is used to specify the key to access the main schema based on which the validation is carried out, as well as to specify the XML which needs to be validated. The parameters available in this section are as follows.
...
Parameter Name | Description | ||||
---|---|---|---|---|---|
Schema keys defined for Validate Mediator table | The key for the schema location. It can be specified using one of the following methods.
Click Add Key to add a new schema key. Click Delete in the relevant row to delete a schema key.
|
...
To add a new Schema Key, use the "Add New Schema Key" link.
| ||||||
Source | The XPath expression to extract the XML that needs to be validated. The Validate mediator validates the evaluation of this expression against the schema specified in the Schema keys defined for Validate Mediator table. If this is not specified, the validation is performed against the first child of the SOAP body of the current message.
|
...
|
...
|
...
|
...
|
Features Defined for Validator Mediator
This section is used to specify which features of the Validate mediator should be enabled and which should be disabled. The parameters available in this section are as follows.
Info |
---|
Only the FEATURE_SECURE_PROCESSING feature is currently supported by the validator. |
Parameter Name | Description |
---|---|
Feature Name |
...
The name of the feature. |
...
title | Note |
---|
Value | Click True to enable the feature, or click False to disable the feature. |
Action | Click Delete in the relevant row to delete a feature. |
Resources of the Validate Mediator
A resource in the Validate mediator configuration enables you to import a schema referenced within another schema. In order to access such a schema via a resource, the parent schema should be saved as a resource in the registry. The parameters available in this section are as follows.
Parameter Name | Description |
---|---|
Location | The location of the schema to be imported. The value entered here should be equal to the value of the schema location attribute within the relevant <xsd:import> element in the parent schema. |
Key | The key to access the parent schema saved in the registry. Click either Configuration Registry or Governance Registry as relevant to select the key from the resource tree. |
Info | ||
---|---|---|
| ||
You can also configure the Mediator using XML. Click on "switch to source view" in the "Mediator" window. |
...
Example
Example 1 - Basic configuration
In this example, the required schema for validating messages going through the validate mediator is given as a registry key, schema\sample.xsd
. No source attribute is specified, and therefore the schema will be used to validate the first child of the SOAP body. The mediation logic to follow if the validation fails is defined within the on-fail
element. In this example, the Fault Mediator creates a SOAP fault to be sent back to the party which sent the message.
Code Block | ||||
---|---|---|---|---|
| ||||
<validate> <schema key="schema\sample.xsd"/> <on-fail> <makefault> <code value="tns:Receiver" xmlns:tns="http://www.w3.org/2003/05/soap-envelope"/> <reason value="Invalid Request!!!"/> </makefault> <property name="RESPONSE" value="true"/> <header name="To" expression="get-property('ReplyTo')"/> </on-fail> </validate> |
...
Example 2 - Validate mediator with resources
In this example, the following schema named 08MockServiceSchema
is saved in the Registry. This schema is located in MockDataTypes.xsd
. A reference is made within this schema to another schema named 08SOAPFaults
which is located in SOAPFaults.xsd
.
Code Block | ||
---|---|---|
| ||
<xsd:import namespace= "http://samples.synapse.com/08MockServiceSchema" schemalocation= "MockDataTypes.xsd">
<xsd:import namespace= "http://samples.synapse.com/08SOAPFaults" schemalocation= "../Common/SOAPFaults.xsd">
</xsd:import> |
The Validate mediator can be configured as follows.
Code Block | ||
---|---|---|
| ||
<validate>
<schema key="MockDataTypes.xsd"/>
<resource location="../Common/SOAPFaults.xsd" key="conf:custom/schema/SOAPFaults.xsd"/>
<on-fail>
<log level="custom">
<property name="validation failed" value="Validation failed ###"/>
<property name="error_msg" expression="$ctx:ERROR_MESSAGE"/>
</log>
</on-fail>
</validate> |
The schema used by the validate mediator is MockDataTypes.xsd
. In addition, a resource is used to import the 08
SOAPFaults
schema which is referred in the 08MockServiceSchema
schema. Note that the value ../Common/SOAPFaults.xsd
which is specified as the location for the schema to be imported is the same as the location specified for 08
SOAPFaults
schema in the 08MockServiceSchema
configuration.
The on-fail
sequence of this Validate mediator includes a Log mediator which is added as a child to the Validate mediator. This log mediator uses two properties to generate the error message Validation failed ###
when the validation of a message against the schemas specified fails.
Excerpt | ||
---|---|---|
| ||
Description of the Validate Mediator in WSO2 ESB. |