W3C home > Mailing lists > Public > www-tag@w3.org > September 2002

RE: How to Version XML Applications

From: Dare Obasanjo <dareo@microsoft.com>
Date: Wed, 11 Sep 2002 13:48:00 -0700
Message-ID: <8BD7226E07DDFF49AF5EF4030ACE0B7E07A97220@red-msg-06.redmond.corp.microsoft.com>
To: "Anthony B. Coates" <abcoates@TheOffice.net>, "www-tag" <www-tag@w3.org>

The W3C cannot give you guidance on versioning because as Tim and Norm
have accurately pointed out even within the W3C there are different
guidelines used for versioning XML vocabularies. For instance XSLT uses
a version attribute while most likely W3C XML Schema will be versioned
by changing the namespace URI. I agree with Len's subsequent email and
will throw in my $0.02 from an article I wrote a while back[0] 

Versioning and Namespaces
-------------------------
There are two primary mechanisms used in practice to create different
versions of an XML instance document. One method is to use a version
attribute on the root element as is done in XSLT, while the other method
is to use the namespace name of the elements as the versioning
mechanism. Versioning based on namespaces is currently very popular,
especially with the W3C, who have used this mechanism for various XML
technologies including SOAP, XHTML, XML Schema, and RDF. The namespace
URI for documents that are versioned using the namespace is typically in
the following format:

      http://my.domain.example.org/product/[year/month][/area]

The primary problem with versioning XML documents by altering the
namespace name in subsequent versions is that it means XML
namespace-aware applications that process the documents will no longer
work with the documents, and will have to be upgraded. This is primarily
beneficial with document formats whose versions change infrequently, but
upon changing alter the semantics of elements and attributes, thus
requiring that all processors no longer work with the newer versions for
fear of misinterpreting them. 

On the other hand, there are a number of scenarios where an XML document
versioning mechanism based on a version attribute on the root element is
sufficient. A version attribute is primarily beneficial when changes in
the document's structure are backwards compatible. The following
situations are all areas where using a version attribute is a wise
choice: 

* Semantics of elements and attributes will not be altered. 
* Changes to the document involves the addition of elements and
attributes, but rarely removal. 
* Interoperability between applications with various versions of the
processing software is necessary. 


Both versioning techniques are not mutually exclusive and can be used
simultaneously. For instance, XSLT uses both a version attribute on the
root element, as well as a versioned namespace URI. The version
attribute is used for incremental, backwards-compatible changes to the
XML document's format, while altering the namespace name is done for
significant changes in the semantics of the document. 

[0]
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnexxml
/html/xml05202002.asp

-- 
PITHY WORDS OF WISDOM 
Reality's the only obstacle to happiness..       

This posting is provided "AS IS" with no warranties, and confers no
rights. 

>  
>  
> -----Original Message-----
> From: Anthony B. Coates [mailto:abcoates@TheOffice.net] 
> Sent: Wednesday, September 11, 2002 12:42 PM
> To: www-tag
> 
> 
> ** Reply to message from Tim Bray <tbray@textuality.com> on 
> Wed, 11 Sep 2002
> 07:44:36 -0700
> 
> > I also am generally dubious about using namespaces to 
> version, to the 
> > extent that it might be worth considering an architectural 
> principle 
> > that this is a bad idea.
> 
> The problem is, how do you avoid using namespaces for 
> versioning?  This is a real problem that a great many people 
> have, and need guidance on (ideally from the W3C).  CMSMQ 
> argues that HTML already has set the policy, by have 3 
> versions in the one namespace.  So the namespace is not 
> versioned, the schema is.
> However, W3C XML Schemas only "hint" at schema locations, and 
> so the only positive piece of identifying information that 
> you have is the namespace URI.
> If that isn't versioned, how to you tell which version is 
> being referred to?  I'm yet to invent or read a solution that 
> I find sufficiently robust and convincing.
> 
> 	Cheers,
> 		Tony.
> ====
> Anthony B. Coates, Information & Software Architect 
> mailto:abcoates@TheOffice.net MDDL Editor (Market Data 
> Definition Language) http://www.mddl.org/
> 
> 
Received on Wednesday, 11 September 2002 16:48:32 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Thursday, 26 April 2012 12:47:11 GMT