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.
Japan plans to 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 has become a JIS Technical Report. If you do not need namespaces, you can assume that this technical report is reasonably stable.
In September or October 2000, RELAX Core will be submitted to ISO.
In December 2000, RELAX Namespace is expected to become a JIS Technical Report.
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 is publicly available under an open source license.
There is one RELAX validator written in C++. Its source program is publicly available under an open source license.
There is another RELAX validator, which is written in Java. Its source program is publicly available under an open source license.
There is yet another RELAX validator, which is written in Visual Basic.
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 an open source licence, 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.
The specification for RELAX Core was disclosed in March, but it is written in Japanese. It will be translated to English in August.
RELAX is based on the hedge automaton theory. A casual introduction to hedge automata is available.
Under construction, but some hints are available.