RELAX NG is the name for the unification of two XML schema languages:
The specification for RELAX NG has been developed by the OASIS
RELAX NG TC.
The following are available:
- Jing, a validator for RELAX NG implemented
in Java. This is written on top of SAX2.
- Trang, a program for converting between
different schema languages, focused on RELAX NG; in particular, it can
convert between the compact and XML syntaxes, it can convert between
RELAX NG and DTDs, and it can convert from RELAX NG to W3C XML
- DTDinst, a program for producing an XML
instance representation of XML DTDs; this is also used by Trang for
converting from XML DTDs into RELAX NG
- Namespace Routing Language (NRL), a XML language
for combining schemas for multiple namespaces. Jing implements
- The Design of RELAX NG, a paper
discussing the design of RELAX NG
- Notes on implementing RELAX NG
validators. These describe the implementation techniques used in
- A RELAX NG schema for RELAX NG.
- A RELAX NG implementation of XHTML
- A RELAX NG schema for XSLT 1.0 stylesheets.
- An XSLT stylesheet that converts from
RELAX Core into RELAX NG. This should be able to handle any correct
RELAX Core module, but it does not implement the RELAX Core semantic
of implicitly allowing undeclared attributes. (However, the sample
implementation is capable of recovering from such errors.) Handling
include feature requires an extension over XSLT
1.0; the stylesheet can currently use the extensions implemented in
either MSXML or SAXON; it can be easily adapted to any other
conforming XSLT processor that supports a result tree fragment to node
set conversion function. This stylesheet will not work with XT, since
XT does not implement keys. There's also an auxiliary stylesheet that removes some
redundancies generated by the previous stylesheet.
- A RELAX NG schema for RELAX Core,
including the schema for
datatypes. This was generated using the above stylesheets from the
RELAX module for RELAX core, and then hand-edited a bit.
- A test suite for RELAX NG.