namespaces include their name => 1-1

Namespaces aren't just any old resource. One of the properties of
namespaces is that the definition of a namespace includes its namespace
name. This means that there are many URIs that are *inappropriate*
for use as namespace names, because they don't actually match the
namespace name given in the namespace definition.

For example, the definition for the namespace of XSLT at
http://www.w3.org/TR/xslt#xslt-namespace says:

"The XSLT namespace has the URI http://www.w3.org/1999/XSL/Transform."

No other URI is appropriate for using with the XSLT namespace -- 
not even http://WWW.W3.ORG/1999/XSL/Transform (which differs
only by the case of the host name).

Because the namespace definition includes the namespace name, the
set of URIs appropriate for use as namespace names is _defined_ such
that the mapping from namespace name to namespace is 1-1.

While in general one may have two different URIs that identify
'the same' resource (for some value of 'the same') this isn't true
for URIs used appropriately as namespace names.

I think people are getting twisted into knots because they're thinking
that *any* URI can be used as a namespace name. But this isn't a good
idea at all. Consider the following algorithm for definining a namespace:

a) define most of the properties of the namespace, as well as you can
b) assign a URI for the namespace that _potentially_ could reference the
   namespace
c) attach the URI as the namespace name of the namespace
d) publish the URI as the namespace name

The result is a URI which is also a namespace name. By definition,
two different URIs, if they're used as namespace names, identify different 
namespaces.

Using "http://WWW.W3.ORG/1999/XSL/Transform" as a namespace name is
just an error. Don't do it.

Received on Friday, 2 June 2000 12:11:00 UTC