[S]
How would one indicate the MathML namespace using only a reversed
domain name?
We have a number of existing namespaces. Let's transform those to
reverse-dns dotted-on forms. This is slightly more verbose, but it
would work: org.w3.www.1998.Math.MathML
[S] Permit an element to be closed without its "prefix". It's something I've wished for in XML, for that matter:
<com.example..project>la, la</project>
I can't imagine a situation in which this is ambiguous. Even in XML, using QNames and prefixes:
<a:element> <b:element> <c:element> </element> </element> </element>
... is perfectly clear and unambiguous; and changes nothing about well-formedness. Call it namespace minimization.
[S]. Namespaces in XML specification might be improved by the addition of one word: "is a URI" becomes "is not a URI".
[S] Why not just make a clean break with namespaces and do extensibility with java-style dot-separated pathnames? It's trivially easy to understand and offers distributed extensibility for free. Trying to shoehorn it onto existing namespace-aware APIs is going to be awkward and may not buy much.
[S]If I wanted to publish a little XML vocabulary for donkey genetics, all the elements would have names like <org.tbray.donkeys.father> and <org.tbray.donkeys.birth-date> and so on. And if this were being used by IETF when we did atom, the tags would be like <org.ietf.atom.feed> and <org.ietf.atom.entry>. That's all. Distributed extensibility, and you can mix & match without asking anyone.
[S]
One thought is some prefix/suffix that maps to "http://" or possibly
the all-too-common "http://www.w3.org/" yielding names like
w3.1998.Math.MathML. A more grandiose thought is something Tantek has
talked about often, of making a unified W3C namespace. This is partial
grandfathering of the year portions of the URL strings (which would
need to be stored in a table somewhere) and combined with the above,
could yield names like w3.Math.MathML
[S] Here's a proposal that has a hint of DNS and perhaps a hint of e-mail address resolution.
1) fully qualified names should have the form:
local_name:namespace
2) A name without a namespace belongs to the namespace of the elements nearest ancestor that does have a namespace.
3) A name can also be specified using a partial namespace, e.g.:
local_name:partial_namespace
4) Unless a name ends with a . or :, on encountering a (possibly) partial namespace, a search is made to see if an ancestor element has a namespace that starts with that partial namespace. If one is found, the namespace becomes that of the full namespace. For example, if an ancestor element has the name:
myName:proposal.example.com
then a name of:
anotherName:proposal
is treated as:
anotherName:proposal.example.com
If 'proposal' really is the full namespace, and an ancestor has a namespace of 'proposal.example.com' then you can prevent the expansion by doing:
anotherName:proposal.
Trailing .s and :s are obviously removed when selecting the namespace part.
5) For the purposes of HTML5, the HTML5 namespace can be considered to be in-scope prior to the start of parsing so that documents can start simply as:
<html ...
I think this is simple and allows brevity without having to remember a lot of syntax. It puts the burden on the tools rather than on the document authors.