# MSV

## MSV Component

The MSV component performs XML validation of the message body using the MSV Library and any of the supported XML schema languages, such as XML Schema or RelaxNG XML Syntax.

Note that the Jing component also supports RelaxNG Compact Syntax

## URI format

    msv:someLocalOrRemoteResource[?options]

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. For example

    msv:org/foo/bar.rng
    msv:file:../foo/bar.rng
    msv:http://acme.com/cheese.rng

You can append query options to the URI in the following format, `?option=value&option=value&...`

## Options

Option | Default | Description
--- | --- | ---
`useDom` | `true` | Apache Camel 2.0: Whether DOMSource/DOMResult or SaxSource/SaxResult should be used by the validator. Note: DOM must be used by the MSV component.

## Example

The following example 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 RelaxNG XML Schema (which is supplied on the classpath).

    <camelContext xmlns="http://camel.apache.org/schema/spring">
        <route>
            <from uri="direct:start"/>
            <doTry>
                <to uri="msv:org/apache/camel/component/validator/msv/schema.rng"/>
                <to uri="mock:valid"/>

                <doCatch>
                    <exception>org.apache.camel.ValidationException</exception>
                    <to uri="mock:invalid"/>
                </doCatch>
                <doFinally>
                    <to uri="mock:finally"/>
                </doFinally>
            </doTry>
        </route>
    </camelContext>