It's
ironic that the design of associating a namespace with
every element meant that you didn't have to drag context
information from parent nodes (as would be required in
Michael's example below), but the implementation using
prefixes meant that you have to drag context information
from parent nodes!
Well yes. Even though making URIs an intrinsic part of
names was a mistake in XML Namespaces, it wasn't the
biggest mistake. The biggest mistake was the hierarchical
scoping mechanism that spawned prefixes, and thus the
ultimate evil of QNames in content.
I'm also not fond of a data model that defines a name as a
three-part entity (prefix, localname, namespace) instead of a single
string: it's a mess.