h2. Validation Component
The Validation component performs XML validation of the message body using the JAXP Validation API and based on any of the supported XML schema languages, which defaults to [XML Schema|http://www.w3.org/XML/Schema]
Note that the [Jing] component also supports the following useful schema languages:
* [RelaxNG Compact Syntax|http://relaxng.org/compact-tutorial-20030326.html]
* [RelaxNG XML Syntax|http://relaxng.org/]
The [MSV] component also supports [RelaxNG XML Syntax|http://relaxng.org/].
h3. URI format
{code}
validator:someLocalOrRemoteResource
{code}
Where *someLocalOrRemoteResource* is some URL to a local resource on the classpath or a full URL to a remote resource or resource on the file system which contains the XSD to validate against. For example:
* {{msv:org/foo/bar.xsd}}
* {{msv:file:../foo/bar.xsd}}
* {{msv:http://acme.com/cheese.xsd}}
* {{validator:com/mypackage/myschema.xsd}}
Maven users will need to add the following dependency to their {{pom.xml}} for this component when using *Camel 2.8* or older:
{code:xml}
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
{code}
From Camel 2.9 onwards the [Validation] component is provided directly in the camel-core.
h3. Options
{div:class=confluenceTableSmall}
|| Option || Default || Description ||
| {{resourceResolver}} | {{null}} | *Camel 2.9:* Reference to a {{org.w3c.dom.ls.LSResourceResolver}} in the [Registry]. |
| {{useDom}} | {{false}} | Whether {{DOMSource}}/{{DOMResult}} or {{SaxSource}}/{{SaxResult}} should be used by the validator. |
| {{useSharedSchema}} | {{true}} | *Camel 2.3:* Whether the {{Schema}} instance should be shared or not. This option is introduced to work around a [JDK 1.6.x bug|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6773084]. Xerces should not have this issue. |
| {{failIfNoBody}} | {{true}} | *Camel 2.10.3:* Whether to fail if no body exists. |
{div}
h3. Example
The following [example|http://svn.apache.org/repos/asf/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/validator/camelContext.xml] shows how to configure a route from endpoint *direct:start* which then goes to one of two endpoints, either *mock:valid* or *mock:invalid* based on whether or not the XML matches the given schema (which is supplied on the classpath).
{snippet:id=example|lang=xml|url=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/validator/camelContext.xml}
{include:Endpoint See Also}
|