A RELAX NG validator in Java

Copyright © 2001, 2002 Thai Open Source Software Center Ltd

See the file copying.txt for copying permission.

Version 2002-07-24

This version of Jing implements the final RELAX NG 1.0 Specification. It also implements parts of RELAX NG DTD Compatibility, specifically checking of ID/IDREF/IDREFS.

The implementation is available for download as

The main class is com.thaiopensource.relaxng.util.Driver. The first argument expected by the main class is the name of the file containing the RELAX NG schema. The second and subsequent arguments are the names of one or more files to be validated against this schema.

Jing accepts the following command-line options:

Uses the compact syntax for the schema.
-e enc
Uses the encoding enc to read the schema.
Checks that the document is feasibly valid. A document is feasibly valid if it could be transformed into a valid document by inserting any number of attributes and child elements anywhere in the tree. This is equivalent to transforming the schema by wrapping every data, list, element and attribute element in an optional element and then validating against the transformed schema. This option may be useful while a document is still under construction. This option also disables checking that for every IDREF there is a corresponding ID.
Disables checking of ID/IDREF/IDREFS. By default, Jing enforces the constraints imposed by RELAX NG DTD Compatibility with respect to ID/IDREF/IDREFS.
Prints the time used by Jing for loading the schema and for validation.

Jing uses a vendor-independent Java interface for RELAX NG datatype libraries, developed by James Clark and KAWAGUCHI Kohsuke and hosted at SourceForge in the relaxng project. Jing can use any datatype library that implements this interface. For more information on creating your own datatype libraries, including a sample, download datatype-sample.zip.

Jing also includes an implementation of a datatype library for the W3C XML Schema Part 2 datatypes. There is a separate document describing this implementation and how to use it.

If you wish to use Jing in your programs, you have a choice.

There is a Jing task that allows Jing to be invoked by the Ant build tool.

James Clark