Re: Why the Same Namespace URI for XHTML 1.0 and 1.1?

Evan Prodromou <evan@prodromou.san-francisco.ca.us> wrote:

> So, this is a general design question for XML document definitions
> rather than a specific question about XHTML.

Which should be better discussed on xml-dev or elsewhere.  In fact
during 1999 there were lots of discussions on that topic on xml-dev,
triggered by the namespace usage in XHTML 1.0.  A good summary of
that discussion can be found at:

    http://www.xml.com/pub/a/1999/10/names/namespaces.html

> In XML document definition design, I usually promote the viewpoint
> that different published versions of a document definition should have
> different namespace identifiers, especially if there are non-trivial
> differences to the definitions. The loosely defined "space" of "names"
> has changed; for compatibility, different identifiers should be used
> for each space.
> 
> The counterargument to this principle, of course, is XHTML 1.0 and
> 1.1. These are two different document definitions -- elements allowed
> in 1.0 aren't allowed in 1.1 -- yet they have the same XML namespace.

More prominent counterargument is XSLT, which uses the same namespace
URI for both version 1.0 and 2.0.  Compared to the differences between
XSLT 1.0 and 2.0, differences between XHTML 1.0 (Strict) and 1.1 are
minimal.

You can find many other examples, e.g. MathML 1.0/1.01/2.0 share
the same namespace, SVG 1.0/1.1 (Full|Basic|Tiny) share the same
namespace, and so on.  Of course you can also find other examples
that follow your principle.

Versioning of namespaces has been a difficult issue carried over
from the last millennium, and we haven't seen a clear consensus yet.
The status quo is that there are many policies one can state about
the relationship between a namespace name and a language, and each
language should state a clear policy.

> I can't find a good explanation for why this is.

A historical fact is that the first XHTML 1.0 Proposed Recommendation [1],
which proposed different namespaces for XHTML 1.0 Strict/Transitional/
Frameset, was returned to the HTML Woring Group with the instruction to 
adopt a single namespace [2].  Although this discussion was primarily
whether to use different namespaces for variants of XHTML 1.0 or not,
it effectively killed the possibility to adopt a different namespace
for an XHTML Family document type using XHTML Modularization, such as
XHTML 1.1.  The HTML WG had no choice but to adopt a single namespace
for XHTML 1.x.

> This seems to violate
> the W3C namespace policy template stated here:
> 
>      http://www.w3.org/1999/10/nsuri

A template is just a template.  The important thing is to state a clear
policy, and there are many examples which state otherwise.

> I can't seem to find a contradictory namespace policy for the XHTML
> namespace URI.

    This is an XML namespace defined in the XHTML™ 1.0: The Extensible
    HyperText Markup Language specification, and is shared across XHTML
    Family document types using XHTML Modularization, including XHTML 1.1
    and XHTML Basic.

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

> Is my principle stated above -- different group of
> names, different namespace -- deeply flawed?

I don't think your principle is flawed, and it is fine to adopt such
a principle to your language design.  However, you should be aware
that other policies exist, and should not assume that everyone in
the world adopts the single canonical principle.  It's a valid policy,
but not the only policy.

[1] http://www.w3.org/TR/1999/PR-xhtml1-19990824
[2] http://lists.xml.org/archives/xml-dev/199911/msg00096.html

Regards,
-- 
Masayasu Ishikawa / mimasa@w3.org
W3C - World Wide Web Consortium

Received on Monday, 28 July 2003 08:01:10 UTC