[standards-jig] Namespace Versioning

Julian Missig julian at jabber.org
Mon Mar 31 20:53:59 UTC 2003

Well, for the most part, newer JEPs have moved to actual URL-style 

The major problem with including a version in the namespace is that it 
offers no indicator of whether or not protocols are compatible anyway.

I'm a Jabber client, I deal with "jabber:iq:joap:0.3" namespaces. I get 
a "jabber:iq:joap:0.4" namespace. The only way for me to know that I 
can try to deal with "jabber:iq:joap:0.4" using my "jabber:iq:joap:0.3" 
handler is to somehow parse out the version. This brings us into 
nonstandard usage of namespaces and all sorts of other ickiness I'd 
rather not get into.

XHTML 1.1 isn't really in support of your argument either. 
"http://www.w3.org/1999/xhtml" was the namespace identifier for XHTML 
1.0. Now XHTML 1.1 comes along, with some slightly incompatible 
changes, and it still uses the same namespace.


On Monday, Mar 31, 2003, at 08:07 US/Eastern, Evan Prodromou wrote:

> 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
> _______________________________________________
> Standards-JIG mailing list
> Standards-JIG at jabber.org
> http://mailman.jabber.org/listinfo/standards-jig

More information about the Standards mailing list