The fundamental problem here is the need to output in multiple markup languages. [...] However, Django simply does not work at the level of abstraction that would allow multiple output languages.
The Django people have always been quite up-front about their goal of providing a full-stack framework with all basic components included and tested rather than an all-singing, all-dancing, pluggable and composable architecture. I can't say what they've come up with is to my personal tastes but it's a perfectly reasonable design choice. "What real world problems would such a change solve" is a similarly reasonable and pragmatic question. "Tough. Django produces XHTML" makes them sound like bigger jerks than they probably are!
I think that one of Django's nicest benefits is that even though it isn't all singing/all dancing, you can make it do just about any song or any dance with some extra code. I'm not saying that don't have valid reasons to do otherwise, but I think it would be more inline with the "django philosophy" if you could make the HTML generation extensible.
The Django people have always been quite up-front about their goal of providing a full-stack framework with all basic components included and tested rather than an all-singing, all-dancing, pluggable and composable architecture. I can't say what they've come up with is to my personal tastes but it's a perfectly reasonable design choice. "What real world problems would such a change solve" is a similarly reasonable and pragmatic question. "Tough. Django produces XHTML" makes them sound like bigger jerks than they probably are!