In this post we will use the validation functionality of Oracle Mediator in SOA 12c. In this tutorial we will be using the Student.xsd schema of our previous post.
Validation
We can configure Mediators to validate the incoming message payload using a Schematron or an XSD file. You can validate each part of incoming message using Schematron file validations.
What is Schematron?
Schematron is a rule-based validation language for making assertions about the presence or absence of patterns in XML document. Patterns can be thought of like presence of sequence of characters, defined length of element values, regular expressions etc.
You can apply assertions in the form of rules applied to specific context of XML document. If assertions fail, a message defined in the rule is displayed.
There are two types of schematron rules:
- ASSERT: The assert rule returns the error message when the test condition fails (returns false). For example, consider the following schematron file which checks if email element contains '@' or not. If email element does not contain '@' symbol, it will throw an error "Invalid Email".
1 2 3 4 5 6 7 8 9 | <?xml version="1.0" encoding="UTF-8" ?> <schema xmlns="http://www.ascc.net/xml/schematron"> <ns uri="http://www.example.org" prefix="s1"/> <pattern name="Test if Email element is present"> <rule context= "s1:Student"> <assert test="contains(s1:Email,'@')"> Invalid Email</assert> </rule> </pattern> </schema> |
The below element declares that all elements prefixed with s1 will be from namespace "http://www.example.org", to resolve naming conflicts and for correctly identifying the elements.
<ns uri="http://www.example.org" prefix="s1"/>
- REPORT: The the report rule returns your error message when the test conditions succeeds (returns true). Just replace assert keyword with report as below:
1 2 3 4 5 6 7 8 9 | <?xml version="1.0" encoding="UTF-8" ?> <schema xmlns="http://www.ascc.net/xml/schematron"> <ns uri="http://www.example.org" prefix="s1"/> <pattern name="Test if Email element is present"> <rule context= "s1:Student"> <report test="contains(s1:Email,'#')"> Invalid Email</assert> </rule> </pattern> </schema> |
So the above schematron rule will return the error message when email element contains '#'
Note: The Schematron implementation in the SOA Suite only supports the assert rule, so you have to rewrite your report rules.
Using Schematron file in Mediator
To use schematron file in mediator follow the below steps. We will use the same project of our previous post.
- Right click Schemas folder and create new XML Document (Schematron1.sch) by choosing it from New Gallery window. Paste the above schematron code (containing assert rule) and save the file
- Open the Mediator.mplan file and make the checkbox "validate Schema (XSD)" checked. Choose the input part (request part in our case) and also select the Schematron1.sch file.
Comments
Post a Comment