[standards-jig] Namespace Versioning

Evan Prodromou evan at prodromou.san-francisco.ca.us
Mon Mar 31 13:07:32 UTC 2003


So, I have a question about namespaces, which I'd like to see
considered.

It's not uncommon in standards organizations that use XML, and
particularly XML namespaces, to have some kind of versioning
information in the namespace. For example, most W3C namespaces use the
date of publication of the recommendation as part of the namespace
URI. For example, the XML encryption namespace is:

     http://www.w3.org/2001/04/xmlenc#

...and the XHTML 1.1 namespace is:

     http://www.w3.org/1999/xhtml

...while MathML is:

     http://www.w3.org/1998/Math/MathML

Public identifiers for DTDs almost always have a version in them.

The advantage to adding versions in the namespace is to differentiate
between the syntax and semantics of two different versions. In
essence, they are two different namespaces, and it's important that
processors know what to expect when they see a namespace URI. Two
different versions might have slightly or very different schemata*;
it's important that the processor know that a data stream really has
the elements and order that it claims to.

I'm working on a new version of the JOAP document, and I'd like to add
a version number to the URN used for the namespace. Because Jabber
JEPs have a built-in versioning scheme (according to the revisions of
the JEP documents), I'd like to just append that version to the full
namespace, like this:

           jabber:iq:joap:0.3

This would keep processors built for earlier or later versions from
thinking they "understand" the contents of a JOAP stanza.  There would
be an implied, but non-specific, connection between this namespace and
earlier or later versions. That is, someone looking at the raw XML
would know that I'm trying to speak JOAP with them, but the programs
themselves wouldn't know -- or be expected to know -- that
jabber:iq:joap:0.3 is just like jabber:iq:joap:0.5 except it doesn't
have the <frozz> element and the "bar" attribute of the <foo> element
can have one of three, instead of two, possible values.

This kind of changes what we think of as a standard, but it also makes
processors simpler, and lets everyone in a stanza exchange know
exactly where everyone else is at.

I would like to get some feedback on this idea, however, before
including it. Comments/suggestions/angry rebuttals?

~ESP

* By "schema", I mean either the XML Schema, or DTD, or just informal
  definition of what makes up the namespace -- something that says
  "what these elements are" and "what they mean to you."

-- 
Evan Prodromou
evan at prodromou.san-francisco.ca.us






More information about the Standards mailing list