Since this website is written to the XHTML 1.0 Strict Doctype, I thought it would be nice to serve it with the correct MIME type to conforming user-agents. I remembered hearing about a plugin called
xhtml that would do this, but after a cursory search came up with nothing I decided that I’d just write my own.
xhtmlmime. It uses
CGI.pm to sniff the
Accept: HTTP header from the user-agent and then serves blosxom with the preferred MIME type. There are two variables that need to be set:
$flavoursneeds to be set to a list of flavours upon which to act. This defaults to empty, and the plugin will exit quietly until you set it.
$charsetshould be set to the character encoding used on your weblog. This defaults to
You can force the plugin to send the
application/xhtml+xml MIME type by specifying a URL parameter of
mime to anything else will result in the user getting
The plugin now exports a variable –
$xhtmlmime::meta_http_equiv – for use in your head templates. If you use the http-equiv element, set it as follows:
<meta http-equiv="content-type" content="$xhtmlmime::meta_http_equiv">
And the plugin will ensure that it is set correctly.
As noted by Bill Lovett, serving as
application/xhtml+xml raises a couple of issues. The most important one is that this will lead to very strict interpretation of your pages by the web browser, so unless your pages are well-formed – contain no mistakes in the markup – your visitors will just get error messages! Bad plugin!
So, before using this plugin you need to be confident that this is the case, and that you have some method for ensuring that only well-formed, valid markup ends up on your pages.