James Clark has announced the release of an initial working draft specification for RELAX NG. Edited by James Clark and Makoto MURATA for the OASIS TC, this working draft is not [yet] an official committee work product; comments are invited. The document presents "the definitive specification of RELAX NG, a simple schema language for XML, based on RELAX and TREX. A RELAX NG schema specifies a pattern for the structure and content of an XML document. The WD specifies (1) when an XML document is a correct RELAX NG schema, and (2) when an XML document is valid with respect to a correct RELAX NG schema. Section 2 describes the RELAX NG data model, which is the abstraction of an XML document used throughout the rest of the document. Section 3 describes the syntax of a RELAX NG schema; any correct RELAX NG schema must conform to this syntax. Section 4 describes a sequence of transformations that are applied to simplify a RELAX NG schema; applying the transformations also involves checking certain restrictions that must be satisfied by a correct RELAX NG schema. Section 5 describes the syntax that results from applying the transformations; this simple syntax is a subset of the full syntax. Section 6 describes the semantics of a correct RELAX NG schema that uses the simple syntax; the semantics specify when an element is valid with respect to a RELAX NG schema. Section 7 describes restrictions in terms of the simple syntax; a correct RELAX NG schema must be such that, after transformation into the simple form, it satisfies these restrictions. Finally, Section 8 describes conformance requirements for RELAX NG validators." Appendix A supplies the proposed RELAX NG schema for RELAX NG.
Excerpt from section 2, 'Data model': "RELAX NG deals with XML documents representing both schemas and instances through an abstract data model. XML documents representing schemas and instances must be well-formed in conformance with and must conform to the constraints of XML Namespaces. An XML document is represented by an element. An element consists of (1) a name; (2) a context; (3) an unordered collection of attributes; (4) an ordered sequence of zero or more children; each child is either an element or a non-empty string; the sequence never contains two consecutive strings... The element for an XML document is constructed from an instance of the XML Infoset as follows; we use the notation [x] to refer to the value of the x property of an information item. An element is constructed from a document information item by constructing an element from the [document element]. An element is constructed from an element information item by constructing the name from the [namespace name] and [local name], the context from the [base URI] and [in-scope namespaces], the attributes from the [attributes], and the children from the [children]. The attributes of an element are constructed from the unordered set of attribute information items by constructing an attribute for each attribute information item. The children of an element are constructed from the list of child information items first by removing information items other than element information items and character information items, and then by constructing an element for each element information item in the list and a string for each maximal sequence of character information items. An attribute is constructed from an attribute information item by constructing the name from the [namespace name] and [local name], and the value from the [normalized value]. When constructing the name of an element or attribute from the [namespace name] and [local name], if the [namespace name] property is not present, then the name is constructed from an empty string and the [local name]. A string is constructed from a sequence of character information items by constructing a character from the [character code] of each character information item..."