[January 08, 2000] James Clark (Thai Open Source Software Center) posted an announcement for the release of TREX (Tree Regular Expressions for XML) -- a simple schema language for validating XML documents. "I've designed and implemented a small, simple schema language. It's called TREX (Tree Regular Expressions for XML). Calling it a schema language is perhaps misleading: it's goal is purely validation. It doesn't aim to assist in interpreting or processing the document. The post-validation infoset is exactly the same as the pre-validation infoset. You can find more, including a tutorial, a (relatively) formal spec and a sample implementation in Java on top of SAX2 at http://www.thaiopensource.com/trex/. TREX is basically the type system of XDuce with an XML syntax and with a bunch of additional features (like support for attributes and namespaces) needed to make it a practical language for structure validation. Of existing Schema languages, it's closest to RELAX. It's not tied to any particular datatyping language; rather, the idea is that you can plug whatever datatyping language you want (e.g., XML Schemas Part 2). This is the first release, so there will certainly be bugs in both the documents and the implementation. I plan to continue to refine both the design and the implementation. Input is welcome." The TREX specification definitively describes the TREX language. From the 'Introduction': "The primary concept in TREX is the pattern. An unordered collection of attributes and an ordered sequence of elements and characters are matched jointly against a pattern with respect to an environment. An environment is a mapping from names to patterns together with a possibly null reference to a parent environment. The result of matching is true or false. XML document is valid with respect to a TREX pattern if an empty collection of attributes and a sequence containing just the document element of the document matches the pattern with respect to an empty environment. TREX also has the concept of a name-class, which is a set of expanded-names. [As to Data Model:] An element is a triple <name, attributes, children>, where name is an expanded-name, attributes is a unordered collection of zero or more attributes and children is an ordered sequence of zero or more elements or characters. An attribute is a pair <name, value>, where name is an expanded-name and value is a sequence of zero or more characters. An expanded-name is a pair <namespace URI, local name>, where namespace URI is a string containing a URI reference and local name is a string matching the NCName production of the XML Recommendation..."
[March 13, 2001] "OASIS Forms TREX Technical Committee to Create XML Document Validation Language Specification." - "OASIS, the XML interoperability consortium, announced the formation of a new technical committee to create a specification for validating XML documents with TREX (Tree Regular Expressions for XML). Using XML syntax, TREX extends the concept of regular expressions (familiar to many Web developers) to XML structures. TREX is the latest in a long list of accomplishments by James Clark, widely regarded as one of the most prolific contributors to the field of structured information standards. Clark served as technical lead for the W3C's XML 1.0 Recommendation and editor of the W3C Recommendations for both XPath and XSLT. He is perhaps best known as the author of open-source parsers including expat and XP for XML and sgmls and SP for SGML. 'There is a genuine need for a straightforward, easy-to-learn XML schema language, and TREX delivers that,' said James Clark, who will serve as chair of the OASIS TREX Technical Committee. 'I am excited to be developing the TREX specification within OASIS. The OASIS technical process is both open and lightweight, so we expect to benefit from a maximum level of participation with a minimal amount of organizational overhead.' Unlike many schema languages, TREX limits its scope to describing and validating the structure and content of an XML document. It does not attempt to specify any application processing semantics. TREX also gains simplicity by treating attributes and elements uniformly. TREX can partner with a separate datatyping language, such as the W3C XML Schema Datatypes. 'TREX is a new, powerful tool for XML developers. It focuses on validation alone and does not change the information set of a document,' commented Karl Best, director of technical operations for OASIS. 'Developing the TREX specification within OASIS gives the entire XML community the opportunity to contribute to this important work.' Those interested in participating in the development of TREX are encouraged to join the OASIS TREX Technical Committee."
[February 13, 2001] James Clark announced an updated sample implementation of TREX in Java. This implementation "now supports datatyping using a 'real implementation' of datatypes in W3C XML Schema Part 2; the datatyping implementation is independent of the rest of the sample implementation, so it might be useful for other applications of XML Schema Part 2. There's also a TREX task that allows the TREX sample implementation to be used conveniently from within Ant." The Version 2001-02-12 implementation is available for download as a JAR file and as a Win32 executable for use with the Microsoft Java VM. The source is also available. [description]
[May 19, 2001] RELAX Core Approved as an ISO Technical Report, and New Name RELAX NG. A posting from Murata Makoto (Project Editor of RELAX Core at ISO/IEC JTC1) reports on the result of an ISO/IEC JTC1 ballot of May 10, 2001 which approved the RELAX Core specification as ISO/IEC Technical Report 22250-1. RELAX Core is part of the larger RELAX [Regular Language Description for XML] specification, which currently includes RELAX Namespace, and will later have RELAX Data. RELAX Core is "a simple language for describing XML tag sets, viz., for describing markup languages containing a single XML namespace; the RELAX Namespace is used to describe markup languages containing more than a single XML namespace consisting of more than one RELAX Core document." RELAX Core "was originally created as a JIS TR and was then submitted to ISO via the fast-track procedure. The final text will be prepared in an upcoming meeting in August 2001. The latter half, RELAX Namespace, has been approved as JIS TR and will soon be submitted to ISO."
RELAX Core and TREX (Tree Regular Expressions for XML) are to be unified, since the two are very similar as structure-validation languages. The unified TREX/RELAX language will be called RELAX NG [for "Relax Next Generation," pronounced "relaxing"]. This design work is now being conducted within the OASIS TREX Technical Committee, where a (first) specification is expected by July 1, 2001. The OASIS TC has also been renamed 'RELAX NG' [with mailing list 'firstname.lastname@example.org'] to reflect the new name of the unified TREX/RELAX language. The RELAX NG development team plans to submit the OASIS specification to ISO, given the importance of ISO standards in Europe. Relax NG progress may be tracked via the mailing list archives or by comparing the issues list with the original TREX tutorial and specification. See Minutes for RELAX NG TC 2001-05-17.
- TREX web site
- TREX Tutorial. By James Clark. "A TREX pattern specifies a pattern for the structure and content of an XML document. A TREX pattern thus identifies a class of XML documents consisting of those documents that match the pattern. A TREX pattern is itself an XML document."
- TREX Language Specification. By James Clark. 'the definitive specification of the TREX language.'
- XML Namespaces. By James Clark. Background article for TREX.
- OASIS TREX Technical Committee and the mailing list archives
- TREX and RELAX will merge. James Clark wrote on 2001-04-24: "... I can confirm that Murata-san and myself are working on the unification of TREX and RELAX. The work is currently being carried on within the OASIS TREX TC. You can follow the progress of the work in the archives of the TC mailing list. Under the OASIS process, these are publicly accessible. ... We plan to submit the spec produced by the OASIS TC as a JIS standard, and then as an ISO standard." [XML-DEV, Subject: Re: TREX and RELAX unite?]
- JTREX - James Clark's Sample Implementation of TREX in Java
- [March 28, 2001] James Tauber says: "I've just release PyTREX 0.7.0 at http://sourceforge.net/projects/pytrex/. PyTREX now implements the entire TREX specification. There are a couple of known bugs and no anonymous types are supported but everything in the spec is implemented. Interestingly, PyTREX was written almost entirely on transatlantic flights between Boston and London -- flying coach :-)..."
- [March 07 2001] James Tauber announced PyTREX: "PyTREX is an implementation of Tree Regular Expressions for XML (TREX) in Python. 0.5.0 is the first release and includes basic support for the concepts described in sections 1 through 6 of the TREX tutorial. If any of you use Python, I'd love you to try it out and give feedback. If you find bugs, email the TREX file and instance you used and I'll both fix the bug and (with your permission) add the files to the test suite..." See version 0.6.0.
- [March 05, 2001] PyTREX available via CVS. From James Tauber. "PyTREX is a Python implementation of Tree Regular Expressions for XML (TREX), an XML schema language."
- [April 13, 2001] "TREX Basics." By J. David Eisenberg. From XML.com (April 11, 2001). ['Tutorial article. TREX is an alternative schema language created by James Clark, designed to be simpler and more lightweight than W3C's XML Schema.'] "In this article, we'll explore the TREX markup language for validating XML documents, focusing on validating a subset of XMLNews-Story Markup Language. Although the XMLNews-Story markup language has been superseded by the News Industry Text Format, we use the old version because it's simple, it looks a great deal like HTML, and it lets us easily show some of TREX's features... TREX is a powerful markup language that permits you to specify how other XML documents are to be validated. As with other specification languages, you can (1) specify an element with an ordered sequence of sub-elements; (2) specify an element with a choice of sub-elements; (3) permit mixed content (text outside of tags); and (4) specify attributes for tags. Advanced features of TREX allow you to combine externally-defined grammars in highly sophisticated ways. For more information, consult James Clark's extensive TREX tutorial or the formal specification."
- [January 25, 2001] "It has been suggested to me that it would be a good idea to pursue further development of TREX within the OASIS Technical Committee process. I would like to find out whether there is any interest in this. If you would be interested in participating in an OASIS TC to work on TREX and you or your company are an OASIS member, or interested enough to become one (I think individual membership costs $250), please send me an email." [James Clark post to XML-DEV 24-Jan-2001]
- [January 15, 2001] TREX update. (1) refined the way TREX handles merging included grammars; (2) a complete implementation of XHTML modularization in TREX; (3) tutorial section showing how it's possible to implement exceptions in TREX.
- XSLT 1.0 stylesheets. A TREX pattern for XSLT, from James Clark
- XML Spec DTD 2.0. A TREX pattern for the XML Spec DTD 2.0, by James Clark. Generated from the RELAX module
- XHTML modularization. An implementation of XHTML modularization in TREX, by James Clark.
- RELAX Core. A TREX pattern for RELAX Core, by James Clark. Generated using stylesheets from the RELAX module for RELAX core.
- XLink PR. A TREX pattern for the language defined by the XLink Proposed Recommendation. This disallows uses of XLink constructs that do not have an XLink-defined meaning.
- DocBook Norm Walsh announced a TREX schema for DocBook. See update: "DocBook TREX Schema V184.108.40.206." From Norman Walsh. 03-12-01. DocBook TREX Schema V220.127.116.11 "is the current experimental TREX Schema version of DocBook. This version was (mostly) generated automatically from the RELAX version. This version is available as a zip archive. Includes: docbook.trex (the DocBook TREX Schema); dbhier.trex (the DocBook TREX Schema 'hierarchy' module); dbpool.trex (the DocBook TREX Schema 'information pool' module); dbtables.trex (the DocBook TREX Schema tables module); text.xml (a test document).
- XML Catalog Norm Walsh created a A TREX Grammar for the XML Catalog in conjunction with the OASIS XML Catalogs specification [Working Draft 17 May 2001 or later]
- RSS A TREX pattern for RSS by Leigh Dodds.