Google

Weblint 97, jweblint 97 Man Page


目次
名称
構文
説明
オプション
HTML 拡張
DOCTYPE 宣言
コード系の拡張
CONFIGURATION ファイル
WARNINGS
環境変数
ファイル
ヴァージョン
入手先
既知のバグ
著者
貢献

名称

Weblint 97, jweblint 97 - web ページ (HTML) の誤りを摘み取る

構文

jweblint [ -d id ] [ -e id ] [ -f filename ] [ -i ] [ -l ] [ -s ] [ -stderr ] [ -t ] [ -todo ] [ -help ] [ -U ] [ -urlget command ] [ -v ] [ -version ] [ -warnings ] [ -x extension ] [ -c codetype ] [ -explain ] file1 .. fileN

"説明

Weblint 97 は, Weblint v1.017 をベースに国際化 (I18N) に対応した, HTML ページの誤りを摘み取るための Perl スクリプトであり, jweblint 97 は, Weblint 97 を日本語環境に合わせて地域化 (L10N) したものである. 以下, 特に断りのない限り, jweblint 97 について説明するが, 基本的な仕様は Weblint 97 においても異なるところはない.

チェックされるべきファイルはコマンドラインで以下のように渡される:


% jweblint foobar.html ./dodgy-files/ index.html

もし引数のいずれかがディレクトリであったら, jweblint 97 はディレクトリ内を再帰し, 見つけた全ての HTML ファイルをチェックする. もし引数が URL であれば, jweblint 97 は URL 取得プログラムを使ってファイルを取得し, ファイルをチェックする:


% jweblint http://www.foobar.com/

デフォルトでは jweblint 97 は URL の取得に lynx を使用するが, これは置き換え可能である. `-' というファイル名は, jweblint 97 が標準入力から読み込むべきことを指定する:


% lynx -source http://www.foobar.com/ | jweblint -

warning は lint 式に生成される:

home.html(9): </A> がつり合いません (マッチする <A> が見つかりません).

jweblint 97 は以下の特徴を持つ:

  • 60 の様々なチェックと警告.
  • 各警告は, お好み次第で個別に有効/無効にできる.
  • 基本的な構造とシンタックスのチェック.
  • 不明なエレメント及びエレメントの属性の使用に対する警告.
  • 前後関係のチェック (タグがある特定のエレメント内で現れなければならない場合).
  • 重なり合っている, あるいは不正にネストしているエレメントに対する警告.
  • IMG エレメントに ALT テキストがあるか?
  • 一般にはもう使用されていないエレメントを警告する.
  • ユーザ毎及びサイト毎の configuration ファイルのサポート.
  • 文体のチェック.
  • 全てのブラウザでは通用しないような HTML に対するチェック.
  • いくつかのブラウザを混乱させるため, コメント中に埋めこまれたマークアップを警告する.
  • 基本スペックは HTML 2.0 (RFC 1866) に準拠しつつ, 新たな標準規格である, 国際化 (I18N) 拡張 (RFC 2070) 及び HTML 3.2 (W3C Recommendation) に対応.
  • HTML 3.2 に対する実験的な拡張案である Cougar, 及び Microsoft, Netscape の各 HTML 拡張をサポート.
  • DOCTYPE 宣言を認識し, 自動的に適切な拡張を設定する.
  • I18N に対応し, US-ASCII や ISO-8859-* などだけでなく, ISO-2022-* や Unicode といった, 様々なエンコーディングの HTML ドキュメントをチェックできる.

オプション

-d warning-identifier
指定した identifier に関連する warning を無効にする. 各 identifier をカンマで区切ることで, 複数の identifier を指定可能である.
-e warning-identifier
指定した identifier に関連する warning を有効にする. 各 identifier をカンマで区切ることで, 複数の identifier を指定可能である.
-f config-file
ユーザのデフォルト config ファイル, あるいはサイト configuration ファイルの代わりに使われるべき jweblint configuration ファイルを指定する.
-help
簡潔な使用法の概要を表示する.
-i
エレメントタグの case (大文字・小文字) を無視する.
-l
ディレクトリ内を再帰的にチェックするとき, シンボリックリンク (ソフトリンクとしても知られる) されたファイルは全て無視する. この指定はまた, コマンドラインで指定されたファイルについても, ただ1つのファイルが指定されている場合以外は, それらがシンボリックリンクであれば無視することになる.
-pedantic
case-sensitive 及び bad-link の警告以外の全ての警告を有効にする.
-s
ファイル名を含まない, `簡潔な' 警告メッセージを生成する.
-stderr
警告メッセージを, 標準出力 (STDOUT) ではなく標準エラー出力 (STDERR) に出力する.
-t
簡潔な警告モードにする; 主に jweblint 97 の testsuite 時に有益である.
-U
-help と同じ.
-urlget command
URL により指定された HTML ページを取得するために使われるべきコマンドを指定する.
-v
ヴァージョンナンバーを表示.
-version
ヴァージョンナンバーを表示.
-todo
オンライン版の Weblint ToDo リストの URL を表示する. これには既知のバグ, 要求された/計画された特徴などを含む.
-warnings
全てのサポートされる warning を, warning identifier と共に, その warning が有効であるかどうかとあわせて一覧表示する.
-x extension
指定された HTML 拡張に対するチェックを含める; カンマで区切ることにより, 複数の拡張を指定することができる. 現在サポートされている拡張は, HTML3.2, i18n, Cougar, Microsoft, 及び Netscape である. これは, 以下で述べられている jweblint 97 の configuration ファイルによっても設定可能である.
-c codetype
指定されたコード系を扱えるようにする; 現在サポートされているコード系は, litaral, ISO-2022-7bit, Unicode, 及び Japanese (jweblint 97 のみ) である. これは, 以下で述べられている jweblint 97 の configuration ファイルによっても設定可能である.
-explain
-x 及び -c オプションの詳細を表示する.

HTML 拡張

jweblint 97 はデフォルトでは HTML 2.0 の仕様に準拠するが, 新たな標準規格を含む, 幾つかの HTML に対する拡張をサポートする. それらはデフォルトでは認識されないが, DOCTYPE 宣言でどのヴァージョンの HTML に従っているか書いておけば, 対応する適切な拡張が自動的に設定される. 従って, 適切な DOCTYPE 宣言を書いてある限り, 後述のコマンドラインスイッチ等を使う必要はない.

以下の拡張が現在サポートされている:

HTML3.2 (alias: 3.2, Wilbur)
W3C Recommendation となった, HTML 3.2 によりサポートされる HTML 拡張.
i18n (alias: HTML2.x, 2.x)
RFC 2070 に規定された, HTML の国際化規格によりサポートされる HTML 拡張.
Cougar
HTML 3.2 に対する実験的な拡張案である, Cougar によりサポートされる HTML 拡張.

Microsoft (alias: MSIE)
Microsoft Internet Explorer version 3.0 によりサポートされる HTML 拡張.
Netscape (alias: Mozilla)
Netscape Navigator version 3.0 によりサポートされる HTML 拡張.

拡張を明示的に有効にするには, コマンドラインスイッチ -x を使用するか:


    % jweblint -x HTML3.2 foobar.html

あるいは .weblintrc 内で extension キーワードを 使用する:


    # Allow i18n HTML extensions (RFC 2070), such as SPAN and BDO
    extension i18n

alias が設定されているものについては, HTML 拡張の名称として, 代わりにそちらを使うことも可能である. 例えば上記のコマンドラインは, 以下のように書くこともできる.


    % jweblint -x 3.2 foobar.html

複数の拡張を指定することは原理的には可能である - それらは以下のいずれかの仕組みを用いて, カンマで区切って指定する:

    % jweblint -x Microsoft,Netscape foobar.html

    extension Microsoft,Netscape

しかし, 各 HTML 拡張の仕様には互いに矛盾する箇所もあり, このような指定は決して推奨しないし, このような指定をした場合の動作も保証しない. 正しい DOCTYPE を宣言できないような拡張の指定の仕方は避けるべきである.

DOCTYPE 宣言

jweblint 97 では, DOCTYPE 宣言を認識し, それに応じて適切な拡張を自動的に設定する. 各拡張に対応する DOCTYPE 宣言は, 以下の通りである.

HTML3.2

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Draft//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Draft 19960821//EN">

注: 下の2つは互換性のために残されているものであり, 今後新たに書くドキュメントに用いるべきではない.

i18n

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML i18n//EN">

Cougar

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Experimental 19960709//EN">

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Experimental 19960710//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Experimental 19960712//EN">

注: 最初の DOCTYPE は, http://www.w3.org/pub/WWW/ で用いられているものである. しかし, 現在公開されている DTD では3番目の DOCTYPE が指定されており (http://www.w3.org/pub/WWW/MarkUp/Cougar/HTML.dtd 参照), Cougar を指定するのであれば3番目の DOCTYPE を推奨する.

Microsoft

<!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 3.0 HTML//EN">
<!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 3.0 HTML Strict//EN">
<!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 2.0 HTML//EN">
<!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 2.0 HTML Strict//EN">

注: Microsoft 拡張は, IE 3.0 の拡張仕様を認識する. 従って, たとえ DOCTYPE で IE 2.0 が指定されていたとしても, IE 3.0 特有の拡張も有効となる.

Netscape 拡張に対応する公式な DTD はなく, 従って, いかなる DOCTYPE を宣言しようとも, Netscape 拡張が自動的に設定されることはない.

上記以外の DOCTYPE が宣言されている場合, あるいは DOCTYPE 宣言がない場合は, HTML 2.0 の DOCTYPE が宣言されたものとみなされる.

コード系の拡張

jweblint 97 は I18N に対応し, 様々なコード系を扱うことができる.

以下のコード系が現在サポートされている:

literal
7bit または 8bit の, ASCII と上位互換性のあるコード系; 読み込んだ octet-stream はそのまま (literal に) 扱われる.
i.e. US-ASCII, ISO-8859-*, VISCII [, 各国語 EUC]
ISO-2022-7bit
ISO-2022 の7単位符号の拡張方法に準拠したコード系.
i.e. ISO-2022-JP, ISO-2022-JP-2, ISO-2022-KR, ISO-2022-CN
Unicode
UCS-2, a.k.a. Unicode; バイトオーダは, 上位バイトが先でなければならない.
Japanese (デフォルト)
日本語自動判別 (ISO-2022-JP, EUC-JP, Shift_JIS)

※ Weblint 97 では, literal がデフォルトである.

コード系を指定するには, コマンドラインスイッチ -c を使用するか:


    % jweblint -c ISO-2022-7bit iso-2022-jp-2.html

あるいは .weblintrc 内で codetype キーワードを 使用する:


    # literal: 7 or 8 bit codes, upward compatible to ASCII;
    #          octet-streams are treated literally
    codetype literal

このオプションは, 各コード系で書かれた HTML ページのシンタックスのチェックを可能にするものであり, それらのコードで書かれたページの「表示」をサポートするものではない.

CONFIGURATION ファイル

jweblint 97 は, ホームディレクトリ内の .weblintrc (あるいは環境変数 WEBLINTRC により参照されるファイル) を用いることにより, 設定を変更することが可能である. このファイルは, ある特定の warning を有効あるいは無効にしたり, jweblint 97 の変数を設定したり, 上述のように HTML 拡張を含めたり, コード系を指定するのに用いることができる. 各 warning は, 設定ファイル内やコマンドラインから warning を参照するのに用いられる, 簡潔な識別子 (identifier) を持つ. 例えば, もしあなたが大文字でないタグに対するチェックを有効にしたいが, 廃れたエレメントに対するチェックは無効にしたいのならば, 以下のような行をあなたの .weblintrc に含めることになるであろう:

# specify the command used to retrieve URLs (-urlget switch)
set url-get = lynx -source

# the style of warning message to generate (lint, short, or terse)
set message-style = lint

# enable warning for tags not in upper-case
enable upper-case

# disable the warning for obsolete tags
disable obsolete

# enable the HTML 3.2 extensions
extension HTML 3.2

# specify the code type to treat
codetype literal

# when recursing in a directory,
# ignore files which are symlinks (also known as soft links)
ignore symlinks

キーワードには, スペースあるいはタブで区切って, いくつかの引数を指定可能である. `#' に続く文字列は全てコメントとして扱われる.

サンプル configuration ファイルが Weblint 97 の配布に含まれており, これは Weblint 97 の組み込みの設定を反映している.

jweblint 97 はまた, サイト configuration ファイルをサポートする. もしユーザが個人の configuration ファイルを持っていなければ, jweblint 97 はローカルサイト configuration ファイルをチェックする. そのようなファイルを用意するためには, /usr/local/weblint のようなディレクトリを作成し, global.weblintrc というファイルを作成する. そして, あなたは jweblint 97 のスクリプトを編集し, ファイルの先頭付近にある, $SITE_DIR 変数を修正する必要がある. 例えば:


    $SITE_DIR = '/usr/local/weblint';

将来のある時点で, Weblint の configuration がサポートされるであろう, 従って, あなたは自分自身で直接スクリプトを修正する必要はなくなるであろう.

サイト configuration ファイルがあれば, ユーザは自身の .weblintrc ファイルの先頭に以下のような行を追加することにより, サイトのデフォルト設定を受け継ぐことができる:


    use global weblintrc

WARNINGS

jweblint 97 により生成される全ての warning を, 関連する identifier とともに, そしてその warning がデフォルトで有効あるいは無効かと合わせて, 以下に列挙する.

タグ <...> が大文字ではありません.
Identifier: upper-case
デフォルト: disabled
タグ <...> が小文字ではありません.
Identifier: lower-case
デフォルト: disabled
<...> エレメントには foo 属性が必要です.
Identifier: required-attribute
デフォルト: enabled
<...> には属性の指定が必要です.
Identifier: expected-attribute
デフォルト: enabled
<...> は不明なエレメントです.
Identifier: unknown-element
デフォルト: enabled
<...> エレメントの `...' 属性は不明です.
Identifier: unknown-attribute
デフォルト: enabled
`<' と `...>' の間に空白文字を入れてはいけません.
Identifier: leading-whitespace
デフォルト: enabled
アンカーとして `here', `ここ', `これ', `こちら' 等を使うのは良くない形式です!
Identifier: here-anchor
デフォルト: enabled
HEAD エレメント内に <TITLE> がありません.
Identifier: require-head
デフォルト: enabled
タグ <...> は1つだけ使われるべきです. XX 行目に1つ見られました!
Identifier: once-only
デフォルト: enabled
<BODY> はあっても <HEAD> がありません.
Identifier: body-no-head
デフォルト: enabled
一番外側のタグは <HTML> .. </HTML> であるべきです.
Identifier: html-outer
デフォルト: enabled
<...> は HEAD エレメント内でのみ使うことができます.
Identifier: head-element
デフォルト: enabled
<...> は HEAD エレメント内で使うことはできません.
Identifier: non-head-element
デフォルト: enabled
<...> は一般にはもう使用されていません.
Identifier: obsolete
デフォルト: enabled
</...> がつり合いません (マッチする <...> が見つかりません).
Identifier: mis-match
デフォルト: enabled
IMG に ALT テキストが定義されていません.
Identifier: img-alt
デフォルト: enabled
<...> はネストすることはできません -- XX 行目の <...> に対応する </...> が見つかりません.
Identifier: nested-element
デフォルト: enabled
HEAD の中に <LINK REV=MADE HREF="mailto..."> が見つかりませんでした.
Identifier: mailto-link
デフォルト: disabled
XX 行目の </...> は, YY 行目に開始された <...> と重なり合っているようです.
Identifier: element-overlap
デフォルト: enabled
XX 行目の <...> に対応する終了タグ </...> が見つかりません.
Identifier: unclosed-element
デフォルト: enabled
コメント中に埋め込まれたマークアップは幾つかのブラウザを混乱させることがあります.
Identifier: markup-in-comment
デフォルト: enabled
<...> エレメント内に対になっていない引用符があります.
Identifier: odd-quotes
デフォルト: enabled
良くないスタイルです - ヘディング <H?> が XX 行目の <H?> に続いています.
Identifier: heading-order
デフォルト: enabled
アンカー "..." のターゲットが見つかりませんでした.
Identifier: bad-link
デフォルト: disabled
予期せぬ < が <...> にあります -- 閉じられていないエレメントの可能性があります.
Identifier: unexpected-open
デフォルト: enabled
<...> にとって不正な文脈です - <...> エレメント内で使わなければなりません.
Identifier: required-context
デフォルト: enabled
コメントが閉じられていません (コメントは: <!-- ... -->).
Identifier: unclosed-comment
デフォルト: enabled
エレメント <...> は組になって使われません -- </...> は不正です.
Identifier: illegal-closing
デフォルト: enabled
<...> は物理的フォントマークアップです -- 論理的マークアップを使ってください (例えば XXX).
Identifier: physical-font
デフォルト: disabled
<...> エレメント内で XYZ 属性が繰り返されています.
Identifier: repeated-attribute
デフォルト: enabled
組合わせエレメント <...> が空です.
Identifier: empty-container
デフォルト: enabled
属性値のデリミッタに ' を使うのは全てのブラウザでサポートされてはいません (ABC タグの XYZ 属性).
Identifier: attribute-delimiter
デフォルト: disabled
終了タグ <...> には何らの属性も指定してはなりません.
Identifier: closing-attribute
デフォルト: enabled
directory に index file がありません (index.html).
Identifier: directory-index
デフォルト: enabled
<...> は <...> の直後に続かなければなりません.
Identifier: must-follow
デフォルト: enabled
IMG タグに WIDTH 及び HEIGHT 属性を設定することで, 幾つかのブラウザでの見栄えを向上させることができます.
Identifier: img-size
デフォルト: disabled
組合わせエレメント ... 内の 先頭に/末尾に 空白文字があります.
Identifier: container-whitespace
デフォルト: disabled
最初のエレメントが DOCTYPE の記述ではありませんでした.
Identifier: require-doctype
デフォルト: enabled
メタキャラクタ `...' は `...' で表されるべきです.
Identifier: literal-metacharacter
デフォルト: enabled
おかしなヘディングです - 開始タグは <H?> ですが, 終了タグは </H?> です.
Identifier: heading-mismatch
デフォルト: enabled
<...> はテキストにとって不正な文脈です; XXX の中にあるべきです.
Identifier: bad-text-context
デフォルト: enabled
XXXAAA 属性の値が不正です (...).
Identifier: attribute-format
デフォルト: enabled
<...> は 拡張マークアップです (これを許すには `-x <extension>' を使ってください).
Identifier: extension-markup
デフォルト: enabled
<...> の `...' 属性は拡張マークアップです (これを許すには `-x <extension>' を使ってください).
Identifier: extension-attribute
デフォルト: enabled
FOOBAR エレメントの XYZ 属性の値 (ABC) は引用符で囲まれるべきです. (i.e. XYZ="ABC")
Identifier: quote-attribute-value
デフォルト: enabled
たとえ PRE エレメントの中であっても, '...' の代わりに '...' を使うべきです.
Identifier: meta-in-pre
デフォルト: enabled
<H?> を <A> の中に入れるのではなく, <A> を <H?> の中に入れるべきです.
Identifier: heading-in-anchor
デフォルト: enabled
HTML の仕様書は TITLE を 64 文字以内に収めることを推奨しています.
Identifier: title-length
デフォルト: enabled
選択された拡張 `...' は DOCTYPE 宣言と一致しません.
Identifier: doctype-mismatch
デフォルト: disabled
URL 中に空白文字が含まれています (...).
Identifier: url-whitespace
デフォルト: enabled
URL 中に `\' が含まれています -- path の区切りは `/' でなければなりません (...).
Identifier: url-backslash
デフォルト: enabled
URL 中に安全でない文字が含まれています (...).
Identifier: unsafe-url
デフォルト: enabled
アンカー "..." のターゲットは directory です/ではありません -- "..." とすべきです.
Identifier: trailing-slash
デフォルト: disabled
"..." は不明な実体参照です.
Identifier: bad-entity
デフォルト: enabled
コメント宣言中の `--' の対応が不正です.
Identifier: unterminated-comment
デフォルト: disabled
`file' URL はホスト限定の scheme です (...).
Identifier: file-url
デフォルト: enabled
watch list にある URL "..." が見つかりました.
Identifier: url-watch
デフォルト: disabled
非 ASCII 文字 "..." があります.
Identifier: non-ascii
デフォルト: disabled

環境変数

WEBLINTRC
もしこの変数が定義されており, ファイルを参照していれば, jweblint 97 は $HOME/.weblintrc ではなく, 参照されたファイルをユーザの設定として読み込む.
TMPDIR
jweblint 97 が一時作業ファイルを作成するディレクトリ. デフォルトでは /usr/tmp, /tmp, /var/tmp, /temp の順にサーチする.

ファイル

html-ext.pl
jweblint 97 の HTML 拡張ライブラリである. jweblint 97 を実行する前に, このライブラリを Perl のライブラリを格納したディレクトリにインストールしておく必要がある.
htmli18n.pl
jweblint 97 のコード系拡張ライブラリである. html-ext.pl 同様, 事前にこのライブラリをインストールしておかねばならない.
jcode.pl
歌代和正氏作の, 漢字コード変換ライブラリである. jweblint 97 では, これも html-ext.pl や htmli18n.pl 同様, 事前にインストールしておかねばならない (Weblint 97 では不要).
$HOME/.weblintrc
ユーザの configuration ファイル. `CONFIGURATION ファイル' の節を見よ.

ヴァージョン

この man page は, jweblint 97 v0.12 について記述している.

入手先

Weblint:
ftp://ftp.cre.canon.co.uk/pub/weblint/weblint-1.017.tar.gz
ftp://ftp.cre.canon.co.uk/pub/weblint/weblint-1.017.zip
http://www.cre.canon.co.uk/~neilb/weblint/
Weblint 97 / jweblint 97:
http://www.aichi-u.ac.jp/~mimasa/jweblint/

既知のバグ

既知のバグのリストは, weblint home page で入手できる:


    http://www.cre.canon.co.uk/~neilb/weblint/todo/

あるヴァージョンの Perl には, Weblint により誘発されるバグがある. もしあなたが 4.036, あるいは 5.003 を持っていれば, 問題を経験せずに済むはずである.

著者

原著: Neil Bowers, Canon Research Centre Europe
neilb@cre.canon.co.uk

翻訳・日本語版加筆: 石川 雅康
mimasa@aichi-u.ac.jp

貢献

多くの人々が提案, バグレポート, 修正, コードの寄稿などの形で jweblint 97 に貢献してくれた.

もしあなたの名前が以下に連ねられるべきであると感じたら, 私まで e-mail で連絡して欲しい.

川戸 勝史 氏 <kawato@ksp.nis.nec.co.jp>, 歌代 和正 氏 <utashiro@iij.ad.jp>, 新出 尚之 氏 <nide@ics.nara-wu.ac.jp>, 小林 弘幸 氏 <kob@isys.eei.metro-u.ac.jp>, Mr. Jason J. Klapste <jklap@indy.eworks.com>, 大森 紀人 氏 <ohmori@p.chiba-u.ac.jp>, Mr. Larry W. Virden <lvirden@cas.org>, Mr. John F. Whitehead <jfw@wral-tv.com>, 野首 貴嗣 氏 <knok@da2.so-net.or.jp>, 喜瀬 浩 氏 <kise@imicom.or.jp>, 田村 健人 氏 <kent@muraoka.info.waseda.ac.jp>, Mr. Paul Gilmartin <pg@sweng.stortek.com>, 塩崎 毅彦 氏 <takehi-s@ascii.co.jp>, Mr. Tom Neff <tneff@panix.com>, Yoshihiro Tsukamoto 氏 <tsuka@ohsaki.meidensha.co.jp>, Mr. Ryan L. Watkins <vamp@dimensionx.com>, 河邉 岳人 氏 <kabe@dais.is.tohoku.ac.jp>,

weblint-victims mailing list の皆さん,

そして, Weblint という素晴らしいツールを作ってくれた Mr. Neil Bowers.