Presentation title: Tired of complicated specifications? You just RELAX! Presenter's name: MURATA Makoto, HIYAMA Masayuki, KOSAKI Motohiro Abstract (not less than 500 words): RELAX (REgular LAnguage for XML) is a language for representing regular sets of XML documents as grammars. A RELAX grammar generates a set of XML documents. Conversely, XML documents can be validated against a RELAX grammar. RELAX consists of RELAX core and RELAX Namespace. RELAX core provides modules, which declare and constrain elements and attributes in a single namespace. The design of RELAX core (Version 1.0) has been completed, and this presentation is mainly concerned about RELAX core. RELAX Namespace provides mechanisms for attaching namespaces to modules and combining these modules to form a single grammar. A whitepaper of RELAX Namespace is expected to be released in early 2000. A RELAX module consists of rules and patterns. Intuitively speaking, rules correspond to element type declarations and parameter entities used therein, and patterns correspond to attribute list declaraions and parameter entities used therein. As a special case, an RELAX grammar of a single namespace is a RELAX module. RELAX is based on the theory of tree (or hedge) automata. From a RELAX grammar, one can effectively construct a hedge automaton. By executing this hedge automaton, XML documents can be validated against the grammar. Operations on hedge automata can be applied to RELAX grammars so as to examine their properties. In particular, one can examine if one RELAX grammar is upper-compatible with another by computing the difference of two grammars. RELAX is more expressive than DTD in representing structural constraints on elements and attributes. RELAX, however, does not provide mechanisms for declaring entities, notations, and default values, which have been captured by DTDs. Rather, RELAX is intended to be used in conjunction with DTD; XML documents containing DTDs are first parsed by XML processors and then validated against RELAX grammars. Unlike XML Schema of W3C, RELAX does not affect the information emitted by XML processors. Thus, existing APIs such as SAX and DOM can be used without loss of information, even when the XML document has an associated RELAX grammar. Information embedded in RELAX grammars can be obtained by parsing RELAX grammars as XML documents, if necessary. DSD is another proposal based on the tree automaton theory. In comparison to DSD, RELAX is simpler, internationalized, and provides rich datatypes. A RELAX validator receives a RELAX grammar and an XML document. The validator first invokes some XML processor to parse the grammar and document, and then recieves the result via some API. The current prototype uses DOM to access the RELAX grammar and the SAX-like API of XML4C to access the document. A RELAX validator reports either "This document is valid" or "This document is invalid." Some error messages and warnings may be reported as well. A RELAX validator has been developed in C++ and its source code is available under GPL. The construction of automata from content models is done by an automaton construction tool kit called Grail. A converter from DTDs to RELAX grammars has been developed in Java and is also freely available under GPL. The XML spec DTD was converted to RELAX by this program and then revised by hand. Brief Description: RELAX is yet another proposal for representing grammars for XML documents. $Id: xtech2000.txt 1.2 2000/02/07 14:42:00 murata Exp $