I forgot to ask for money. :-(
However, it felt good just to have something published after my book on XML Schema was cancelled at virtually the last possible moment. grrr...
But I'm over that now. Somewhat.
Still(!) working a pseudo-universal namespace transform (PUNT) for XML namespace prefixes. I've got the encoding bit working (except for prefixes in content, but that's easy). Found a serious bug in Xerces 2.2.0, where it was dropping the uri values on the endElement() callback. Version 2.0.2 doesn't have this problem.
Decoding a PUNTed prefix is just a question of pattern matching through regex and replacing the binary-encoded nonName characters with the original URI characters. And, of course, add any missing namespace prefix declarations (which is the whole point of PUNT).
No, a PUNTed document is really not XML, howevever it is XML conformant. There's a difference. XML documents should above all be readable, although we're well past the point of that actually being the case in practice, even within the W3C techs. Just look at XSLT :-)
But there are a number of problems with Namespace prefixes, and PUNT is a brute-force approach to tightly binding URIs with their local element and attribute names. Really ugly, but hard to screw up. Which is the point.
Also thinking more on a typed metalanguage. Jeni Tennison and Uche Ogbuchi are exchanging ideas on a very interesting thread on xml-dev right now. Ideas worth stea^H^H^H^H borrowing.
PUNT has given me the opportunity to play around with XML filters in SAX. I haven't read a really good article on how SAX XML filters work and what they're good for, though.