In talking with Jean Paoli of Microsoft a few months ago about ISO standardization, he asked what kinds of changes would be needed to make OOX acceptable to ISO members. Of course, I cannot speak on any of their behalf, they will get their own votes in due couse, but one of the things I mentioned was that I thought it would great if OOX came with ISO RELAX NG Compact Syntax schemas.

The normative schemas are the W3C XSD ones. The ISO RELAX NG Compact Syntax schemas are non-normative/informative: which means that you rely on the XSD and the normative text of the standard ahead of the RELAX NG schema, and that adoption of the RELAX NG schemas implies adopting the maintained living versions rather than just the pre-baked version of the paper standard: you cannot adopt a non-normative part of a standard as if it were normative of course, that would go against the spirit of the standard and be dumb…you adopt the standard and then you use the RELAX NG version of the schemas (as maintained) .

SC34, the committee at ISO that handles ISO SGML (i.e. XML’s base), ISO DSDL (e.g. RELAX NG, Schematron) is also the committee that looks after the ISO standards for ODF, OOX and HTML. (I don’t think we do ISO PDF but I could be wrong.) I was involved a decade ago and again recently with ISO Schematron.

It is not just a matter of turf (SC34 does RELAX NG, therefore SC34 “products” should also use it) or a level playing field (ODF uses RELAX NG therefore OOX should use it.) The main reason for providing a RELAX NG schema is because it is easy to read and supports people who are integrating using the RELAX NG branch of technology. I don’t believe Microsoft has any plans or much need to adopt RELAX NG itself (Schematron is a different matter, I am always hopeful !)

So Jean then batted the ball to my court: they would include RELAX NG compact schemas if someone (i.e. me) could provide them. My company, Topologi had been working on various XSD tools and RELAX NG tools, so we were well placed to use OOX as the test case for developing an XSD to RELAX NG translator (functionality which James Clark’s Trang, for example, does not provide.)

I’ll write a little blog about the translator next.

But I’m interested in feedback on the RELAX NG compact schemas for OOX, which MS are posting this week, I believe. For example, it probablys need some additional ISO NVDL schema rules to make it all work together. I made a decision that if an imported/included schema had a namespaces did not differ in the first 10 character, I would treat it as a local schema and use the equivalent RELAX NG mechanism. However if the namespaces did differ, I would treat the other namespaces as ANY elements, to be skipped over by RELAX NG: Dublin Core elements and VML both fall in this category, for example. But these are exactly the kinds of problems that ISO NVDL can solve.

The XSD to RELAX NG translator will find its way into the (commercial) Topologi Schema Evolution utility being released this month.