Sorry, Japanese only.
Last modified: Sun Aug 26 13:22:39 2012
2012/8/26 Another HTML-lintのプライマリサイト(http://openlab.ring.gr.jp/k16/htmllint/index.html)が停止しています。
このページの情報は今となってはちと古いです(^^;.Another HTML-lintはjcode.plやcgi-lib.plではなくJcode.pmやCGI.pmを使うようになっていますし,PerlもわざわざActivePerlではなくPerl for Win32の方を使う理由も無くなってきました.使い方やAnother HTML-lintの設定の部分は今のものにも通用します.
Windows 95 / Windows 98(Windows NTは未確認)上でAnother HTML-lintを使う方法の一例を紹介します。まずコマンドラインから使えるようにし、次にローカルWebサーバ上でCGIを使ってWebブラウザでチェックできるようにします。
高橋 誠さんのAnother HTML-lintをWindows 95/98で動かす(現2000で動かす)にも設定方法があります。「Perl for Win32」よりもバージョンが新しい「ActivePerl」を使う方法や、CGIで動作させるときにローカルファイルを直接チェックする方法が紹介されています。
DOS窓などコマンドラインでAnother HTML-lintを使えるようにします。(CGIで動作させる場合でもこの作業は必要です。)
コマンドラインで動作させるときにメインとなるスクリプトはhtmllintとhtmllint.pmです。Another HTML-lintを動作させるということは、これらのPerlスクリプトが動作する環境を作るということになります。
まずPerlをインストールします。Pw32i316.exeを実行し、適当なインストールフォルダを指定して[Unzip]ボタンを押します。するとDOS窓が開いて質問が数回なされますが、全てそのままEnterを押せばOKです。その様子を以下に示します。
「(Enter)」はEnterキーを押すことを表します。
This install script assumes that you have unpacked Perl for Win32 into the final intended destination directory. Do you wish to proceed? [Y/n](Enter) perldir = C:\app\Perl Thu Aug 20 18:16:28 JST 1998 Installing Perl for Win32 into C:\app\Perl Added key to HKEY_LOCAL_MACHINE\SOFTWARE\ActiveWare\Perl5 .. Adding C:\app\Perl\bin to script path information Adding C:\app\Perl\lib to library include path information Modify search path? [Y/n](Enter) Attempting to change path in autoexec.bat bootdrive is C: Perl 95 installation finished. NOTE: The updated path information will not take effect until you reboot your machine. enjoy ;-) 続けるにはどれかキーを押してください . . .
インストール後、パスを設定するためにPCを再起動します。
正常にインストール出来たかどうかの確認のために、再起動後DOS窓でperl -vを実行します。うまく行っていれば以下の表示が出ます。
C:\WINDOWS>perl -v This is perl, version 5.003_07 Copyright 1987-1996, Larry Wall + suidperl security patch Win32 port Copyright (c) 1995-1996 Microsoft Corporation. All rights reserved. Developed by ActiveWare Internet Corp., http://www.ActiveWare.com Perl for Win32 Build 316 - Built 23:02:06 Jun 19 1998 Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5.0 source kit.
Perlがjcode.plを使えるようにします。Perlをインストールしたフォルダの下にlibフォルダがあるので、そこにjcode.plを入れます。ActivePerl Build 515の場合はsite\libに入れればいいでしょう。
Another HTML-lintをインストールします。htmllint.lzhを任意のフォルダに展開します。ここでは、C:\app\htmllintに展開しました。別の場所にインストールした人は、以下の説明を適宜読み替えてください。
起動オプションの初期値を決めるhtmllintrcを好みに合わせて編集します(必須ではありません)。厳しくチェックしたい人はdisable(チェックしない)をenable(チェックする)に書きかえるといいでしょう。起動オプションを特に指定しなかったり、CGIで動作させるときに「軽いゲイトウェイ」を使うと、ここで設定した条件でチェックが行われます。
動作環境を設定するhtmllint.envを作成します。雛型がhtmllintenvという名前で付属しているので、まずこれをhtmllint.envとして保存します。
オプションの初期値ファイルを指定する$HTMLLINTRCを設定します。先ほどのhtmllintrcを指定します。初期値の'.htmllintrc'(先頭にピリオドが入っている)は'htmllintrc'と同じ指定ではないので注意してください。
# デフォルト規則ファイル (Windows/Macでは . から始まるファイルは無効) $HTMLLINTRC = 'htmllintrc';
正常にインストールが出来たかどうかの確認のために、DOS窓から、Another HTML-lintをインストールしたフォルダでperl htmllint -vを実行します。うまく行っていれば以下の表示が出ます。
NECのPC-98xxシリーズ用のWindows 95の場合、kernel32.dllのバージョンが古いと、32bitコンソールアプリケーションがうまく動かないことがあります(Perlに限らず)。その場合はバージョンアップしてください。
C:\app\htmllint>perl htmllint -v Another HTML-lint ver1.43 Copyright (c) 1997 by ISHINO Keiichiro <k16@chiba.email.ne.jp>. All rights reserved.
perl htmllint index.htmlとすればindex.htmlがチェックされます。インストールしたフォルダ以外で実行するときは、perl C:\app\htmllint\htmllint index.htmlのようにhtmllintを絶対パスで指定します。
以下のように記述したファイルを拡張子.batで保存して、そのファイルにDrag&Dropすることでもチェックできます。
perl C:\app\htmllint\htmllint %1 %2 %3 %4 %5 %6 %7 %8 %9
関連付けを利用して、右クリックでチェックを行うことができます。適当な名前でアクションを追加して、「アクションを実行するアプリケーション」を以下のようにします。HTML文書に関連付けすれば、HTML文書の右クリックでそのファイルがチェックできます。ファイル フォルダに関連付けすると、フォルダの右クリックでそのフォルダ以下にあるHTML文書全てを一度にチェックすることができます。
COMMAND.COM /K perl C:\app\htmllint\htmllint "%1"
Mule for Win32で.emacsに以下のような記述をすればhtml-helper-modeにおいてC-c C-cでチェックを行うことができます。その後、C-x `か、*compilation*バッファに移動してC-c C-cで、警告された行にジャンプすることが出来ます。私は主にこの方法でAnother HTML-lintを利用しています。
(add-hook 'html-helper-mode-hook (function (lambda () (define-key html-helper-mode-map "\C-c\C-c" '(lambda () (interactive) (compile (concat "perl c:/app/htmllint/htmllint " (file-name-nondirectory (buffer-file-name))))))
また、デフォルトの設定では、ディレクトリ一括チェックを行ったときに、Muleのバックアップファイルである"xxxx.html~"のような最後に'~'の付いた名前のファイルが引っかかってしまいますが、htmllint.envを以下のように変更すればこれを防げます。
# HTMLファイル拡張子 (正規表現) $HTMLEXT = '(html?|(s|p)ht(ml)?)$';
Another HTML-lint gatewayでは、結果の解説に飛べたり、チェックされた部分が赤で表示されたりと便利です。以下ではこれと同じものをローカルのWebサーバで実現する方法を説明します。
CGIで動作させるときにメインとなるスクリプトはhtmllint.cgiです。このスクリプトは、指定したHTML文書をhtmllint.pmでチェックしてその結果をWebページとして出力する働きをします。htmllint.pmを動作させる方法については前節コマンドラインでAnother HTML-lintを使うを参照してください。以下ではhtmllint.cgiを動作させる方法について説明します。
AN HTTPDをインストールします。インストール作業自体は拡張子が.exeのファイルと.dllのファイルを任意のフォルダに入れれば完了です。次に、[オプション(O)] - [一般(G)...]で出るダイアログの[一般]タブと[エイリアス]タブで設定を行います。(エイリアスを使う方法は高橋 誠さんのAnother HTML-lintをWindows 95/98で動かす(現2000で動かす)を参考にさせていただきました。)
Perlがcgi-lib.plを使えるようにします。Perlをインストールしたフォルダの下にlibフォルダがあるので、そこにcgi-lib.plを入れます。ActivePerl Build 515の場合はsite\libに入れればいいでしょう。
htmllint.envを編集します。変更する個所を以下に示します。
htmllint.cgiが使う各種ファイルの場所を指定します。末尾に/を付けるのを忘れないように注意してください。ここではC:\app\htmllintにインストールしたので$RULEDIRと$IMGDIRは以下のようになります。$LOGSDIRと$TMPDIRは任意の場所を指定してください。$TAGSLISTはタグ一覧を出力するtagslist.cgiが使用するので、チェックを行うだけなら特に関係はありません。
# CGI 用ディレクトリ (絶対パスかCGI相対パスで指定、なるべく絶対パスにしてください) $RULEDIR = 'c:/app/htmllint/'; # 規則ファイルの場所 $LOGSDIR = 'c:/app/htmllint/logs/'; # ログファイルの場所 $TMPDIR = 'c:/tmp/'; # テンポラリファイルの場所 $IMGDIR = 'c:/app/htmllint/'; # イメージファイルの場所 $TAGSLIST = ''; # タグ一覧キャッシュ用の場所 (空ならキャッシュしない) # 設定するときはアクセス権を適当に与えておくこと
Pw32i316.exeのPerlではLWPは動作しないので、HTML文書を取得するのには付属しているhttpreq.plを使います。$URLGETを未定義にします。ActivePerlの場合はLWPが使えるので変更の必要はありません。
# URL から HTML の取得方法 # 未定義 : httpreq.pl を使う # LWP : libwww-perl を使う # その他 : 外部コマンドとして実行 (Macでは不可) #$URLGET = 'LWP'; #$URLGET = '/usr/local/bin/url_get'; #$URLGET = '/usr/local/bin/wget -T 10 -O -';
チェックしたいHTML文書を、AN HTTPDを通して見られるようにC:\wwwroot以下に置きます。例えば、C:\wwwroot\asr\index.htmlはhttp://localhost/asr/index.htmlで参照できます。
AN HTTPDを立ち上げ、ローカルサーバ内のAnother HTML-lint gatewayのページ(http://localhost/htmllint/htmllint.html)を表示します。URLの欄にhttp://localhost/asr/index.htmlと記入してチェックを行えば、C:\wwwroot\asr\index.htmlがチェックされます。
以上の説明で使用したhtmllintrcとhtmllint.envです。