This document is also available in these non-normative formats: XML.
This Finding addresses the question of whether or not adding new names to a (published) namespace is a sound practice.
This document is an editor's draft without any normative standing.
Additional TAG findings, both accepted and in draft state, may also be available.
The terms MUST, SHOULD, and SHOULD NOT are used in this document in accordance with [RFC 2119].
Namespaces are a mechanism for managing names in a distributed way that greatly reduces the likelihood that two independent parties will create the same name for different purposes.
The terms in a namespace are two-part identifiers consisting of a namespace name (a URI) and a local name (an NCName as defined in [XML Namespaces]). Using a URI leverages the well-understood URI allocation mechanisms of [WebArch Vol 1].
The proposal to define a new local name, “
the namespace “
xml: namespace) raised a question about the identity
of a namespace. Concretely, it exposed two perspectives:
One perspective was that the
xml: namespace consisted of
xml:base (and no other names)
because there was a point in time in which those where the only three
names from that namespace that had a defined meaning.
perspective was that the
xml: namespace consisted of all
possible local names and that only a finite (but flexible) number of
them are defined at any given point in time.
Colloquially, we often speak of “adding a name” to a namespace.
Here we prefer to speak of “defining a name” or otherwise licensing
the interpretation of a name. For example, the [xml:id]
specification defines the meaning of the local name “id” in the
xml: namespace. Similarly, a namespace created to hold
the names of all the reserved words in a programming language would
license the interpretation of those QNames without explicitly defining
each of them.
The publication of [xml:id] as a
provided a partial answer to the question of which perspective is
correct. Adding a definition for the local name “
id” in the
xml: namespace demonstrated that the number of local names
defined in the
xml: namespace could be extended.
The question remains, however, as to whether the other position is ever sound. This Finding takes the position that it is.
Namespaces, originally designed to provide names for XML elements and attributes, have been adopted much more broadly by the web community. They are now used not simply for elements and attributes but for function names, tokens, and identifiers for ever more purposes.
xml: namespace demonstrates that some namespaces
benefit from a policy that allows additional names to be defined in them
over time. This does not preclude the possibility that some
namespaces would benefit from a policy that forbids such extension.
From these observations, we conclude that the following good practice
Specifications that define namespaces SHOULD explicitly state their policy with respect to changes in the names defined in that namespace.
For namespaces that are not immutable, the specification SHOULD describe how names may be given definitions (or have them removed) and by whom.
If a namespace document is provided, as [WebArch Vol 1] recommends, the namespace change policy SHOULD be stated in the namespace document.
As a general rule, resources on the web can and do change. In the absence of an explicit statement, one cannot infer that a namespace is immutable.