XML Schema Design: Desiging extensible, versionable XML vocabularies
Dare shares gudelines on how to design extensible, versionable XML vocabularies.
The outline is:
Message Transfer Negotiation vs. Versioning Message Payloads
Version Numbers vs. Namespace Names
The Difference Between Versioning and Extensibility
Guidelines for Designing Extensible XML Formats
- XML formats should be designed to be extensible.
- Extensions must not use the namespace of the XML format.
- All XML elements in the format should allow any extension attributes, and elements with complex content should allow for extension elements as children.
- Formats that support extensibility must specify a processing model for dealing with extensions.
Why XML Formats Should Be Designed to Be Extensible
Why Extensions Mustn't Use the Namespace of the XML Format
Using XML Schema to Design an Extensible XML Format
Guidelines for Designing Versionable XML Formats
- If the next version of a format is backward compatible with previous versions, then the old namespace name must be used in conjunction with XML's extensibility model.
- A new namespace name must be used when backward compatibility is not permitted. That is, software must break if it does not understand the new language components.
- Formats should specify a mustUnderstand model for dealing with backward incompatible changes to the format that don't change the namespace name.
Using XML Schema to Design a Versionable XML Format