HTML5での文字エンコーディング指定とValidator.nu
先週行われたGoogle I/OのキーノートでAdobeのCEO, Kevin LynchよりAdobe Dreamweaver CS5 HTML5 Packが発表されました。DreamweaverでHTML5とCSS3のオーサリングを手助けするもので、いくつかの新しい要素やプロパティにコードヒントへの対応や、以前取り上げたマルチスクリーンプレビュー機能などが盛り込まれています。
HTML5やCSS3は発展途上ですからオーサリングツールの対応もまだ充分ではありません。今後のアップデートにも期待したいです。
オーサリングツールのほかにも、マークアップが適切かどうかを判断するための術がほしいところです。HTML5では適合性チェックツールとしてValidator.nuが開発されており、W3CのMarkup Validator (開発版)にも実験的に組み込まれています。
しかしながら、HTML5仕様自体が策定中ですから、当然Validator.nuも開発途中です。また、開発リソースの問題もあり、実装されていない機能もまだまだ多く残っています。つまり、Validator.nuに通っただけで適合しているとは言えないのです。
たとえば、文書のエンコーディング指定ですが、HTML5ではふたつの書き方があります。
meta
要素のcharset
属性による指定 (<meta charset="UTF-8">
)- HTML4と同じ、
http-equiv
属性による指定 (<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
)
どちらを使ってもよいのですが、なにせシンプルですからHTML5のものがよく使われています。互換性について気になるかもしれませんが、実はこのcharset
属性、古いブラウザーの実装を元に仕様ができた経緯があり、古いブラウザーでも問題なくサポートされています。
ところが、そういったことを知らず、互換性を気にしているのか、このどちらをも指定する文書があるようです。先日CSS Nite LP9連動コーディングコンテストの審査をしていたときにもいくつか見かけたのですが、ふたつ書くことは認められていないと仕様書に書かれています。
There can only be one character encoding declaration in the document.
(訳: 文字エンコーディング宣言は文書中にひとつのみ存在することができる。)
しかし、これはValidator.nuでまだ実装されていない (該当バグ) ため、チェックされずに通ってしまいます。
実験的ではあれ「Valid」と表記するのも少し困りものですが、Validator.nuだけのチェックでは安心出来ない例がいくつかあるので、お気をつけください。