In fact, as stated above, the solution for namespaces should not presume the existence of DTDs. The latter is the more serious. A name containing a colon is to be interpreted as having two parts, where the part preceding the colon is the name of a namespace. That is, the namespace qualifies the element name. All names are interpreted as having qualification, but the qualification can be syntactically omitted when the name comes from the same space as the immediately enclosing element.
Any element can have one or more foreign namespaces introduced to it.
Names used within the element use the short name as their qualifier. It is processors of the grove who worry about interpreting the qualified names.