This Technical Report gives mechanisms for formally specifying the syntax of XML-based languages. For
example, the syntax of XHTML 1.0 can be specified in RELAX.
Compared with DTDs, RELAX provides the following advantages:
- Specification in RELAX uses XML instance (i.e., document) syntax,
- RELAX provides rich datatypes, and
- RELAX is namespace-aware.
The RELAX specification consists of two parts, RELAX Core and RELAX Namespace. This part of the Technical
Report gives RELAX Core, which may be used to describe markup languages containing a single XML namespace.
Part 2 of this Technical Report gives RELAX Namespace, which may be used to describe markup languages
containing more than a single XML namespace, consisting of more than one RELAX Core document.
Given a sequence of elements, a software module called the RELAX Core processor compares it against a
specification in RELAX Core and reports the result. The RELAX Core processor can be directly invoked by the
user, and can also be invoked by another software module called the RELAX Namespace processor.
RELAX may be used in conjunction with DTDs. In particular, notations and entities declared by DTDs can be
constrained by RELAX.
This part of the Technical Report also gives a subset of RELAX Core, which is restricted to DTD features plus
datatypes. This subset is very easy to implement, and with the exception of datatype information, conversion
between this subset and XML DTDs results in no information loss.
NOTE 1 Since XML is a subset of WebSGML (TC2 of ISO 8879), RELAX is applicable to SGML.
NOTE 2 A successor of RELAX Core is being developed at the RELAX NG TC of OASIS.