Re: Namespaces on Attribute Names

David Megginson (david@megginson.com)
Tue, 21 Jul 1998 13:37:48 -0400


james anderson writes:

> the suggested interpretation of qualified attribute names conflates
> two things (inheritance and namespaces). these are better left
> distinct - at least on the conceptual level on which i understood
> the response to have been situated.

Please take my posting as descriptive rather than prescriptive: I'm
attempting to supply an explicit conceptual framework for something
that never properly had one, but am not promoting that framework as a
good solution.

> do i understand the suggestion correctly, to specify that the
> presence of an attribute from a given namespace denotes a dynamic
> subtype relation between the containing element and an element with
> the same name as the prefix used for the namespace (the correctness
> of applying 'LC.getRefNo' to the element).

No, I wouldn't go that far, mainly because namespaces don't have
elements or attributes; they just have names.

I'd suggest instead that the attribute from a given namespace implies
a subtype relationship between the current element and an unnamed
element type that includes the qualified attribute.

> aren't there alternative ways to expresss that? ways which would be
> just as expressive, though less terse, but which would also allow
> permit other denotations and which don't lead to the such quandries
> as the following.

(That's probably a rhetorical question.) Yes, architectural forms
handle this situation much more smoothly by explicitly naming the
supertype, though AF's, too, have their warts in other areas.

> if i follow your c++ example back to xml, i understand it to imply, for
> example, that the possible declaration
>
> <!ATTLIST LC LC:refno CDATA #REQUIRED >
>
> applies to any element in which the attribute is present, but doesn't apply
> when the attribute is not. !?

Namespaces and DTDs are two different kinds of things: a DTD specifies
what an author is allowed to include in a specific document, and what
defaulting for attribute values, etc., should be used. A namespace
simply guarantees that a name is globally unique, whatever that name
happens to be used for.

> is this the kind of thing mr murray-rust is always alluding to when
> he mentions the "rather hairy problems of validating dtds" in the
> presence of qualified names?

There's not really a problem from that perspective: a DTD can/will
restrict the particular uses of namespaces in a document, as in the
following example:

<!ATTLIST doc
LC:refno CDATA #REQUIRED
CRTC:rating CDATA "restricted">

The problem with DTDs will come if namespaces include some kind of
defaulting or local scoping mechanism -- at that point, writing a DTD
for an XML document will become extremely difficult.

All the best,

David

-- 
David Megginson                 david@megginson.com
           http://www.megginson.com/