Our organisation is just getting up to speed with
XML and we are currently trying to put some standards together. As part of this initiative I am trying
to come up with a strategy for versioning of XML Schemas. My current plan is that we develop 3
types of schemas 1) Core Component Library - A library of commonly used
simple types and attributes that define the structure of elements, e.g. "string20Type"
defines a string with a maximum length of 20 characters etc. 2) Business
Component Library - A library of simple and complex types that are more
specific to our individual business requirements, e.g. UnitOfMeasureType
that defines an enumerated list of Units of Measure, uses structures defined in
the Core Component Library. 3)
Application/Service specific schema - Schema specifically related to the
application or service to support a business process, reuses structures from
the Core Component Library and the Business Component Library.
The reason I have structured our schemas like this
is to try and get reuse out of standard elements and to avoid semantic translations
between applications that are reusing the same information.
However, this is causing me a big headache trying
to come up with a versioning strategy. It is likely that our schemas will form
the basis of Web Services and therefore will need to be both forward and
backward compatible. Obviously
adding new types to my library will not be a problem but if the business
changes the validation rules for a specific type, e.g. changes a pattern of a
string from [A-Z]{3}\d{1,4} to [A-Z]{4}\d{1,4}, then this
has broken my compatibility.
I want the schemas to do most of
the validation therefore "version" attribute in the <schema>
tag is insufficient. Creating my
own <simpleType> of "SchemaVersion"
is also insufficient as I am referencing 3 types of schema and my application
schema needs to be valid against the library schemas. Namespacing
does provide me with the validation levels I am looking for but then the schemaLocation will also need some level of versioning by
using file name versioning or directory versioning structure.
Does anyone have any experience
of version controlling their schemas, UBL has included versioning but to me
their solution doesn't really seem to hang together tightly enough.
I would be grateful for any feedback from your
experiences.
--------------------------------------------------
Jon Barwell
Technical
Specialist
AAH
Pharmaceuticals