Namespaces: prefixes vs. no prefixes

Ron Bourret (rbourret@dvs1.informatik.tu-darmstadt.de)
Tue, 28 Jul 1998 20:06:52 +0200


This is undoubtedly a no-brainer, but it has just now occurred to me that the
following two DTDs are almost certainly not the same.

<!ELEMENT A (B+)>
<!ELEMENT B (#PCDATA)>

and

<!ELEMENT FOO:A (FOO:B+)>
<!ELEMENT FOO:B (#PCDATA)>

Originally, I had thought that instances of the first case would be recognized
by applications designed for the second -- that is, an application would have a
"default" namespace) -- but now I am leaning the other way. The namespace spec
does not describe how to compare names, so I am assuming that they are first
resolved into fully qualified names and then compared stringwise.

One of the consequences of this is that if namespace prefixes are used in a DTD,
they must be used in both the instance file and in the application. (Of course,
it is easy to imagine an application implementing a default namespace for
backward compatibility, but this is outside the spec.)

Could somebody confirm that these DTD are, in fact, different?

-- Ron Bourret