最近はめっきり少なくなったのかもしれませんけども、ぽち*ぷ〜ちは XHTML1.1 と CSS2.1 の手書きで作られています。その手書きでとても重宝するのが (X)HTML文法チェッカーです。このページでは、Perl で書かれた Another HTML-lint を使って、日本語環境の文字コードが UTF-8 の debian squeeze のローカル環境で HTML/XHTML の文法チェックをする方法をメモしておきます。
htmllint は Perlモジュール Encode のラッパー、Jcode に依存しています。あらかじめ libjcode-pm-perlパッケージをインストールしておきましょう。
$ sudo apt-get install libjcode-pm-perl
Another HTML-lint : Download から、
を入手します。
適当な作業用ディレクトリで htmllint.core.zip を展開します。そのまま設置しては日本語環境が UTF-8 のターミナルエミュレータで実行した場合に表示が文字化けしてしまいますので、まずは文字化けを回避する為に、EUC-JP で書かれているファイルを根刮ぎ UTF-8 に変換します。
$ unzip htmllint.core.zip
展開して出来たファイルのうち、htmllint.pm htmllintenv htmllintrc の日本語文字コードを UTF-8 へ変換します。
$ perl -MEncode -i -ple '$_ = encode("utf8", decode("euc-jp", $_))' htmllint.pm htmllintenv htmllintrc
次に htmllint の 先頭行を
に書き換えてから、#!/usr/bin/perl
push @INC => [&fileparse($0)]->[1];
を
push @INC => [&fileparse($0)]->[1], '/usr/local/lib/htmllint/';
htmllintenv の
$RULEDIR = './';
を
$RULEDIR = '/usr/local/lib/htmllint/';
に変更して、pmファイルや envファイル、規則ファイル群を置く予定のディレクトリにパスを通してあげます。
$ sudo mkdir -p /usr/local/lib/htmllint/ $ sudo cp *.pm /usr/local/lib/htmllint/ $ sudo cp htmllintenv /usr/local/lib/htmllint/htmllint.env $ chmod 755 htmllint $ sudo cp htmllint /usr/local/bin/ $ cp htmllintrc ~/.htmllintrc
適切なファイルを適切な場所に配置してとりあえず core は完了です。
core とは別の場所の適当な作業用ディレクトリで htmllint.rul.zip を展開します。
$ unzip htmllint.rul.zip
こちらに展開して出来たファイルの中にも EUC-JP で書かれたファイルがあるので UTF-8 に変換します。
$ perl -MEncode -i -ple '$_ = encode("utf8", decode("euc-jp", $_))' common.rul
そしてファイル全部を /usr/local/lib/htmllint/ に置きます。
$ sudo cp * /usr/local/lib/htmllint/
一番簡単な使い方は、引き数に文法をチェックしたい (X)HTMLファイルだけを与える方法です。DOCTYPE宣言も無いような酷い (X)HTMLファイルで無い限り、大抵の場合はこれで間に合います。カレントディレクトリに置いてあるこのページの XHTMLファイルを文法チェックしてみると、
$ htmllint htmllint.html
htmllint.html を XHTML1.1 としてチェックします。 エラーは見つかりませんでした。\(^o^)/ このHTMLは 100点です。タグが 23種類 105組使われています。文字コードは UTF-8 のようです。
とチェックした結果が表示されます。
もっと詳しいオプションが知りたければ、Another HTML-lint : How to use htmllint を読んでみて下さい。
動作確認環境 : Perl 5.14.2 on Debian GNU/Linux 7.0 wheezy