Extension, Compatibility, and Versioning
A quick summary of helpful resources I’ve found for extension, compatibility, and versioning of web service messages.
David Bau has a great set of articles discussing problems and solutions surrounding compatibility:
If you’re trying to do XML document extension and versioning in the context of W3C XML Schema (WXS), Dave Orchard’s suggestions are probably most appropriate:
It isn’t clear from Dave’s articles that as you continue to add extensions, the extension elements nest, and the document gets deeper and deeper. It’s functional, but not exactly pretty.
Dare Obasanjo looks at how convoluted it becomes and recommends two passes of validation. One with WXS to catch the easy stuff, then another with code to enforce more complex validation.
Sean McGrath’s project Reach is using Dave Orchard’s approach, but also includes a generic property list. This method doesn’t look like it can be validated by WXS, but if you’re already doing two-pass validation (or ignoring WXS), then it doesn’t matter.
Mark Baker suggests using RDF/XML and avoiding the problems altogether, since RDF allows partial understanding.
You won’t necessarily be able to validate with WXS, since elements can appear in any order. I’m also still not clear on how to implement “mustUnderstand” in RDF, and I can’t find any indications that anyone has actually done so.