- 属性値のデリミッタに ' を使うのは全てのブラウザでサポートされてはいません (ABC タグの XYZ 属性).
Identifier: attribute-delimiter (disabled)
- XXX の AAA 属性の値が不正です (...).
Identifier: attribute-format (enabled)
- "..." は不明な実体参照です.
Identifier: bad-entity (enabled) [EXPERIMENTAL]
- アンカー "..." のターゲットが見つかりませんでした.
Identifier: bad-link (disabled)
- <...> はテキストにとって不正な文脈です; XXX の中にあるべきです.
Identifier: bad-text-context (enabled)
- <BODY> はあっても <HEAD> がありません.
Identifier: body-no-head (enabled)
- 終了タグ <...> には何らの属性も指定してはなりません.
Identifier: closing-attribute (enabled)
- 組合わせエレメント ... 内の 先頭に/末尾に 空白文字があります.
Identifier: container-whitespace (disabled)
一般に、HTMLドキュメント中の空白文字の位置はあまり重要ではありませんが、
例えばリストエレメント (<LI>) 中の先頭に空白文字があると、
リストの先頭が他と揃わずに不格好な表示になります。
また、アンカーエレメント (<A> ... </A>)
の中は通常下線などで強調表示されますが、
この先頭や末尾に空白文字があると、
下線が前後にはみだしてみっともないことになります。
アンカーとしてイメージを使っている場合などは特にそうです。
- directory に index file がありません (index.html).
Identifier: directory-index (enabled)
- 選択された拡張 `...' は DOCTYPE 宣言と一致しません.
Identifier: doctype-mismatch (disabled) [EXPERIMENTAL]
DOCTYPE宣言は、そのHTMLドキュメントがどのヴァージョンのHTMLの仕様に従って書かれているかを明らかにするものです。
従って、-x
オプションなどでHTML拡張を指定する場合は、
指定した拡張とDOCTYPE宣言とが一致しているべきです。
このwarning-identifierが有効になっていると、
指定された拡張と、DOCTYPE宣言の記述との整合性をチェックします。
例えば、DOCTYPE宣言で
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
のようにHTML 3.2が指定されているのに、
jweblint -x Netscape foobar.html
のようにNetscape拡張が指定された場合、
選択された拡張とDOCTYPE宣言とが一致しない旨を警告します。
DOCTYPE宣言がない場合は、
HTML 2.0が指定されたものとみなします。
なお、jweblint 97では、
DOCTYPE宣言でどのヴァージョンのHTMLに従うか書いておけば、
自動的に対応する拡張を認識するようになっています。
-x
オプションなどでいちいちHTML拡張を指定するより、
適切なDOCTYPE宣言を書いておくことを強くおすすめします。
参照: require-doctype
- XX 行目の </...> は, YY 行目に開始された <...> と重なり合っているようです.
Identifier: element-overlap (enabled)
- 組合わせエレメント <...> が空です.
Identifier: empty-container (enabled)
- <...> には属性の指定が必要です.
Identifier: expected-attribute (enabled)
- <...> の `...' 属性は拡張マークアップです (これを許すには "
-x <extension>
" を使ってください).
Identifier: extension-attribute (enabled)
jweblint 97では、
デフォルトの仕様は HTML 2.0 に準拠しています。
HTML 3.2 で追加された属性など、
拡張されたマークアップを使いたい場合は、
-x
オプションでどの仕様に従うか、
明示的に指定してください。
-x
オプション等で指定したにもかかわらずこの警告が出る場合は、
そのマークアップは指定された拡張には含まれない、
他の拡張に含まれる属性であることを示しています。
どの拡張にも含まれない属性に対しては、
不明な属性である旨の警告が表示されます。
なお、jweblint 97では、
DOCTYPE宣言でどのヴァージョンのHTMLに従うか書いておけば、
自動的に対応する拡張を認識するようになっています。
適切なDOCTYPE宣言を書いておくことを強くおすすめします。
参照: unknown-attribute,
require-doctype
- <...> は 拡張マークアップです (これを許すには "
-x <extension>
" を使ってください).
Identifier: extension-markup (enabled)
extension-attribute同様、
拡張されたマークアップを使いたい場合は、
-x
オプションで指定するか、
使いたい拡張に応じた適切なDOCTYPE宣言を書いておく必要があります。
-x
オプションやDOCTYPE宣言で指定したにもかかわらずこの警告が出る場合は、
そのマークアップは指定された拡張には含まれない、
他の拡張に含まれるエレメントであることを示しています。
どの拡張にも含まれないエレメントに対しては、
不明なエレメントである旨の警告が表示されます。
参照: unknown-element,
require-doctype
- `file' URL はホスト限定の scheme です (...).
Identifier: file-url (enabled) [EXPERIMENTAL]
RFC 1738 によれば、
file URL schemeは特定のホストコンピュータにおいてアクセス可能なファイルを指定するもので、
Internet上で普遍的にアクセス可能なリソースを指定するものではありません。
従って、Intranetなど、
ローカルな環境でのみ用いるのであればこれでもいいかもしれませんが、
Internetにおいて一般に公開するWebページにこれを用いるのはふさわしくありません。
HTMLエディタなどでリンクを設定すると、
file URL schemeを使ってリソースを指定するものがあるので、
注意が必要です。
このwarning-identifierが有効になっていると、
file URL schemeが使われていたら警告します。
参照: RFC 1738 の "3.10 FILES"
- <...> は HEAD エレメント内でのみ使うことができます.
Identifier: head-element (enabled)
TITLE, NEXTID, LINK, BASE, META といったタグは、
HEAD 内でのみ使うことができるエレメントです。
これらのタグを使う場合は、HEAD で囲んでおくべきです。
- <H?> を <A> の中に入れるのではなく, <A> を <H?> の中に入れるべきです.
Identifier:heading-in-anchor (enabled)
- おかしなヘディングです - 開始タグは <H?> ですが, 終了タグは </H?> です.
Identifier: heading-mismatch (enabled)
- 良くないスタイルです - ヘディング <H?> が XX 行目の <H?> に続いています.
Identifier: heading-order (enabled)
- アンカーとして `here', `ここ', `これ', `こちら' 等を使うのは良くない形式です!
Identifier: here-anchor (enabled)
- 一番外側のタグは <HTML> .. </HTML> であるべきです.
Identifier: html-outer (enabled)
HTMLドキュメントの構造として、まずDOCTYPE宣言を書き、
次に <HTML> .. </HTML> でドキュメント全体を囲むのが望ましい書き方です。
実際には、<HTML> はHTMLの文法上は省略可能で、
多くのuser agentはこのタグがなくても問題なく処理してくれます。
しかし、例えば複数のHTMLドキュメントをまとめてデータベースに格納している場合など、
各ドキュメントが <HTML> .. </HTML> で囲まれていれば、
必要なドキュメントだけを抜き出すのが容易になるなど、
再利用性を向上させることができます。
また、国際化に対応した HTML 2.x (RFC 2070) などでは、
<HTML LANG="ja-JP"> のように LANG 属性を指定して、
そのHTMLドキュメントがどの言語で書かれているかを示すことができます。
その意味でも、
構造を明らかにするために <HTML> を書いておくべきです。
- エレメント <...> は組になって使われません -- </...> は不正です.
Identifier: illegal-closing (enabled)
- IMG に ALT テキストが定義されていません.
Identifier: img-alt (enabled)
IMG タグに ALT テキストが定義されていないと、
Lynxなどのテキストベースのuser agentではイメージを見ることができないので、
そのイメージが一体何を表しているのかわかりません。
視覚障害者が音声出力端末で利用する場合なども同様です。
特に、そのイメージがアンカーとして使われている場合は、
何にリンクされているのか全くわからないことになってしまいます。
イメージを表示できるグラフィカルなブラウザでも、
イメージがロードされるまでの間 ALT テキストを表示したり、
イメージをロードしない設定にしておくと代わりに ALT テキストが表示されるものもありますので、
IMG には必ず意味のある ALT テキストを定義しておくようにしましょう。
装飾的な意味しかないイメージであれば、
ALT="" などとして、
イメージの痕跡を消してしまいましょう。
- IMG タグに WIDTH 及び HEIGHT 属性を設定することで, 幾つかのブラウザでの見栄えを向上させることができます.
Identifier: img-size (disabled)
- "<" と "...>" の間に空白文字を入れてはいけません.
Identifier: leading-whitespace (enabled)
- メタキャラクタ '...' は '...' で表されるべきです.
Identifier: literal-metacharacter (enabled)
- タグ <...> が小文字ではありません.
Identifier: lower-case (disabled)
HTMLのタグは、大文字で書いても小文字で書いても構いません。
しかし、好みでタグを大文字や小文字に統一して書きたい場合もあるでしょう。
このwarning-identifierを有効にしておくと、
タグが小文字でなかった場合に注意を促すことができます。
参照: upper-case,
mixed-case
- HEAD の中に <LINK REV=MADE HREF="mailto..."> が見つかりませんでした.
Identifier: mailto-link (disabled)
- コメント中に埋め込まれたマークアップは幾つかのブラウザを混乱させることがあります.
Identifier: markup-in-comment (enabled)
- たとえ PRE エレメントの中であっても, '...' の代わりに '...' を使うべきです.
Identifier: meta-in-pre (enabled)
- </...> がつり合いません (マッチする <...> が見つかりません).
Identifier: mis-match (enabled)
- タグの case (大文字・小文字) が無視されています.
Identifier: mixed-case (enabled)
HTMLのタグは、大文字で書いても小文字で書いても構いません。
従って、このwarning-identifierが有効になっていても、
いちいち警告が表示されることはありません。
ただし、jweblint 97では、
好みでタグを大文字や小文字に統一して書きたい場合に、
その旨の注意を促すよう設定することもできます。
参照: lower-case,
upper-case
- <...> は <...> の直後に続かなければなりません.
Identifier: must-follow (enabled)
- <...> はネストすることはできません -- XX 行目の <...> に対応する </...> が見つかりません.
Identifier: nested-element (enabled)
- 非 ASCII 文字 "..." があります.
Identifier: non-ascii (disabled) [EXPERIMENTAL]
HTML 2.0 (RFC 1866)では、
HTMLドキュメントに使える文字は公式にはISO-8859-1 (Latin-1)で定義されたものに限られていました。
しかし、現実には、
他の言語を表現するために様々な文字集合・符号化方式
(エンコーディング) が使われてきました。
それらはおおむね、
7 bit部分はUS-ASCIIと互換性がありますが、
8 bit全てを使った部分には互換性がないのが普通です。
HTMLの国際化規格であるRFC 2070がリリースされたことにより、
扱える文字集合はISO/IEC 10646-1:1993 UCS-4 with implementation level 3に規定されたもの、
と飛躍的に拡大されましたが、
符号化方式については特定のものに限定されてはいません。
そのため、異なる符号化方式で表示しようとすると、
意図したものとは異なる文字が表示されてしまうことがあります。
例えば、ISO-8859-1で0xA9
の文字はcopyright記号ですが、
ISO-8859-2で0xA9
の文字は caron付き S (LATIN CAPITAL LETTER S WITH CARON) です。
また、ISO-8859-1で書かれたドキュメントをEUC-JPとして表示しようとすれば、
やはりおかしなことになります。
結局、どの環境でも確実に読めるようにしたければ、
US-ASCIIのみを使って書いておくのが安全です。
このwarning-identifierを有効にしておくと、
ドキュメント中に非 ASCII 文字を使っていないかチェックすることができます。
ただし、判定は1バイトごとに行ないますので、
複数バイト文字が含まれているとおかしな表示になります。
- <...> は HEAD エレメント内で使うことはできません.
Identifier: non-head-element (enabled)
HEAD エレメント内で使えるタグは、
TITLE, LINK, META, BASE など、いくつかのものに限られています。
BODY エレメント内で用いるような通常のタグを、
HEAD 内で使ってはいけません。
- <...> は一般にはもう使用されていません.
Identifier: obsolete (enabled)
- <...> エレメント内に対になっていない引用符があります.
Identifier: odd-quotes (enabled)
- タグ <...> は1つだけ使われるべきです. XX 行目に1つ見られました!
Identifier: once-only (enabled)
- <...> は物理的フォントマークアップです -- 論理的マークアップを使ってください (例えば ...).
Identifier: physical-font (disabled)
- ... エレメントの XYZ 属性の値 (ABC) は引用符で囲まれるべきです. (i.e. XYZ="ABC")
Identifier: quote-attribute-value (enabled)
属性値は原則として引用符 (" または ') で囲まねばなりません。
ただし、SGMLの規格では、以下のいずれかの場合に該当する場合は、
引用符を省略しても良いことになっています。
HTMLのSGML宣言では、"SHORTTAG YES" と指定されており、
名前文字としてアルファベットの大文字 (A-Z)・小文字 (a-z)、
10進数字 (0-9)、ハイフン (-)、ピリオド (.) が指定されています。
属性値が名前文字以外の文字を含む場合は、引用符を省略してはなりません。
例えば、SIZE="+1" のような属性値は、
名前文字以外を含んでいるので、引用符の省略は文法違反になります。
良くわからなければ、
属性値は常に引用符で囲む習慣を付けておいた方が良いでしょう。
- <...> エレメント内で XYZ 属性が繰り返されています.
Identifier: repeated-attribute (enabled)
- 最初のエレメントが DOCTYPE の記述ではありませんでした.
Identifier: require-doctype (enabled)
- HEAD エレメント内に <TITLE> がありません.
Identifier: require-head (enabled)
- <...> エレメントには XYZ 属性が必要です.
Identifier: required-attribute (enabled)
- <...> にとって不正な文脈です - <...> エレメント内で使わなければなりません.
Identifier: required-context (enabled)
- HTML の仕様書は TITLE を 64 文字以内に収めることを推奨しています.
Identifier: title-length (enabled)
RFC 1866によれば、
TITLE の長さは制限されてはいないものの、
長すぎる TITLE はいくつかのアプリケーションでは
切り詰められてしまう可能性があるため、
64文字以内に収めるべきことが推奨されています。
実際、多くのuser agentではタイトルバーなどに TITLE を表示するので、
あまり長い TITLE を付けると表示しきれません。
長すぎる TITLE は付けないようにしましょう。
参照: RFC 1866 の "5.2.1. Title"
- アンカー "..." のターゲットは directory です/ではありません -- "..." とすべきです.
Identifier: trailing-slash (disabled) [EXPERIMENTAL]
URLがディレクトリを指している場合、
"foo/" のように末尾に `/' を付けておかないと、
無駄なトラフィックを生むことになります。
また、実際は通常のファイルなのに、
"foo.html/" のように誤って末尾に `/' がついていると、
リンクが辿れなかったり、例えそのページに飛べても、
その後のリンクが辿れなくなることがあります。
このwarning-identifierが有効になっていると、
ローカルなリンクに限ってですが、
これらの正しくない表記に対して警告します。
- コメントが閉じられていません (コメントは: <!-- ... -->).
Identifier: unclosed-comment (enabled)
- XX 行目の <...> に対応する終了タグ </...> が見つかりません.
Identifier: unclosed-element (enabled)
- 予期せぬ < が <...> にあります -- 閉じられていないエレメントの可能性があります.
Identifier: unexpected-open (enabled)
- <...> エレメントの "..." 属性は不明です.
Identifier: unknown-attribute (enabled)
- <...> は不明なエレメントです.
Identifier: unknown-element (enabled)
- URL 中に安全でない文字が含まれています (...).
Identifier: unsafe-url (enabled) [EXPERIMENTAL]
RFC 1738 によれば、
URLの記述に使えるのは、
US-ASCIIの図形文字のみとされています。
従って、0x00-0x1F, 0x7F
の範囲の制御文字や、
US-ASCIIでは使われない、
0x80-0xFF
の範囲のコードをURL中に直接記述してはなりません。
これらの文字をURL中に使う場合は、エンコードする必要があります。
このwarning-identifierが有効になっていると、
上記の範囲の安全でない文字がURL中に使われていると警告します。
参照: RFC 1738 の "2.2. URL Character Encoding Issues";
url-backslash,
url-whitespace
- コメント宣言中の `--' の対応が不正です.
Identifier: unterminated-comment (disabled) [EXPERIMENTAL]
正しいコメントの書式では、コメント宣言は `<!' と `>' の間に、
`--' と `--' で囲まれたコメントを複数含むことができます。
従って、コメント宣言中の `--' と `--' の対応がおかしいと、
正しく解釈すると、コメント宣言が終了していないとして、
それ以降は全てコメントと解釈されてしまうことになります。
よくある間違いが、
<!-- -- --> や <!--------------> のような書き方です。
例えばLynx 2.6では、
コメントを「正しく」解釈する設定にしておくと、
上記のようなコメント宣言は終了していないと解釈し、
それ以降を表示しなくなってしまいます。
このwarning-identifierが有効になっていると、
このような `--' の対応が不正なコメントに対して警告します。
参照: RFC 1866 の "3.2.5. Comments";
markup-in--comment,
unclosed-comment
- タグ <...> が大文字ではありません.
Identifier: upper-case (disabled)
HTMLのタグは、大文字で書いても小文字で書いても構いません。
しかし、好みでタグを大文字や小文字に統一して書きたい場合もあるでしょう。
このwarning-identifierを有効にしておくと、
タグが大文字でなかった場合に注意を促すことができます。
参照: lower-case,
mixed-case
- URL 中に `\' が含まれています -- path の区切りは `/' でなければなりません (...).
Identifier: url-backslash (enabled) [EXPERIMENTAL]
RFC 1738 によれば、
URL中に `\' (backslash) を用いるのは安全ではなく、
これを含む場合には必ずエンコードしなければなりません。
また、URLにおいてpathの区切りを表すのは `/' ですが、
にもかかわらず、Windows環境のHTMLエディタなどでは、
file:\\\c:\www\foobar.htm のようなおかしなURLを埋めこんでしまうものがあります。
このwarning-identifierが有効になっていると、
このようなURL中の不正な `\' の使用に対して警告します。
参照: RFC 1738 の "2.2. URL Character Encoding Issues";
unsafe-url,
url-whitespace
- watch list にある URL "..." が見つかりました.
Identifier: url-watch (disabled) [EXPERIMENTAL]
- URL 中に空白文字が含まれています (...).
Identifier: url-whitespace (enabled) [EXPERIMENTAL]
RFC 1738 によれば、
URL中にスペースやタブ、改行といった空白文字を含めるのは安全ではなく、
これらを使う場合は必ずエンコードする必要があります。
特に、長いURLを書いているとつい途中で改行したくなるかもしれませんが、
多くのuser agentでは、
このような空白文字を含んだURLを正しく扱うことはできません。
このwarning-identifierが有効になっていると、
URL中の空白文字の使用に対して警告します。
参照: RFC 1738 の "2.2. URL Character Encoding Issues";
unsafe-url,
url-backslash