Sorry, Japanese only.
Last modified: Sun Aug 26 13:22:39 2012

Another HTML-lintを使おう


2012/8/26 Another HTML-lintのプライマリサイト(http://openlab.ring.gr.jp/k16/htmllint/index.html)が停止しています。

このページの情報は今となってはちと古いです(^^;.Another HTML-lintはjcode.plやcgi-lib.plではなくJcode.pmCGI.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で動作させるときにローカルファイルを直接チェックする方法が紹介されています。

もくじ

コマンドラインでAnother HTML-lintを使う

DOS窓などコマンドラインでAnother HTML-lintを使えるようにします。(CGIで動作させる場合でもこの作業は必要です。)

コマンドラインで動作させるときにメインとなるスクリプトはhtmllintとhtmllint.pmです。Another HTML-lintを動作させるということは、これらのPerlスクリプトが動作する環境を作るということになります。

もくじへ

用意するもの

Another HTML-lint
Another HTML-lintのダウンロードページで手に入ります。Windowsで使うので、拡張子が.lzhのSJIS/CRLF版をダウンロードします。ここでは( 455k ) Apr 09, 1999 21:17のものを使いました。
Perl
Another HTML-lintはPerlスクリプトで構成されているので、動作にはPerl処理系が必要です。Perl for Win32がActiveStateのPerl for Win32ダウンロードページで手に入ります。ここではPw32i316.exe(version 5.003_07 Perl for Win32 Build 316 - Built 23:02:06 Jun 19 1998)を使いました。ただし、特にこのPerlを使う理由の無い人はActivePerlを使うほうがいいでしょう。この文章を書いている時点ではBuild 515まで出ています。
jcode.pl
Perlの日本語文字コード変換ライブラリです。いろいろなところにあると思いますが、例えばIIJのFTPサイトからjcode.pl-2.10を落としてきてjcode.plにリネームします。(ここが1次配布先ってことでいいのかな?)
もくじへ

インストール

  1. まず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.
    
  2. Perlがjcode.plを使えるようにします。Perlをインストールしたフォルダの下にlibフォルダがあるので、そこにjcode.plを入れます。ActivePerl Build 515の場合はsite\libに入れればいいでしょう。

  3. Another HTML-lintをインストールします。htmllint.lzhを任意のフォルダに展開します。ここでは、C:\app\htmllintに展開しました。別の場所にインストールした人は、以下の説明を適宜読み替えてください。

もくじへ

Another HTML-lintの設定

  1. 起動オプションの初期値を決めるhtmllintrcを好みに合わせて編集します(必須ではありません)。厳しくチェックしたい人はdisable(チェックしない)をenable(チェックする)に書きかえるといいでしょう。起動オプションを特に指定しなかったり、CGIで動作させるときに「軽いゲイトウェイ」を使うと、ここで設定した条件でチェックが行われます。

  2. 動作環境を設定する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)?)$';
もくじへ

CGIでAnother HTML-lintを使う

Another HTML-lint gatewayでは、結果の解説に飛べたり、チェックされた部分が赤で表示されたりと便利です。以下ではこれと同じものをローカルのWebサーバで実現する方法を説明します。

CGIで動作させるときにメインとなるスクリプトはhtmllint.cgiです。このスクリプトは、指定したHTML文書をhtmllint.pmでチェックしてその結果をWebページとして出力する働きをします。htmllint.pmを動作させる方法については前節コマンドラインでAnother HTML-lintを使うを参照してください。以下ではhtmllint.cgiを動作させる方法について説明します。

もくじへ

用意するもの

Webサーバ
CGIが使えるものなら何でもいいです。ここではAN HTTPDの1.14を使いました。
cgi-lib.pl
htmllint.cgiがCGIの引数を処理するのに使います。The cgi-lib.pl Home Pageで手に入ります。ここではVersion 2.18を使いました。cgi-lib.pl.txtという形で置いてあるので、cgi-lib.plにリネームします。
もくじへ

インストール

  1. AN HTTPDをインストールします。インストール作業自体は拡張子が.exeのファイルと.dllのファイルを任意のフォルダに入れれば完了です。次に、[オプション(O)] - [一般(G)...]で出るダイアログの[一般]タブと[エイリアス]タブで設定を行います。(エイリアスを使う方法は高橋 誠さんのAnother HTML-lintをWindows 95/98で動かす(現2000で動かす)を参考にさせていただきました。)

    [一般]タブの[ドキュメントルート:]
    URLで/を指定したときに参照されるフォルダを設定します。ここではC:\wwwrootにしました。
    [一般]タブの[.pl,.cgiの実行プログラム:]
    htmllint.cgiを実行するプログラムを指定します。perlと指定します。
    [エイリアス]タブ
    Another HTML-lintをC:\wwwroot以下以外にインストールした場合は、AN HTTPD経由でそのフォルダにアクセスできるようにするためにエイリアスを設定する必要があります。一般パスの[追加...]ボタンを押し、[仮想パス:]に/htmllint、[ローカルパス:]にC:\app\htmllintと指定します。これでhttp://localhost/htmllintはC:\app\htmllintを指すようになります。
  2. Perlがcgi-lib.plを使えるようにします。Perlをインストールしたフォルダの下にlibフォルダがあるので、そこにcgi-lib.plを入れます。ActivePerl Build 515の場合はsite\libに入れればいいでしょう。

もくじへ

Another HTML-lintの設定

htmllint.envを編集します。変更する個所を以下に示します。

  1. 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 = '';          # タグ一覧キャッシュ用の場所 (空ならキャッシュしない)
                             # 設定するときはアクセス権を適当に与えておくこと
    
  2. 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がチェックされます。

もくじへ

サンプル

以上の説明で使用したhtmllintrchtmllint.envです。

もくじへ