RELAX NG as a Pivot Format

These last two examples are a little bit extreme, but nevertheless RELAX NG appears to be the perfect pivot format for tasks related to XML schema work in any schema language, providing a useful common ground that developers can use to convert material between various schema forms. Kohsuke Kawaguchi’s work on the Sun Multi-Schema Validator (MSV) takes advantage of this capability. Kawaguchi explained that the grammar-based schema languages supported by MSV (DTDs, RELAX NG, Relax and W3C XML Schema) were all translated into a common data model by the validator. The validation algorithm relied on this single data model. That data model is simply RELAX NG. This clearly demonstrates that the expressive power of RELAX NG is so useful and flexible that 99% of the constraints that can be described with other schema languages can be described with RELAX NG.

RELAX NG’s advantages can also be a major drawback: if RELAX NG has so much more expressive power than other languages, it could mean that a schema written with RELAX NG would be impossible to translate.

Fortunately, this issue is more theoretical than practical. Although there are situations in which RELAX NG can’t be translated into W3C XML Schema, they aren’t likely to happen often in real-life schemas. If you can imagine a situation in which it would happen in real life, you can always balance your need to express such a schema in RELAX NG against your need to be able to publish a W3C XML Schema schema. I am confident that most RELAX NG schemas can be translated into other schema languages—even automatically. James Clark has developed Trang, a magic tool that takes a RELAX NG schema and converts it into W3C XML Schema or a DTD (http://www.thaiopensource.com/relaxng/trang.html).

RELAX NG’s structures support both creation by hand and by auto-generation. RELAX NG can support the growing number of applications that generate their schemas from logical models using high levels of abstraction rather creating them from scratch. Whether you are using as your design tool UML, a simple spreadsheet such as the OASIS UBL project, or sample documents like my Examplotron, it’s easier to derive a RELAX NG schema than to derive a schema using any other schema language.

Get RELAX NG now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.