綾小路龍之介の素人思考

[Another HTML-lint] Another HTML-lintのインストール

htmlの構文チェックなどを行う目的でanother html lintのインストールを行った。

配布サイトからダウンロード。EUC/LF版とSJIS/CRLF版があるが、今回はEUC/LF版をダウンロード

$ wget 'http://openlab.ring.gr.jp/k16/htmllint/archives/htmllint.zip'
--2011-10-28 23:22:39--  http://openlab.ring.gr.jp/k16/htmllint/archives/htmllint.zip
Resolving openlab.ring.gr.jp... 133.243.237.36
Connecting to openlab.ring.gr.jp|133.243.237.36|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 773491 (755K) [application/zip]
Saving to: “htmllint.zip”

100%[===========================================>] 773,491     --.-K/s   in 0.1s

2011-10-28 23:22:44 (4.96 MB/s) - “htmllint.zip” saved [773491/773491]

unzipで解凍。

$ unzip -d htmllint htmllint.zip
Archive:  htmllint.zip
  inflating: htmllint/htmllint.history.txt
  inflating: htmllint/htmllint
  inflating: htmllint/httpreq.pl
  inflating: htmllint/htmllint.pm
  inflating: htmllint/tagslist.cgi
  inflating: htmllint/RFC2396.pm
  inflating: htmllint/htmllintrc
  inflating: htmllint/htmllintenv
  inflating: htmllint/htmllint.cgi
  inflating: htmllint/readme.txt
  inflating: htmllint/mailinglist.html
  inflating: htmllint/use-htmllintcgi.html
  inflating: htmllint/top.gif
  inflating: htmllint/rulefile.html
  inflating: htmllint/htmllinte.html
  inflating: htmllint/close.gif
  inflating: htmllint/colors.html
  inflating: htmllint/explain-omake.html
  inflating: htmllint/htmllint.html
  inflating: htmllint/faq.html
  inflating: htmllint/open.gif
  inflating: htmllint/explain.html
  inflating: htmllint/htmllint.css
  inflating: htmllint/notice.html
  inflating: htmllint/index.html
  inflating: htmllint/introduction.html
  inflating: htmllint/fight.gif
  inflating: htmllint/normal.gif
  inflating: htmllint/colorsbk.html
  inflating: htmllint/sitemap.html
  inflating: htmllint/use-htmllint.html
  inflating: htmllint/htmllintl.html
  inflating: htmllint/tagslist.html
  inflating: htmllint/explain-score.html
  inflating: htmllint/good.gif
  inflating: htmllint/download.html
  inflating: htmllint/reference.html
  inflating: htmllint/explain-wai.html
  inflating: htmllint/verygood.gif
  inflating: htmllint/ie40.rul
  inflating: htmllint/html40-strict.rul
  inflating: htmllint/imode20.rul
  inflating: htmllint/jskystation.rul
  inflating: htmllint/mozilla20.rul
  inflating: htmllint/html40-frameset.rul
  inflating: htmllint/html20.rul
  inflating: htmllint/html401-frameset.rul
  inflating: htmllint/html40-transitional.rul
  inflating: htmllint/ie50.rul
  inflating: htmllint/15445-preparation.rul
  inflating: htmllint/compact-html.rul
  inflating: htmllint/imode-xhtml.rul
  inflating: htmllint/imode-xhtml11.rul
  inflating: htmllint/xhtml-rdfa-1.rul
  inflating: htmllint/doti10.rul
  inflating: htmllint/imode50.rul
  inflating: htmllint/xhtml1-strict.rul
  inflating: htmllint/html401-strict.rul
  inflating: htmllint/xhtml-basic.rul
  inflating: htmllint/html40-mobile.rul
  inflating: htmllint/xhtml1-transitional.rul
  inflating: htmllint/webexp.rul
  inflating: htmllint/jpo.rul
  inflating: htmllint/mozilla40.rul
  inflating: htmllint/charsets.rul
  inflating: htmllint/html401-transitional.rul
  inflating: htmllint/xhtml-mp.rul
  inflating: htmllint/wilbur.rul
  inflating: htmllint/imode40.rul
  inflating: htmllint/ie55.rul
  inflating: htmllint/colortable.rul
  inflating: htmllint/html10.rul
  inflating: htmllint/xhtml1-frameset.rul
  inflating: htmllint/imode30.rul
  inflating: htmllint/15445.rul
  inflating: htmllint/htmlplus.rul
  inflating: htmllint/htmlplus-old.rul
  inflating: htmllint/jskyweb.rul
  inflating: htmllint/i18n.rul
  inflating: htmllint/xhtml11.rul
  inflating: htmllint/imode.rul
  inflating: htmllint/mozilla30.rul
  inflating: htmllint/common.rul
  inflating: htmllint/arena.rul
  inflating: htmllint/ie30.rul
  inflating: htmllint/ie30b.rul
  inflating: htmllint/imode-xhtml11.dtd
  inflating: htmllint/html40-mobile.dtd
  inflating: htmllint/html40-strict.dtd
  inflating: htmllint/htmlplus-old.dtd
  inflating: htmllint/jskyweb.dtd
  inflating: htmllint/imode50.dtd
  inflating: htmllint/html401-loose.dtd
  inflating: htmllint/imode30.dtd
  inflating: htmllint/html20.dtd
  inflating: htmllint/isonum.ent
  inflating: htmllint/imode20.dtd
  inflating: htmllint/jskystation.dtd
  inflating: htmllint/imode40.dtd
  inflating: htmllint/ie30b.dtd
  inflating: htmllint/isolat1.ent
  inflating: htmllint/ISOlat1HTML.ent
  inflating: htmllint/html40-frameset.dtd
  inflating: htmllint/HTMLsymbol.ent
  inflating: htmllint/HTMLspecial.ent
  inflating: htmllint/ie55.dtd
  inflating: htmllint/compact-html.dtd
  inflating: htmllint/parsedtd.pl
  inflating: htmllint/mozilla30.dtd
  inflating: htmllint/imode-xhtml.dtd
  inflating: htmllint/ie40.dtd
  inflating: htmllint/html401-strict.dtd
  inflating: htmllint/arena.dtd
  inflating: htmllint/html40-loose.dtd
  inflating: htmllint/html401-frameset.dtd
  inflating: htmllint/ie50.dtd
  inflating: htmllint/jpo.dtd
  inflating: htmllint/mozilla.dtd
  inflating: htmllint/15445.dtd
  inflating: htmllint/webexp.dtd
  inflating: htmllint/htmlplus.dtd
  inflating: htmllint/doti10.dtd
  inflating: htmllint/15445-preparation.dtd
  inflating: htmllint/html10.dtd
  inflating: htmllint/isolat2.ent
  inflating: htmllint/isodia.ent
  inflating: htmllint/mozilla40.dtd
  inflating: htmllint/HTMLlat1.ent
  inflating: htmllint/i18n.dtd
  inflating: htmllint/ie30.dtd
  inflating: htmllint/wilbur.dtd
  inflating: htmllint/imode.dtd

ここで起動してみる。jcode.plが見つからないといわれる。Another HTML-lint : Downloadによれば、jcode.plかJcode.pmのどちらかが必要であるとのこと。Jcode.pm 2.07のソースを読むと、はEncodeモジュールのラッパーになっているので、Jcode.pmをインストールすることにする。。

$ perl htmllint
Can't locate jcode.pl in @INC (@INC contains: ./ /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl . ./) at htmllint.pm line 123.
Compilation failed in require at htmllint line 15.

rootになって、Jcodeモジュールをシステムにインストールする。

$ su -
Password:
# cpan -i Jcode
CPAN: Storable loaded ok (v2.30)
Reading '/root/.cpan/Metadata'
  Database was generated on Wed, 26 Oct 2011 19:37:14 GMT
CPAN: LWP::UserAgent loaded ok (v6.03)
CPAN: Time::HiRes loaded ok (v1.9724)
Fetching with LWP:
http://www.perl.org/CPAN/authors/01mailrc.txt.gz
CPAN: YAML loaded ok (v0.77)
Reading '/root/.cpan/sources/authors/01mailrc.txt.gz'
CPAN: Compress::Zlib loaded ok (v2.037)
............................................................................DONE
Fetching with LWP:
http://www.perl.org/CPAN/modules/02packages.details.txt.gz
Reading '/root/.cpan/sources/modules/02packages.details.txt.gz'
  Database was generated on Fri, 28 Oct 2011 14:32:15 GMT
............................................................................DONE
Fetching with LWP:
http://www.perl.org/CPAN/modules/03modlist.data.gz
Reading '/root/.cpan/sources/modules/03modlist.data.gz'
............................................................................DONE
Writing /root/.cpan/Metadata
Running install for module 'Jcode'
Running make for D/DA/DANKOGAI/Jcode-2.07.tar.gz
Fetching with LWP:
http://www.perl.org/CPAN/authors/id/D/DA/DANKOGAI/Jcode-2.07.tar.gz
CPAN: Digest::SHA loaded ok (v5.62)
Checksum for /root/.cpan/sources/authors/id/D/DA/DANKOGAI/Jcode-2.07.tar.gz ok
CPAN: Archive::Tar loaded ok (v1.80)
Jcode-2.07/
Jcode-2.07/Changes
Jcode-2.07/Changes.ver0X
Jcode-2.07/Jcode/
Jcode-2.07/Jcode/_Classic.pm
Jcode-2.07/Jcode/Constants.pm
Jcode-2.07/Jcode/H2Z.pm
Jcode-2.07/Jcode/Nihongo.pod
Jcode-2.07/Jcode/Tr.pm
Jcode-2.07/Jcode/Unicode/
Jcode-2.07/Jcode/Unicode/Constants.pm
Jcode-2.07/Jcode/Unicode/NoXS.pm
Jcode-2.07/Jcode.pm
Jcode-2.07/Makefile.PL
Jcode-2.07/MANIFEST
Jcode-2.07/META.yml
Jcode-2.07/README
Jcode-2.07/t/
Jcode-2.07/t/_test_unicode.pl
Jcode-2.07/t/ambiguous.pl
Jcode-2.07/t/append.t
Jcode-2.07/t/benchmark.pl
Jcode-2.07/t/convert.t
Jcode-2.07/t/fun.pl
Jcode-2.07/t/getcode.t
Jcode-2.07/t/h2z.t
Jcode-2.07/t/hankaku.euc
Jcode-2.07/t/hiragana.euc
Jcode-2.07/t/jfold.t
Jcode-2.07/t/length.t
Jcode-2.07/t/mime.t
Jcode-2.07/t/new.t
Jcode-2.07/t/perl581.t
Jcode-2.07/t/regex.t
Jcode-2.07/t/stripped.euc
Jcode-2.07/t/table.euc
Jcode-2.07/t/table.jis
Jcode-2.07/t/table.sjis
Jcode-2.07/t/table.ucs2
Jcode-2.07/t/table.utf8
Jcode-2.07/t/tr.t
Jcode-2.07/t/unibench.pl
Jcode-2.07/t/x0212.euc
Jcode-2.07/t/x0212.jis
Jcode-2.07/t/x0212.ucs2
Jcode-2.07/t/x0212.utf8
Jcode-2.07/t/zenkaku.euc
Jcode-2.07/Unicode/
Jcode-2.07/Unicode/euc2uni.h
Jcode-2.07/Unicode/Makefile.PL
Jcode-2.07/Unicode/uni.c
Jcode-2.07/Unicode/uni2euc.h
Jcode-2.07/Unicode/Unicode.pm
Jcode-2.07/Unicode/Unicode.xs
CPAN: File::Temp loaded ok (v0.22)
CPAN: Parse::CPAN::Meta loaded ok (v1.4401)
CPAN: CPAN::Meta loaded ok (v2.112621)

  CPAN.pm: Building D/DA/DANKOGAI/Jcode-2.07.tar.gz

Checking if your kit is complete...
Looks good
Writing Makefile for Jcode
Writing MYMETA.yml and MYMETA.json
CPAN: Module::CoreList loaded ok (v2.57)
cp Jcode/Nihongo.pod blib/lib/Jcode/Nihongo.pod
cp Jcode.pm blib/lib/Jcode.pm
Manifying blib/man3/Jcode::Nihongo.3pm
Manifying blib/man3/Jcode.3pm
  DANKOGAI/Jcode-2.07.tar.gz
  /usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/append.t ... ok
t/convert.t .. ok
t/getcode.t .. ok
t/h2z.t ...... ok
t/jfold.t .... ok
t/length.t ... ok
t/mime.t ..... ok
t/new.t ...... ok
t/perl581.t .. ok
t/regex.t .... ok
t/tr.t ....... ok
All tests successful.
Files=11, Tests=244,  4 wallclock secs ( 0.08 usr  0.04 sys +  1.20 cusr  0.07 csys =  1.39 CPU)
Result: PASS
  DANKOGAI/Jcode-2.07.tar.gz
  /usr/bin/make test -- OK
Running make install
Prepending /root/.cpan/build/Jcode-2.07-c9tmPR/blib/arch /root/.cpan/build/Jcode-2.07-c9tmPR/blib/lib to PERL5LIB for 'install'
Installing /usr/local/share/perl/5.10.1/Jcode.pm
Installing /usr/local/share/perl/5.10.1/Jcode/Nihongo.pod
Installing /usr/local/man/man3/Jcode.3pm
Installing /usr/local/man/man3/Jcode::Nihongo.3pm
Appending installation info to /usr/lib/perl/5.10/perllocal.pod
  DANKOGAI/Jcode-2.07.tar.gz
  /usr/bin/make install  -- OK

出力がEUCになっているので、これをnkf -wでutf8にする。使い方とオプション等の説明が表示される。

$ perl htmllint | nkf -w
  Another HTML-lint ver3.58
    Copyright (c) 1997-2007 by ISHINO Keiichiro <k16@chiba.email.ne.jp>.
    All rights reserved.
  usage: perl5 htmllint options file.html...
  options: (*=default)
    -d <warn>     : 指定された警告を無効にする。(各警告はコンマで区切る)
    -e <warn>     : 指定された警告を有効にする。(各警告はコンマで区切る)
    -f <file>     : 設定ファイル(htmllintrc)を指定する。
    -pedantic     : すべての警告を有効にする。(このとき -d -e の指定無効)
    -nopedantic   : すべての警告を有効にすることはしない。(*)
    -religious    : 宗教的な警告を有効にする。(*)
    -noreligious  : 宗教的な警告を無効にする。
    -accessibility   : アクセス性向上に関する警告を有効にする。(*)
    -noaccessibility : アクセス性向上に関する警告を無効にする。
    -banner       : 処理開始と終了メッセージを表示する。(*)
    -nobanner     : 処理開始と終了メッセージを表示しない。
    -echoname     : チェックする HTML ファイル名を標準エラー出力する。
    -noechoname   : チェックする HTML ファイル名を標準エラー出力しない。(*)
    -score        : チェックした HTML の点数を表示する。(*)
    -scorenowhines: チェックした HTML の点数を警告ありのときのみ表示する。
    -scoreonly    : チェックした HTML の点数のみを表示する。
    -noscore      : チェックした HTML の点数を表示しない。
    -prune        : ディレクトリ指定のとき下位ディレクトリを探さない。
    -noprune      : ディレクトリ指定のとき下位ディレクトリを探す。(*)
    -warnings     : チェックによる警告を表示する。(*)
    -nowarnings   : チェックだけして何も警告を表示しない。
    -linklist     : HTML に含まれるリンク先を表示する。
    -nolinklist   : HTML に含まれるリンク先を表示しない。(*)
    -lc           : 警告中の要素名や属性名を小文字で表示する。XHTMLは無効。
    -uc           : 警告中の要素名や属性名を大文字で表示する。XHTMLは無効。(*)
    -listwarnings : サポートされているすべての警告を表示する。
    -w <style>    : 警告メッセージのスタイルを指定する。
                     <style> = lint     file(#): warning-message  (*)
                             = short    #: warning-message
                             = long     #: warning-id: warning-message
                             = terse    file:#:warning-id
                             = verbose  file: #: warning-id: warning-message
    -limit <n>    : 警告の打ち切り個数を指定する。(999)
    -omit <n>     : 無減点同一警告の打ち切り数を指定する。(20)
    -x <html>     : 指定された HTML ヴァージョンでチェックする。
                     <html> = html10
                            = html20 | RFC1866
                            = html2x | RFC2070 | i18n
                            = html+ | htmlplus
                            = html30 | arena
                            = html32 | wilbur
                            = html40 | html40s | html40-strict
                            = html40t | html40-transitional
                            = html40f | html40-frameset
                            = html40m | html40-mobile
                            = html401 | html401s | html401-strict
                            = html401t | html401-transitional  (*)
                            = html401f | html401-frameset
                            = xhtml1 | xhtml1s | xhtml1-strict
                            = xhtml1t | xhtml1-transitional
                            = xhtml1f | xhtml1-frameset
                            = xhtml11
                            = xhtml-rdfa
                            = xhtmlb
                            = xhtmlmp
                            = 15445 | iso-html
                            = 15445p | 15445-preparation | iso-html-preparation
                            = mozilla20
                            = mozilla30
                            = mozilla40 | navigator | netscape
                            = ie30b | msie30b
                            = ie30 | msie30
                            = ie40 | msie40
                            = ie50 | msie50
                            = ie55 | msie55 | microsoft
                            = webexp
                            = compact-html | compact
                            = imode10
                            = imode20
                            = imode30
                            = imode40
                            = imode-xhtml | ixhtml
                            = imode-xhtml11 | ixhtml11
                            = jskyweb
                            = jskystation
                            = doti10
                            = jpo
                    大文字小文字の区別なし。
    -igndoctype   : HTML 中の DOCTYPE 宣言を無視する。
    -usedoctype   : HTML 中の DOCTYPE 宣言を無視しない。(*)
    -igncharset   : CHARSET の指定とコードの一致性を無視する。
    -usecharset   : CHARSET の指定とコードの一致性を無視しない。(*)
    -local        : HTML 中のローカルファイルの参照を許可する。(*)
    -nolocal      : HTML 中のローカルファイルの参照を禁止する。
    -after <date> : 指定日以降のファイルのみチェックする。
                     <date> = YYYY-MM-DD-hh-mm-ss (区切りは任意、途中までで可)
                            = @file (このファイルのタイムスタンプを基準)
    -r <dir>      : 規則ファイルのディレクトリを指定する。
                    指定がなければ htmllint と同じ場所とみなされる。
    -v | -version : ヴァージョンを表示する。
    -u | -help    : このメッセージを表示する。
  return: 何もエラーがなければエラーステータス 0 で終了する。

テストのために、htmllintと同じディレクトリに含まれるindex.htmlをチェックしてみる。結果良好。

$ perl htmllint index.html | nkf -w
index.html を HTML4.01 Transitional としてチェックします。
index.html(10): 0: <HEAD>〜</HEAD> 内に <LINK REV="MADE" HREF="mailto:〜"> が含まれていません。
index.html(13): 0: <DIV> の属性 `ALIGN` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(42): 0: コメント中に `<` や `>` を書くと、いくつかのブラウザを混乱させることがあります。
index.html(53): 0: <P> の属性 `ALIGN` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(60): 0: <TD> の属性 `NOWRAP` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(61): 0: <TD> の属性 `NOWRAP` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(62): 0: <TD> の属性 `NOWRAP` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(63): 0: <TD> の属性 `NOWRAP` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(64): 0: コメント中に `<` や `>` を書くと、いくつかのブラウザを混乱させることがあります。
index.html(65): 0: コメント中に `<` や `>` を書くと、いくつかのブラウザを混乱させることがあります。
index.html(66): 0: コメント中に `<` や `>` を書くと、いくつかのブラウザを混乱させることがあります。
index.html(67): 0: <TD> の属性 `NOWRAP` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(68): 0: コメント中に `<` や `>` を書くと、いくつかのブラウザを混乱させることがあります。
index.html(69): 0: <TD> の属性 `NOWRAP` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(70): 0: <TD> の属性 `NOWRAP` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(73): 0: <TD> の属性 `NOWRAP` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(73): 0: <TD> の属性 `NOWRAP` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(74): 0: <TD> の属性 `NOWRAP` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(74): 0: <TD> の属性 `NOWRAP` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(75): 0: <TD> の属性 `NOWRAP` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(75): 0: <TD> の属性 `NOWRAP` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(78): 0: <TD> の属性 `NOWRAP` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(78): 0: <TD> の属性 `NOWRAP` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(79): 0: <TD> の属性 `NOWRAP` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(79): 0: <TD> の属性 `NOWRAP` はあまり薦められない属性です。スタイルシートを使いましょう。
index.html(91): 0: コメント中に `<` や `>` を書くと、いくつかのブラウザを混乱させることがあります。
index.html(92): 0: コメント中に `<` や `>` を書くと、いくつかのブラウザを混乱させることがあります。
index.html(93): 0: コメント中に `<` や `>` を書くと、いくつかのブラウザを混乱させることがあります。
index.html(94): 0: コメント中に `<` や `>` を書くと、いくつかのブラウザを混乱させることがあります。
index.html(97): 0: コメント中に `<` や `>` を書くと、いくつかのブラウザを混乱させることがあります。
index.html(100): 0: コメント中に `<` や `>` を書くと、いくつかのブラウザを混乱させることがあります。
index.html(101): 0: コメント中に `<` や `>` を書くと、いくつかのブラウザを混乱させることがあります。
index.html(108): 0: <DIV> の属性 `ALIGN` はあまり薦められない属性です。スタイルシートを使いましょう。これ以降この警告は表示しません。
33個のエラーがありましたが、このHTMLは 100点です。タグが 26種類 181組使われています。文字コードは UTF-8 のようです。

リファレンス

  1. Another HTML-lint
  2. Another HTML-lint : Download
  3. Jcode - search.cpan.org

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2010-02-18T00:40:09+09:00
  2. Modified: 2010-02-18T00:40:09+09:00
  3. Generated: 2017-04-08T23:09:24+09:00