== XHTML on the web is for masochists
Web design purists like to talk up XHTML at the moment, but as far as I
can tell almost everyone who is trying to do XHTML today is a masochist
(or ignorant).
First, Internet Explorer does not support XHTML. Not even IE7 will
support XHTML, which means that for all practical purposes you cannot
serve only XHTML to visitors; some of them need to get an HTML version
instead.
The usual dodge is to serve the same XHTML document as XHTML to browsers
that can handle it but as text/html to everyone else. The problem
here is that XHTML and HTML have different rules for several areas;
creating a XHTML page that will render the same in HTML requires
painstaking and awkward contortions.
Changing the Content-Type of a URL on a request by request basis means
that your web server needs to do some dynamic stuff on every request,
even requests for what would otherwise be static files.
Since the Content-Type varies from person to person, I believe that you
need to mark your pages as non-cacheable, to avoid having web caches
serve a cached version with the wrong Content-Type to a browser that
can't handle it.
And for all of this extra work, what you get is basically equivalent to
writing HTML 4.01 strict; it's not as if XHTML gives you more layout
power or is easier to write.
(Actually most people are probably ignorant of these issues. This also
explains the huge collection of web pages that claim to be valid XHTML
but aren't, which would have catastrophic effects if browsers actually
believed them, since with XML and XHTML you are supposed to refuse to do
anything with the document if it's invalid.)
=== Some further reading
* Ian Hickson's [[Sending XHTML as text/html Considered Harmful
http://www.hixie.ch/advocacy/xhtml]]
* [[Mark Pilgrim http://www.xml.com/pub/a/2003/03/19/dive-into-xml.html]]
* Anne van Kesteren's [[XHTML is invalid HTML
http://annevankesteren.nl/2004/06/invalid-html]] and [[MIME types
matter; DOCTYPEs don't http://annevankesteren.nl/2004/07/mime]].
* [[W3 XHTML compatibility guidelines
http://www.w3.org/TR/xhtml1/#guidelines]]