# Jing

## Jing Component

The Jing component uses the Jing Library to perform XML validation of the message body using either:

- RelaxNG XML Syntax

- RelaxNG Compact Syntax

Note that the MSV component can also support RelaxNG XML syntax.

## URI format

    rng:someLocalOrRemoteResource
    rnc:someLocalOrRemoteResource

Where rng means use the RelaxNG XML Syntax whereas rnc means use RelaxNG Compact Syntax. The following examples show possible URI values

Example | Description
--- | ---
`rng:foo/bar.rng` | References the XML file foo/bar.rng on the classpath
`rnc:http://foo.com/bar.rnc` | References the RelaxNG Compact Syntax file from the URL, `http://foo.com/bar.rnc`.

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

## Options

Option | Default | Description
--- | --- | ---
`useDom` | `false` | Apache Camel 2.0: Specifies whether DOMSource/DOMResult or SaxSource/SaxResult should be used by the validator.

## Example

The following example shows how to configure a route from the 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 Compact Syntax schema (which is supplied on the classpath).

    <camelContext xmlns="http://camel.apache.org/schema/spring">
        <route>
            <from uri="direct:start"/>
            <doTry>
                <to uri="rnc:org/apache/camel/component/validator/jing/schema.rnc"/>
                <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>