Just a quick side note, I’m hacking on a DTD mode for Bespin. The code is pretty ughly still, but the output is getting OK.
It already supports marking up errors, to a similar extent that they’re found in compare-locales these days. Better parsing for the actual values is a bigger task, in particular one that should improve Bespin’s XML mode at the same time. ‘Cause that didn’t impress me yet.
Code will come in bug 510579.