by Eric van der Vlist is published by O'Reilly & Associates (ISBN: 0596004214)


Foreword by Murata Makoto

RELAX NG (pronounced relax-ing) is an emerging schema language for XML. RELAX NG provides many advantages: simplicity, expressiveness, readability, and reliability, among others, and they are well described in this book. Here I would like to point out one reason behind these advantages. The design of RELAX NG has been guided by tree automaton theory, which is a well-established area in formal computer science, and validators for RELAX NG are typically implemented as tree automata. RELAX NG and validators may be compared to programming languages and compilers, which are grounded on context-free grammars and parsing theory. In both cases, underlying mathematical models provide simplicity, expressiveness, and reliability.

I have studied tree automata for structured documents since 1994. I have come to strongly believe that a schema language for XML should be based on tree automaton theory. Although I was a member of the XML Schema Working Group, I also felt that we need a simpler alternative to W3C XML Schema. I thus designed RELAX Core, which was a simple schema language based on hedge automata, an aspect of tree automation theory. James Clark then designed TREX, which embodied many improvements (see his Foreword to this book). To provide a powerful alternative to W3C XML Schema, RELAX Core and TREX were unified into RELAX NG at OASIS in 2001. Recently ISO/IEC JTC1 has published RELAX NG as a Final Draft International Standard without making any technical changes.

RELAX NG has been successfully used in several projects. Some well-known ones are OASIS DocBook, W3C XHTML 2.0, W3C RDF/XML Syntax Specification (Revised), and Text Encoding Initiative. Although W3C has another schema language—namely, W3C XML Schema—the W3C does not close its doors to RELAX NG but rather recognizes its advantages and uses it for XHTML 2.0, RDF, and so forth. Some people use RELAX NG as well as W3C XML Schema happily, since Trang, a schema converter by James Clark, allows conversion from RELAX NG to W3C XML Schema.

Quite a few implementations of RELAX NG are already available. They include validators, schema converters, schema editors, data binding tools, and so forth. They are written in a variety of programming languages such as Java, C#, and Python and can be used on platforms such as Linux and Windows. Most of the implementations are free software rather than commercial products. With the advent of XHTML 2.0, some commercial products for RELAX NG have started to appear.

As far as I know, this book is the first one dedicated to RELAX NG. Eric van der Vlist gradually introduces basic concepts of RELAX NG with a number of examples. He further provides a reference guide to all features of RELAX NG. I am convinced that every reader will feel comfortable with RELAX NG.

RELAX NG would not be possible without the help of many individuals. Members of the RELAX NG technical committee of OASIS are James Clark (chair), Mike Fitzgerald, David Webber, Josh Lubell, Kohsuke Kawaguchi, Norman Walsh, John Cowan, and me. It was Jon Bosak (the father of XML) who first encouraged the unification of TREX and RELAX Core. Haruo Hosoya has contributed to the mathematical basis of RELAX NG. Kohsuke Kawaguchi, Tomoharu Asami, Masayuki Hiyama, Motohiro Kosaki, Koji Yonekura, Ryosuke Nanba, Daisuke Okajima, Yushi Komachi, and Akira Kawamata contributed to RELAX Core.


This text is released under the Free Software Foundation GFDL.