OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
RE: [xml-dev]Changing Namespaces Between Specification Versions

> How about this really simple practical example: your 
> application accepts the following xml:
> <root>
>   <node>doSomething</node>
> </root>
> You know this might change, so you wonder about using a 
> version attribute and/or a namespace, and what that namespace 
> should be.  (if you do use a namespace, you want it to 
> "brand" your xml appropriately).
> A few months later your application changes to accept the 
> following xml:
> <root>
>   <from>customer name</from>
>   <node>doSomething<node>
> </root>
> There are already lots of customers sending you the original xml.
> What should happen here?

If "your application" is the only application that ever consumes this data,
then just modify the schema to add <from> as an optional element, and modify
your application to understand it.

If "your application" has been distributed around the world, or if other
applications read this data, and if these applications make no provision for
future extensions to the schema, then you're skewered whatever you do. No
tinkering with the schema is going to make unmodified applications behave in
a sanitary way with the new data.

> Personally I would:  Use the same namespace for both, and add 
> version attribute to distinguish them. 

Yes: and this needs to be done right at the start, in anticipation of future
changes; and applications need to be written to check the version and/or to
follow some kind of policy like ignoring unrecognized elements.

> I would also have two 
> xsd's, and validate each instance based on its version number.

XSD 1.1 allows you to use conditional type assignment switched on the
version number, so you don't need two separate schemas, it can all go in

But the essential point is that this is not primarily an issue of schema or
vocabulary design. It's primarily an issue of application design. If
applications aren't future-proof, nothing you do in a schema will keep them
working when the data changes.

Michael Kay

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS