InfoQ

News

Should you be using RELAX-NG?

Posted by Gavin Terrill on Oct 29, 2007 09:00 PM

Community
Architecture
Topics
Domain Specific Languages ,
Technology
Tags
W3C ,
RELAX-NG ,
XML Schema

RELAX-NG (pronounced "relaxing") is an alternative XML schema definition language characterized by being simpler and more elegant than the more generally known DTD or XSD based languages. W3C XML Schemas in particular has garnered a reputation as being overly complex, with XML luminaries such as Tim Bray commenting:

W3C XML Schemas (XSD) suck. They are hard to read, hard to write, hard to understand, have interoperability problems, and are unable to describe lots of things you want to do all the time in XML.

To help condense some of the information scattered around the internet on the virtues on RELAX-NG, Griffin Brown recently listed 10 reasons to model XML with RELAX NG , not W3C XML Schema. The list includes:

  1. "A better spec means better interoperability".
  2. "Availability of a compact syntax" (RELAX-NG supports a DSL that concisely expresses constraints without resorting to pointy brackets).
  3. "The specification is a stable ISO standard".
  4. "No PSVI" (PSVI is considered harmful).
  5. "No content defaulting".
  6. "Better data typing support".
  7. "More sophisticated modeling".
  8. "More sophisticated grammatical validation".
  9. "Instances have no dependency".
  10. "Growing consensus".
Converting XSD files to RELAX-NG (.RNG) can be accomplished using the "Sun Multi-Schema Validator" tool, which produces verbose format .RNG files. Trang can then be used to convert to these to the compact form.
Must be 10x easier than the incumbant by Noah Campbell Posted Oct 30, 2007 10:59 AM
Re: Must be 10x easier than the incumbant by Jean-Jacques Dubray Posted Oct 30, 2007 12:48 PM
Re: Must be 10x easier than the incumbant by Jose Alberto Fernandez Posted Nov 6, 2007 12:17 PM
Re: Must be 10x easier than the incumbant by Joshua Graham Posted Nov 6, 2007 2:56 PM
And embed Schematron for XPath-based rules by Joshua Graham Posted Nov 6, 2007 3:24 PM
  1. Back to top

    Must be 10x easier than the incumbant

    Oct 30, 2007 10:59 AM by Noah Campbell

    ...before you'll see folks switch. Brown points out 10 things that are arguably qualitative, not quantitative. XML-Schema, if anything, is complex, but not necessarily deficient. I'm all for adopting standards that are easier to approach since xml schema modeling is very important. Again, it's hard to justify a switch in schema tooling when a good deal of infrastructure won't support it.

  2. Back to top

    Re: Must be 10x easier than the incumbant

    Oct 30, 2007 12:48 PM by Jean-Jacques Dubray

    I agree with Noah. I am not a specialist of relax-ng by any means but a quick look at the spec seem to indicate that the extensibility of the language are weak (foreign elements and attributes seem to be limited to ##other namespace). If this is the case, this is a severe limitation and setback incompatible with SOA. I did not see any performance comparison, it would be interesting how validation compares in both cases. I agree that XML Schema is complex (tools somehow mitigate it) but I need this complexity. The question is for the casual designer of schemas (say a few schemas a year), what is the best approach for him or her? is a tool enough? Do we really need a new syntax? I like the vision of David Chappell that seem to indicate that XML, WSDL, XSD, BPEL... are the byte code level of the technology. I am not sure we need more byte code level technologies. Not convinced so far...

  3. Back to top

    Re: Must be 10x easier than the incumbant

    Nov 6, 2007 12:17 PM by Jose Alberto Fernandez

    We use RelaxNG compact extensively in our systems. It is so easy to write that there is no need for complex tools. The Java XML parsers support it perfectly. You can import definitions, use multiple name-spaces, use overriding of definitions and much more with ease. And almost any human with minimal knowledge of context-free grammars can understand them easily. It has the correct level of syntax sugar necessary to allow you to express complex schemas succinctly. I do not wish XSD on anyone, not even on my worst enemy.

  4. Back to top

    Re: Must be 10x easier than the incumbant

    Nov 6, 2007 2:56 PM by Joshua Graham

    +1. "If WSDL is a turd, then XSD is the dodgy curry that makes it stink" - me.

  5. Back to top

    And embed Schematron for XPath-based rules

    Nov 6, 2007 3:24 PM by Joshua Graham

    ...very nice.

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.