Another HTML-lint : Download

# Another HTML-lint

目次 | はじめに | ゲートウェイサーヴィス
| いくつかの覚え書き | 簡易ゲートウェイ
| htmllint.cgiの使い方 | 結果の解説
| htmllintの使い方 | タグ一覧
| 規則ファイルの生成 | 色見本
| ダウンロード
| メーリングリスト
| 参考までに | 作者にビールをおごる
| よくある質問と答 | プライマリサイト

## ダウンロード

> ソース等はここからダウンロードできますが、本ゲートウェイサーヴィスも含めて、これらの実行等に伴ういかなる損害に対しても作者は責任を負いません。

パッケージによって、Perlスクリプトの文字コード系が異なります。*.zip が EUC/LF、*.lzh が SJIS/CRLF です。アクセス権限情報は含まれていません(作業環境がMacとWindowsなもんで)。*.sit.bin はMacOS用で、Perlスクリプトの文字コードを SJIS/CR にして、TYPE/CREATOR を付加したりしたものです。HTMLはすべてJISコードのままです。
なお、フルパッケージはVectorからもダウンロードできますが、必ずしもプライマリサイトと同期しているわけではありません。

htmllint.zip (Vector) | htmllint.lzh (Vector) | htmllint.sit.bin (Vector) | 以下のすべてが含まれるフルパッケージです。
htmllint.core.zip | htmllint.core.lzh | htmllint.core.sit.bin | Perlスクリプト(htmllint*、*.cgi、*.pm、*.pl)などが含まれます。
htmllint.html.zip | htmllint.html.lzh | htmllint.html.sit.bin | HTMLファイル(*.html、*.css、*.gif)などが含まれます。
htmllint.rul.zip | htmllint.rul.lzh | htmllint.rul.sit.bin | 規則ファイル(*.rul)が含まれます。動作に必要です。
htmllint.dtd.zip | htmllint.dtd.lzh | htmllint.dtd.sit.bin | DTD(*.dtd、*.ent)などが含まれます。動作には必要ありません。オリジナルに手を加えてあるものもありますし、XHTMLは含まれていません。

Perl5.004以上が必要です。JPerlでは動作しません。ローカルマシンへのインストールについて参考となるサイトを紹介してあります。
CPAN からは、各プラットフォームのPerl処理系を含むすべてのPerl関係のリソースをダウンロードできます。

- CPAN (Comprehensive Perl Archives Network)
- ActivePerl (Perl for Win32)
- MacPerl

標準でないPerlライブラリ等は、必要なら例えば以下からダウンロードしてください。MacPerlで使う場合は改行コードをCRに変換する必要があるかも知れません。CRに変換するMacPerl用のドロップレットを作ってみました。

- Jcode.pm
  必要です。必ず入手してください。
  XS化される前の古い版から最近のXS化された版への更新で、NoXS版を使用する場合、Jcodeフォルダ下に不要なUnicode.pmが残る場合があります。そのときは削除してください。NoXS版のときにUnicode.pmがあるとうまく動作しません。
- jcode.pl
  現在 Another HTML-lint では、jcode.pl は使用していません。代わりにJcode.pmを使用しています。しかし、都合でJcode.pmがインストールされていない場合でも、jcode.plがあれば動作します。ただし、そのときはUTF-8は扱えません。
- CGI.pm
  CGIとして動作させるときに必要です。 標準ライブラリですが、ヴァージョンが古い場合があります。2.5xでない場合は最新版をダウンロードしてインストールしてください。古いCGI.pmは、`sub parse_params` 内で
    `my(@pairs) = split('&',$tosplit);`
  となっていますが、新しいもの(2.46あたりから)だと
    `my(@pairs) = split(/[&;]/,$tosplit);`
  となっています。
- cgi-lib.pl
  現在 Another HTML-lint では、cgi-lib.pl は使用していません。代わりにCGI.pmを使用しています。
  一部のユーザエージェントは、フォームの送出に際して、Content-Typeに
    `application/x-www-form-urlencoded; charset=iso-2022-jp`
  のようにCHARSETを付けるものがあるようです。cgi-lib.plは、これに対応していません(だいたいurlencodedとiso-2022-jpは矛盾しているような気もしますが)。cgi-lib.pl 2.18ならば、82行目の判定を
    `$type =~ m#^application/x-www-form-urlencoded(;|$)#`
  のように修正すれば一応動作させることができます。
- LWP (libwww-perl)
  CGIとして動作させるときに必要です。 最近ではPerlのパッケージに標準で含まれています。URLからHTMLを取得するためには、httpreq.pl を使用することもできますが、これは、Perl for Win32 でLWPが使えなかった頃に、わたしがお手軽に書いた習作スクリプトで、secure server では動作しないことがわかっています。LWPを使うことをお勧めします。インストールしておくと何かと便利です。持っていて損はありません。
- Email::Valid
  現在 Another HTML-lint では、Email::Valid は使用していません。
  mailto: URLの構文チェックには、Jeffrey Friedl 氏の正規表現を使用しています。この正規表現は、Email::Valid に含まれています。このモジュールを直接利用しない理由は、Another HTML-lint としては、Net::DNSなどの必要でないものまで呼び出して、意図しない動作をするようだからです。
  もし、このモジュールをインストールするときは、MailTools に含まれる Mail::Address も必要となります。WindowsやMacでmakeがうまく動かない場合は、libの下にEmailというフォルダを作ってその中にValid.pmを入れます。Mailはフォルダごとlibにコピーします。
- URL.pl, url_get
  現在 Another HTML-lint では、URL.pl、url_get は使用していません。
- wget
  現在 Another HTML-lint では、wget は使用していません。
- nkf / nkf Win32
  現在 Another HTML-lint では、nkf は使用していません。

htmllint.zip/htmllint.lzh/htmllint.sit.bin では、全ファイルがフラットな構造に展開されます。このままの状態でも利用できますが、ファイルの種類別にディレクトリを分けることもできます。ファイルは次のように分類できます。

- CGIスクリプト -- *.cgi、*.pm、*.pl、htmllint、htmllint.env などが含まれます。
- HTMLファイル -- *.html と *.css などが含まれます。
- 規則ファイル -- *.rul が含まれます。
- その他のファイル -- *.dtd や *.ent などの直接は利用されないファイルが含まれます。

htmllint の多くの動作環境は、htmllint.env に記述されています。htmllint.env はパッケージには含まれていないので、最初はサンプルの htmllintenv を htmllint.env に改名してください。そして htmllint.env 中の設定項目に目を通し、ディレクトリの指定など適宜書き換えてください。他のCGIの動作環境もこのファイルですべて調整します。
htmllint.env は他のCGIスクリプトと同じ場所に置いてください。CGIのアクセス権は、htmllint、htmllint.cgi、tagslist.cgi を 755 などにしておけば大丈夫です。htmllint.env 自身は、CGIからは読めるが外部から直接参照できないようにした方が安全です。例えば、Apacheでの .htaccess に AddType application/x-httpd-cgi .env を追加し、アクセス権を 744 にしておく、などです。ログファイルを作る場合は、それを置くディレクトリにも適切なアクセス権を与えます。
HTML中にも何個所か修正しなければならない場所があります。

- *.html の htmllint.cgi と tagslist.cgi のパス。

  > `s#\./(htmllint\.cgi|tagslist\.cgi)#anywhere/$1#g`

- use-htmllintcgi.html のサンプル中のURL 3個所。

  > `s#http://openlab\.ring\.gr\.jp/k16/htmllint/(?!i)#http://anydomain/anywhere/#g`

- 一部の *.html のイメージファイル top.gif のパス。

  > `s#\./(top\.gif)#anywhere/$1#g`

Lynx を利用する場合は、lynx.cfg でCHARACTER_SETを Japanese(EUC) に設定してください。このとき、htmllint.cgiはEUC版である必要があります。Lynx は 2.7.1 でしか動作確認していないので、他のヴァージョンではオプション等の調整が必要かも知れません。Lynx の起動時オプションは htmllint.env の中に記述されています。

ダウンロードした htmllint.zip/htmllint.lzh/htmllint.sit.bin には、以下のようなファイルが含まれています。

  htmllint
    コマンドラインから起動し、htmllint.pmを呼び出して構文チェックするためのPerlスクリプトです。MacPerl版ではドロップレットですが、MPWで利用するときはプレーンテキストにする必要があります。
  htmllint.pm
    チェッカ本体のPerlスクリプトパッケージモジュールです。
  common.rul
    共通規則ファイルです。他の規則ファイルの不備を補うもので、htmllint.pm、htmllint.cgi、tagslist.cgiが読み込みます。
  charsets.rul
    IANAのCHARACTER SETSを元にして作った連想配列で、htmllint.pmが読み込みます。
  colortable.rul
    色名と色コードの対応表です。htmllint.pmが読み込みます。
  *.rul
    各種HTMLに対応した規則ファイルです。htmllint、tagslist.cgiが読み込みます。
  *.dtd/ent
    それぞれの規則ファイルの元になったDTDです。RFCなどからの抜粋ですが、MozillaやMSIEのものはリファレンスからの捏造品です。htmllintは使用しません。
  tagslist.cgi、tagslist.html
    規則ファイルからタグ一覧HTMLを生成するPerlスクリプトと、それへの目次の含まれるHTMLです。
  parsedtd.pl
    DTDから、htmllintが読み込む規則ファイルの原形を生成するPerlスクリプトです。htmllintは使用しません。
  htmllint.cgi
    htmllint.htmlとhtmllint.pmの間を仲介するためのゲートウェイ用のPerlスクリプトです。
  htmllintenv
    htmllint.pm、htmllint.cgi、tagslist.cgiが使用する環境ファイルのサンプルです。このファイルからhtmllint.envを作ってください。htmllint.envをhtmllint.pm、htmllint.cgi、tagslist.cgiが読み込みます。
  htmllintrc
    htmllintのための設定ファイルのサンプルです。使用しません。
  htmllint.history.txt
    htmllint.cgiとhtmllint.pmの更新履歴です。
  htmllint.html
    htmllint.cgiをCGIとして呼び出すHTMLです。
  htmllintl.html
    htmllint.htmlの簡易版です。
  htmllinte.html
    MSIE4以上用のDynamicHTMLを利用したものです。
  explain.html、explain-wai.html、explain-score.html、explain-omake.html
    チェックの結果の解説などが述べられたHTMLです。
  colors.html、colorsbk.html
    名前付き色見本です。
  index.html、introduction.html、notice.html、use-htmllintcgi.html、use-htmllint.html、download.html、rulefile.html、reference.html、faq.html
    この能書きの書かれたHTMLファイル群です。
  htmllint.css
    スタイルシートがちょっとだけ定義されているファイルです。background-image などをお好みに調整してください。
  *.gif
    「よくできました」などのイメージファイルです。
  httpreq.pl
    簡単な HTTP アクセスライブラリです。htmllint.env の設定によっては htmllint.cgi が使用します。htmllint.cgi と同じディレクトリに置くか、Perlのライブラリディレクトリに入れてください。
  RFC2396.pm
    RFCに記述されているURIの構文則を正規表現で表わしたPerlスクリプトパッケージモジュールです。htmllint.pm が使用します。htmllint.pm と同じディレクトリに置くか、Perlのライブラリディレクトリに入れてください。

Another HTML-lint をファイアウォール内へインストールする場合は、変数の設定が必要かも知れません。htmllint.env で、$HTTP_PROXY と @HTTP_NOPROXY の設定を適切に行なってください。

UNIXの場合、環境変数HOMEで示されるディレクトリに、.htmllintrc というファイルがあると、チェックの初期状態として読み込みます。htmllintrc というサンプルを好みに編集し、ファイル名を変更して使ってください。

Another HTML-lint を自分のサーバやローカル環境で動作させるための手引きが、以下のようなサイトにあります。(順不同、敬称略、無断紹介)

- Another HTML-lint を win32 上で使う (橋本純一)
- HTML文法チェック等(HTMLLintをWindows95で動かす) (sesoko'p)
- Another HTML-lintを楽に使えるようにする (桑島雄一郎)
- Another HTML-lintを使おう (えいさあ)
- Another HTML-lintをWindows 95で動かす (高橋誠)
- Another HTML-lint on Windows95/98/NT (有限会社プレジャースカイ)
- ローカルでAnother HTML-lint gatewayを使うための各種設定 (SATOSHI Fujita)
- HTML-lint をローカルで使う (開明堂)
- HTML lint を実装する (ユーザーグループ)
- Another HTML-lint setup (Ｚ)
- Another HTML-lintをWindows(DOS窓)上で使う方法 (川又文男)
- Another HTML-lintをローカルで使用するために (荻内康雄)
- 「Another HTML-lint gateway」をローカルで動かす (kazuishi)
- HTMLLINTを導入しよう (たかくん)
- Another HTML-lintを気軽に使う (平山宗平)
- Software Installation on BOW (フジタユウイチ)
- htmllintのインストールと設定 (菅原謙一)
- HTMLの文法チェック (中田拓馬)
- ラクダ競争htmllint (うらかた桐一葉)
- Another HTML-lint と MSIE5 の活用 (緋)
- WZ EDITOR4.0にHTML文法チェッカーを組み込む (ミュール)
- HTML文法チェッカ HTML-lint を ローカルで より良く使う (for IE) (A-1DRIVE)

- Another HTML-lint インストーラ (UNIX用)
- Another HTML-lint on MacOS

このサイトの運営は作者が行なっているわけではありませんのでご注意ください。作者が管理しているのはプライマリサイトだけです。