RELAX (REgular LAnguage description for XML) is a specification for describing XML-based languages. XHTML 1.0, for example, can be described in RELAX.
A description written in RELAX is called a RELAX grammar. An XML document can be verified against a RELAX grammar.
Compared with DTD(Document Type Definition), RELAX has new features:
RELAX is standardized by INSTAC XML SWG of Japan. Under the auspices of the Japanese Standard Association(JSA), this committee develops Japanese national standards for XML. JSA is expected to publish RELAX as JIS Technical Reports.
Other than members of INSTAC XML SWG, many people have contributed to the development of RELAX as well. A list of contributors will appear in an appendix of the RELAX specification.
A JIS Technical Report (TR) provides technical information which is still too immature to become a JIS standard. A JIS TR is published so as to encourage public discussion and promote consensus among relevant parties.
All important documents about RELAX are available in English. Non-Japanese users have absolutely no restrictions in using RELAX.
If RELAX is implemented and adopted worldwide, Japan may submit RELAX to the fast track of ISO.
Anyone can make comments on the published specification of RELAX and submit them to INSTAC XML SWG. Comments written in English will certainly be considered.
The scope of XML Schema is very broad. Thus, its standarization, implementation and adoption require a relatively long time. Furthermore, to take full advantage of XML Schema, extensions to DOM and SAX are required.
On the other hand, RELAX is much more modest. Thus, it is easier to standardize, implement, and adopt. RELAX is a combination of (1) features of DTD, and (2) rich datatypes of XML Schema represented in the XML syntax. RELAX also has some other mechanisms, but they have been eliminated from the conformance level "classic".
RELAX helps migration from DTD to XML Schema. You can assume that RELAX is DTD combined with datatype information in the XML instance syntax and start to use RELAX right now. When XML Schema is available, migration from RELAX to XML Schema will be possible without loss of datatype information.
RELAX consits of RELAX Core and RELAX Namespace. RELAX Core handles elements in a single namespace and their attributes. RELAX Namespace is concerned with multiple namespaces.
RELAX Core has two conformance levels. Conformance level "classic" restricts structural features of RELAX by eliminating features more advanced than DTD. Conformance level "fully relaxed" allows all features of RELAX Core. It is hoped that conformance level "classic" will be widely implemented, since it is so simple.
In March 2000, RELAX Core is expected to become a JIS Technical Report. If you do not need namespaces, you can assume that this technical report is reasonably stable.
In June 2000, RELAX Namespace is expected to become a JIS Technical Report. This technical report, combined with RELAX Core, should be reasonably stable for everyone.
As of January 2000, nobody knows.
The success of a standard cannot be guaranteed by standard bodies. Most standard orginzations have occasionally created dead standards. The same thing applies to INSTAC and JSA; they cannot guarantee the success of RELAX.
Standards will survive only when they are widely implemented and adopted. But there are some reasons that RELAX may surivive. First, RELAX can be easilly implemented; second, migration from DTD to RELAX and from RELAX to XML Schema are kept easy; third, RELAX is not controlled by any private company.
Even if RELAX disappears from the market, resources accumulated in RELAX can be rescued easily.
In most cases, RELAX grammars can be automatically converted to XML Schema without loss of information. This is because (1) RELAX borrows datatypes of XML Schema, and (2) basic structural features of RELAX (Conformance level "classic" of RELAX Core) are almost identical to those of DTD.
There are two major technical advantages. First, RELAX provides rich datatypes of XML Schema. Second, the XML-instance syntax of RELAX grammars allows rapid development of software tools.
If the XML-instance syntax and rich datatypes of XML Schema look attractive, it might be a good idea to use RELAX for now. When XML Schema is completed, you can easily migrate from RELAX to XML Schema by using conversion programs.
RELAX has one political advantage. It is not a proprietary specification controlled by some private companies, but rather a national standard developed by INSTAC. Adopters of RELAX are not caputured by one particular company, but can freely choose any implementation.
There is a converter (in Java) from DTD to RELAX. Parameter entities in a DTD are merely expanded.
The source program of this converter will be disclosed under GPL soon.
There is one RELAX validator written in C++. Its source program will be disclosed under GPL.
Since XML Schema is not finalized, no conversion programs are currently available. We plan to develop such a conversion program and disclose its source program under GPL, when XML Schema becomes a W3C recommedation. As long as you use features of Conformance Level "classic" of RELAX Core, you should be able to convert your RELAX grammars to XML Schemas automatically.
RELAX is designed so that users can continue to use XML processors. User programs can be built on top of APIs of existing XML processors, and thus there is no need for RELAX-specific APIs.
HOW TO RELAX is a tutorial of RELAX. It shows plenty of examples and is fairly easy to read.
It is still under construction.
RELAX is based on the hedge automaton theory. A casual introduction to hedge automata is available.
Under construction. At present, the source program (in C++) of a RELAX validator provides the most detailed information.