テンプレ変更作業中

[ Web関係 ]

とりあえずJavaScriptは書き終わりました。blockquote要素のcite属性とtitle属性を表示させることに成功。まだscript要素で読み込んでないので反映されてないですけど。現在、過去の記事の編集中。cite属性とtitle属性書いてないblockquote要素が結構あったので修正してます。

あとは和澄侑永さんに伝言。

……普通に「さん」でいいと思うのですが。

ですよね。

……もういい。私はW3C信者であってAnother HTML-lint信者じゃない。W3Cのチェックだとちゃんと「This Page Is Valid XHTML 1.1!」ってでるからいい。しかしCSSはエラーバシバシ出してくれるというオチ。……なんだろうねこの敗北感!

私が「application/xhtml+xml」にした方がよいと指摘したのは何もlintで減点されるからではありません。XHTML1.1の仕様書W3C Note XHTML Media Typesで「text/html」が非推奨になっているからです。ただ、XHTML1.1 SEでは「text/html」でもよくなるみたいですけど、まだWorking Draft段階なので今後どうなるのかちょっと分かりません。もしSEで「text/html」でもOKになったら、好きなメディアタイプを用いればいいのではないかと。まぁ、現実的な選択肢としては「text/html」になると思いますけどね。

で、「application/xhtml+xml」を選択した場合、IEとか色々面倒なことになるのでその解決方法。PHP必須。

<?php
if (ereg("application/xhtml\+xml",$_SERVER['HTTP_ACCEPT'])
||eregi("Another_HTML-lint", $_SERVER['HTTP_USER_AGENT'])) {
  header ("Content-Type: application/xhtml+xml; charset=EUC-JP");
} else {
  header ("Content-Type: text/html; charset=EUC-JP");
}
?>

こいつを各文書の先頭に書くか、別ファイルにしてincludeしてください。文字コード表記は適宜変更のこと。UAに応じてHTTPヘッダのコンテントタイプを強制的に変更してます。「application/xhtml+xml」を受け取れないUAには「text/html」で吐かせるって感じ。これだとIEでは「application/xhtml+xml」ではなく「text/html」で閲覧することになって若干不本意ではありますが、解釈出来ないものは仕方ないかと。IEでもレジストリを弄れば「application/xhtml+xml」を解釈出来るようになるらしいんですけど、一般ユーザがそこまでカスタマイズしてるわけがないので暫定処置です。

上のコードではlintには決めうちで「application/xhtml+xml」を吐かせてますが、今はこういった小技っぽいことしなくてもlintで減点されることはなくなっていたと思います(記憶が曖昧)。

Perlでも似たような感じでUAごとに振り分けが出来ます。あとは適当にググって下さい。

「application/xhtml+xml」と「text/html」どちらを選択するにしても、XHTML1.1ではメディアタイプ及び文字コードの指定はサーバ側で行うべきであって、meta要素で指定すべきではありません。この辺のことはAcademic HTMLの「http-equiv 属性を持つ meta 要素」が参考になるかもしれません。あとは徒書の「Re: XHTML1.1のMIMEタイプ」とか。

追記

提案されていた解消法ですがえーとそれは試しましたけどlint様はエラーとのお言葉でございましたよ とだけ。

えー、私のとこはこれで平気なのに。.htaccessファイルでtext/html指定してたりしません? 何ででしょう。謎。まぁそこまで拘らなくていいような気がしなくてもないので、ことの発端である私がこんなこというのもアレですけど、後は適当に。お役に立てなくてごめんなさい。

2007年3月5日追記

XHTML 1.1仕様ではメディア型の規定は無いのでは。(XHTML Media Typesに記載されている話)

仕様に書かれていることと混同しまくってましたorz 北村さん、ご指摘ありがとうございます。

BGM : Com FM(by 石野卓球 from TITLE #2 + #3)

2007年3月 3日土曜日 20時27分56秒