>Tim Bray has a blog entry title, “On OOXML“, which he goes over the pros and cons of OOXML. There is one quote I have to agree with from a xml grammar design, whether that be DTD, XML Schema, SchemaTron, or RelaxNG:
“There’s another big quality problem: OOXML allows the use of “custom schemas”; i.e. you can enrich your documents with your own elements and attributes, and still work on them with Office. The problem is, history teaches that this is a terrible idea. As far back as the Eighties, people were doing this with SGML, and of course XML tried to continue the practice. It should be instructive that there were several companies founded to build and sell the technology around this, and none of them ever made any money to speak of; they’re gone.
Custom schema work turns out to be horribly complex in practice, in setting up the editing and versioning and display and formatting technologies; a recipe for huge, years-long, consulting engagements, and really lousy results. Don’t go there.” — Tim Bray, “On OOXML”, 03/05/2008.
While people argue for the need for extensions (business needs, proprietary data requirements, etc.), and it may seem harmless to extend a schema to meet your own business rules, it has long term affects on the people or applications that need to read that data. Extensions promote one off implementations, which causes more work for those trying to consume a standard schema from multiple parties. If each person in a trading partner network extends a industry standard schema to include their particular “special needs” then it destroys what the goal of the original standard was intended to do, to make implementation and data exchange easier and more reliable. It doesn’t help to reduce costs. Particularly development and maintenance costs.
The better option is to work with who ever maintains the schema to get the requirements added into the specification. This will require the maintainers of the specification to respond quicker than they typically have to these requests for modifications, but that is a topic for another blog.
Bottom line is don’t extend, but work with the organization creating the schema to get your needs included into the schema.