Lists Home |
Date Index |
- From: james anderson <email@example.com>
- To: Tim Bray <firstname.lastname@example.org>, email@example.com
- Date: Mon, 07 Feb 2000 12:03:10 +0100
Tim Bray wrote:
> Wow. For a second I thought "what a brilliant idea, why didn't anyone
> think of it before". And maybe it is. Hm... is it a problem that you
> can have an element type and an attribute name in the same namespace,
> but they're really different names?
> E.g. <b:foo b:foo="32" />
> the two b:foo's are really different things. -Tim
Not necessarily. The just name different things.
This is a misconception which reappears often in the discussion of
namespaces. Perhaps, a misconception which made the situation more
complex that it need be. The problem is that, on numerous occasions the
"namespace" is conflated with a "binding space".
That is, the identity of a name is distinct from the contexts in which
it is bound.
That is, a function in a parser which maps (String uri, String
localPart) -> QName is distinct from those functions, elsewhere in an
xml processor, which map (Document d, Qname tagname) ->
ElementDeclaration, (Element e, Qname tagname) -> Element, (Element e,
Qname attname) -> Attribute, or whatever. While one can conceive of a
storage model in which the distinction between tagname and attname is
maintained on a global basis, it is difficult to conceive of the
advantages over a model in which the identity of the tag/attname is
qualified by the presence of the binding context.
That is, the names are the same, the contexts are different.