The `relaxng.jar` file included in XMLmind XML Editor distribution has been built by XMLmind using the Jing distribution.

Here's exactly what has been done by XMLmind in order to reduce the size of `jing.jar` and to remove its dependencies to all the third-party jar files described in Jing's original readme.html:

1. Removed everything except the following packages:

       org/relaxng/datatype
       org/relaxng/datatype/helpers

       com/thaiopensource/util

       com/thaiopensource/xml/util
       com/thaiopensource/xml/sax

       com/thaiopensource/relaxng/parse
       com/thaiopensource/relaxng/parse/sax
       com/thaiopensource/relaxng/parse/compact

       com/thaiopensource/validate

       com/thaiopensource/datatype
       com/thaiopensource/relaxng/impl

       com/thaiopensource/relaxng/util

   This means removing Jing support for:

   - W3C XML Schema (based on Xerces-J),
   - Schematron,
   - Namespace Routing Language and its predecessor: Modular Namespaces (MNS),
   - autodetection of schema languages using the namespace URI of the document element,
   - Java API for RELAX Verifiers (JARV).

   Jing implementation of a datatype library for the W3C XML Schema Part 2 datatypes has also been removed.

2. In order to be able to enforce the order of the above packages:
   - Moved `com/thaiopensource/validate/rng/RngProperty.java`, `CompactSchemaReader.java`, `SAXSchemaReader.java` to `com/thaiopensource/relaxng/impl/`.
   - Moved `com/thaiopensource/relaxng/SchemaFactory.java` and `com/thaiopensource/validate/ValidationDriver.java` to `com/thaiopensource/relaxng/util/`.
   - Previously code that needed a default `SchemaReader` created an `AutoSchemaReader`. This code has been modified to use `SAXSchemaReader.getInstance()`.

   After this, each package can be compiled one after the other in the above order by executing the following simple command in the directory of each package.

       javac -d ~/src/relaxng/class -classpath ~/src/relaxng/class:. *.java

3. Being able to access the start pattern of the simplified form of a schema is needed to support Relax NG in XXE:
   - Added public method `getStartPattern` to `com.thaiopensource.relaxng.impl.PatternSchema`.
   - Added public method `getIdTypeMap` to `com.thaiopensource.relaxng.impl.IdTypeMapSchema` and `FeasibleIdTypeMapSchema`.
   - Added public methods `getSchema1` and `getSchema2` to `com.th`AttributePattern`aiopensource.relaxng.impl.CombineSchema`.
4. Translating `com.thaiopensource.relaxng.impl.NameClass` and `com.thaiopensource.relaxng.impl.Pattern` to an internal form is needed in order to support Relax NG in XXE:
   - Made all classes derived from `com.thaiopensource.relaxng.impl.NameClass` public.
   - Added `get` methods for important instance variables in all theses classes.
   - Made all classes derived from `com.thaiopensource.relaxng.impl.Pattern` public.
   - Made method `accept(PatternVisitor)` public.
   - Added `get` methods for important instance variables in all theses classes.
5. Making the `getLocator` method public in `com.thaiopensource.relaxng.impl.ElementPattern` and in `com.thaiopensource.relaxng.impl.AttributePattern` is needed in order to implement a document type cache.
6. Added a "`String defaultValue`" instance variable to `AttributePattern` and a corresponding `get` method.

   Unlike "`Locator loc`", this instance variable fully participates in defining the pattern, that is, it is used to compute the hash code of the `AttributePattern` and it is used by `samePattern()`.

   In order to initialize this new instance variable from the annotation, the following classes have been modified:

   - `com.thaiopensource.relaxng.impl.SchemaBuilderImpl`: added `AnnotationsImpl`.
   - `com.thaiopensource.relaxng.impl.SchemaPatternBuilder`: modified `makeAttribute`().
7. Made classes `com.thaiopensource.relaxng.impl.StringDatatype`, `TokenDatatype` public.
8. Unlike `jing.jar`, `relaxng.jar` does not declare any service in its `META-INF/services/`.

   (`xxe.jar` has a `META-INF/services/org.relaxng.datatype.DatatypeLibraryFactory` which tells Jing to use XXE own implementation of W3C XML Schema datatypes.)

What follows is the original `readme.html` file as included in the Jing distribution.

# Jing version 20030619

Copyright © 2001, 2002, 2003 Thai Open Source Software Center Ltd. Jing can be freely copied subject to these conditions.

This directory contains version 20030619 of Jing, a validator for RELAX NG and other schema languages.

The directory `bin` contains `.jar` files, ready for use with a a Java runtime.

Version 1.4 of the Java Runtime Environment (JRE), is recommended, which can be downloaded here, since this is what this version of Jing has been tested with. Version 1.1 or later should also work, although some functionality may be present only with version 1.2 or later.

Jing is a command-line application. Once you have installed JRE 1.4, you can run Jing by using the command:

    java -jar path-to-dist/jing-20030619/bin/jing.jar file.rng file.xml

If `file.rng` is a correct schema and `file.xml` is valid with respect to `file.rng`, then Jing will generate no output. Otherwise, it will generate one or more error messages.

Apart from `jing.jar`, the `bin` directory contains some third-party jar files, which are used for XML parsing (under a pre-1.4 JRE that does not provide the Java XML parsing extension) and for validating with schema languages other than RELAX NG:

`saxon.jar`
  Comes from the Saxon 6.5.2 distribution. Used for Schematron validation.
`xercesImpl.jar`
`xml-apis.jar`
  Come from the Xerces-J 2.4.0 distribution. Used for W3C XML Schema validation and for XML parsing. Xerces-J's license requires the following acknowledgment. "This product includes software developed by the Apache Software Foundation (http://www.apache.org/)."
`isorelax.jar`
  Comes from ISO RELAX 2003/01/08 distribution. Provides a bridge to validators that use the JARV interface.

When you use `jing.jar` with the `-jar` option, the above `.jar` files will be used automatically, provided they are in the same directory as `jing.jar` and provided they have not been renamed. When using the `-jar` option, the JRE will ignore any additional class path entries specified by the `-cp` or `-classpath` options or by the `CLASSPATH` environment variable.

If you do not want use the `-jar` option (perhaps because you want to use additional `.jar` files not shipped with Jing), then you must explicitly include all the needed `.jar` files with a `-cp` or `-classpath` option or with the `CLASSPATH` environment variable, and specify a class name of `com.thaiopensource.relaxng.util.Driver`. For example, using a Bourne-compatible shell, you could do:

    d=path-to-dist/jing-20030619/bin
    CLASSPATH=$d/jing.jar:$d/xercesImpl.jar:$d/xml-apis.jar:$d/saxon.jar:$d/isorelax.jar
    export CLASSPATH
    java com.thaiopensource.relaxng.util.Driver file.rng file.xml

For more information about the features and usage of Jing, see this document.

The source code is in the file `src.zip`.