Another HTML-lint


いくつかの覚え書き

慶應義塾大学内のサイトW3Cをミラーしているわけではないそうです。

結果の解説に、どうしてもブロックレベル要素とインライン要素の話が出て来てしまう。ここら辺は、なるべくうやむやに、しかし間違いではないように、妙な気を使って書いていましたが、だんだんとそうもいかなくなってきました。これらを解説しようとすると、どうしたってHTMLの基礎を解説することになっちまって、かなりの馬力が必要です。困ったな。


UTF-8 top

Jcode.pmを使ってUTF-8をハンドリングしています。いくらか制約があります。

(1999/07/15)


XHTML™ 2.0 top

XHTML™ 2.0 のドラフトが出ています。DTDが見つからないので対応できません。 (2002/08/08)


XHTML™ 1.1 top

XHTML™ 1.1が勧告された (2001/05/31)。


XHTML™ 1.1は勧告案 (2001/04)、Modularization of XHTML™は、勧告された (2001/02/22)。


XHTML™ 1.1は、まだドラフトである(2000/03)。次のような特徴があります。

(2000/03/27)


XHTML™ Basic top

XHTML™ Basicは、2000/12/19 に勧告されました。


XHTML™ BasicというXHTML1.1のサブセットもある。これは、携帯電話やPDAなどの小型情報機器向けの仕様になっていて、イメージ、フォーム、基本的なテーブルなどが含まれています。
規則ファイル作成にあたっては、xhtml-framework-1.mod 内の xhtml-arch.module を IGNORE にしました。

(2000/03/27)


XHTML™ 1.0 top

XHTML™ 1.0 (Second Edition) が勧告されていました。
<base href> が #REQUIRED になってめでたしめでたし。 (2002/08/08)


XHTML™ 1.0HTML4をベースにしたXMLで、HTMLとしての上っ面だけ見ると次のような特徴があります。

と、ここまではチェックしています。この他にも、次のようなのがあります。

(2000/02/08)


HTML4.01 top

HTML4.0は、HTML4.01 に改訂されました(1999/12/24)。これに伴って HTML4.0 は obsolete になっています。
それほど多くの改訂があるわけではありません。次の属性が追加されています。

あとはいくらかのDTDの修正などです。
仕様書本文にも、いろいろ修正がありますが、ちゃんとは目を通していません。(1999/09/12)


HTML4.0 top

HTML4.0では、親しまれている "URL"(Uniform Resource Locator) の代わりに、より広義の "URI"(Uniform Resource Identifier) を用いています。これらは、ちゃんと使い分けなければならないのですが、きちんとできてません。詳しくは Web Naming and Addressing Overview

HTML4.0の赤枠で囲まれている ILLEGAL EXAMPLE はすべて警告されるようにした、つもり。

HTML4.0 (Cougar) のDTDで、loose.dtd にあり strict.dtd にないタグのうち、以下を薦められないタグとしました。

これら以外で、loose.dtd にあり strict.dtd にないタグで、フレーム関係以外のものは以下のとおりなんですが、これらは、スタイルシート(CSS1/CSS2)で行なえ、という主旨らしいです。これらも薦められないタグとしましたが、スタイルシートをサポートしていないWWWブラウザのためには使わざるを得ないような気もするんだけど、使っちゃいかんというのならそれはそれでよい。

loose.dtd にあり strict.dtd にない属性は以下のとおりです。しかし、<OL START>などは、だめと言われてもCSS1には代替がないので、どうするつもりなんでしょ(CSS2にはある?)。

<TD>、<TH>の要素を空にできないと、空のセルを作れないので、空にできるとみなしました。HTML4.0 11.4.2 には、実際にそのような例が出てきます。
<TABLE>、<TD>、<TH>のWIDTH属性が%Pixels;となっていますが、%指定できるように%Length;に変更しました。
loose.dtdでは、<BASE>のHREF属性が必須ではなくなりましたが、HREF属性とTARGET属性のどちらかが必要だとしました。
<SCRIPT>と<STYLE>にTYPE属性が必要となっています。値はContentTypeです。それぞれ、text/javascript とか text/css とか書いてください。
Mozillaにはあるが、<FORM>にNAME属性がない。SCRIPT書くのにちょっと困るかも知れない。しかし、NAME属性はID属性に取って代わられる方向のようだ。
<OBJECT ARCHIVE> は space separated archive list なのに、<APPLET ARCHIVE> は comma separated archive list なんだ。

HTML4.0では、16進の文字参照ができる。&#x6C34; みたいに。

HTML4.0では、IDやNAMEに "_" や ":" が使えると書いてある。つまり、SGML宣言の

    LCNMCHAR ".-_:"
    UCNMCHAR ".-_:"

の部分だ。SHORTTAG YES はデフォルトなので、HTML4.0では、属性値に "_" や ":" を含む文字列を与えるときに、引用符で囲まなくてもよいということになる。


HTML3.2 top

HTML3.2のDTDでは、<INPUT>などが<FORM>の外にも書けるようになっているが、HTML 3.2 Reference Specification では "INPUT, SELECT and TEXTAREA are only allowed within FORM elements." と書かれていて矛盾しています。これはおそらくDTDの方が正しい。HTML 4.0 Specification 17.2 Controls では、"The following control elements generally appear within a FORM element declaration. However, these elements may also appear outside of a FORM element declaration when they are used to build user interfaces." と<FORM>の外側に書けるようにした理由が書かれている。
Mozillaでは、<INPUT>などを<FORM>の外に書くと、そういう要素は無視されて表示されない。MSIEでは表示される。

HTML3.2 のDTDには、実体宣言に &quot; が欠落しています。これはW3Cも認めている誤りです。完全DTDベースの W3C HTML Validation Service ではエラーになりますが、補正してある Another HTML-lint ではエラーになりません。


HTML3.0 top

HTML3.0 (Arena) は、すでに破棄されてしまった仕様です。このHTMLは仕様が大きく、ちょっと荷が重かったのですが、かなり手抜きをして何とか規則ファイルを作ることができました。
DTDの次のような記述は実装されていません。

短縮参照は、<MATH>タグなど用に宣言されていて、X2 みたいな表現を、X^2^ と書くだけで済まそう、とかいう代物で、他にもいろいろな短縮形が宣言されています。記法宣言は<STYLE>で行なわれています。


HTML+ top

HTML+ は、http://www.w3.org/MarkUp/HTMLPlus/htmlplus_1.html を基にしていましたが、最近になって、より新しい DTDの存在を知りました。 (2008/02/19)

DTDに次のような部分がある。

    <!ENTITY mdash  SDATA "[ndash ]"--=em dash-->

"[ndash ]" は "[mdash ]" の誤りだろう。 また、

    <!DOCTYPE htmlplus [
       <!ENTITY % HTML.tables "INCLUDE">
       <!ENTITY % HTML.forms "INCLUDE">
    ]>

のようにして、拡張しろみたいなことが書かれていて、コアのDTDではTABLE等は使えなくなっている。

    <!ENTITY % HTML.tables "IGNORE">
    <!ENTITY % HTML.figures "IGNORE">
    <!ENTITY % HTML.emph "IGNORE">
    <!ENTITY % HTML.forms "IGNORE">

上記をINCLUDEして規則ファイルを作成してあります。

    <!ENTITY % HTML.math "IGNORE">

HTML.mathはIGNOREのままです。 HTML.mathとHTML.figuresは背反していて、HTML.figuresをINCLUDEすると、HTML.mathの要素MATHがどこからも参照されなくなる。

    <![ %HTML.figures [ <!ENTITY % text "#PCDATA|A|IMG|FIG|%emph;|%misc;"> ]]>
    <!ENTITY % text "#PCDATA|A|IMG|%emph;|%misc; %math;">

HTML+は、HTML文書を<HTMLPLUS>~</HTMLPLUS>で囲むことになっていて、ちょっと異色だ。つまり、

    <!DOCTYPE HTMLPLUS [ ~ ]>

となっている。
文字参照の定義をHTML1.0のDTDからコピーしたらしく、&amp;と&lt;に同じ間違いがある。&quot;などがあるように書いてあるけど、DTDには欠落している。

DTD中の次の部分

    <!ELEMENT HTMLPLUS O O ((HEAD, BODY) | ((%setup;), (%main;)*))>
    <!ELEMENT HEAD - - (%setup;) -- delimits document wide properties -->
    <!ELEMENT BODY - - (%main;)* -- delimits the document's body -->

は次のように書き換えた。

    <!ELEMENT HTMLPLUS O O (HEAD, BODY)>
    <!ELEMENT HEAD O O (%setup;) -- delimits document wide properties -->
    <!ELEMENT BODY O O (%main;)* -- delimits the document's body -->

これは、オリジナルと若干の意味の相違がある。つまり、オリジナルでは、HEADやBODYの開始タグを書いて終了タグを書かないなどということが禁止されている。
また、ADDRESSとBLOCKQUOTEが定義されているがどこからも参照されていない。


HTML2.0 top

HTML2.0は破棄されました。(RFC2854)


HTML2.0では、以下のようなDTDのヴァリエーションが書かれていますが、Another HTML-lint では、DOCTYPEにどれを書いてもすべて同じ扱いです。


HTML1.0 top

参考までに、HTML1.0のDTDも見てみました。実用的価値は皆無です。(1998/07/07)
DTDの以下の部分を修正しました。

    <!ENTITY % bodyelement
             "P | %heading |
             %list | DL | HEADERS | ADDRESS | PRE | BLOCKQUOTE
            | %literal">

HEADERS というのがどこにも出て来ないので削除した。

    <!ENTITY amp "&amp;" -- ampersand -->
    <!ENTITY lt "&lt;" -- less than -->

は、それぞれ、"&#38;""&#60;" とした。

よく見ると、HTML1.0でも<PRE>内に<IMG>は書けない。Laura Lemay女史は、何を参考にしたのだろうか。HTML+では<PRE>内に<IMG>が書けるのだが、こういう都合のいいところだけ先取りしていたのだろうか。


Mozilla top

HTML Tag Reference (1998/01/26) には記述がないが、<TABLE BACKGROUND> が有効なようだ。<TD>、<TH>なども。いつから有効は、例えば http://www.blooberry.com/indexdot/html/supportkey/t.htm に記述がある。(2000/01/22)


1998/04/24版のHTML4.0の 3 On SGML and HTML を MacのMozilla(4.05/PPC)で開こうとするとMozillaが死ぬ。死なないようにするには、スタイルシートを無効にするか、41行目の <dfn> を削除すればいい(</dfn>も)。


Navigator/Communicator(Mozilla)のDTDは存在しないらしいので、HTML2.0/HTML3.2のDTDをベースに、Netscape社の HTML Tag Reference (1998/01/26) を参考にして捏造しました。その際、リファレンスの納得のいかない記述は曲解しました。それらや疑問点は以下のとおりです。また、リファレンスはDTDに比べて正確さが格段に落ちるため、DTD化にあたってはHTML2.0/HTML3.2を踏襲しています。これらにない部分は、HTML4.0を参考にしています。

ソースが公開されているのだから、その気になればこういったことの実装を確認できるんだけれど、あまりやる気がないなぁ。

Netscape社の作ったものじゃないですが、MozillaのDTDがWebTechsのサイトにあることを発見しました(1997/07/31)。しかし、古いし、あまりよくありませんでした。

Mozilla4.0 DTD
Mozilla3.0 DTD
Mozilla2.0 DTD

MSIE5.0 top

MSIE5.0に対応したリファレンスがある。しかし、例によって内容は不正確だし矛盾だらけである。(1999/07/29)
きわめてお粗末な DynamicHTML のプログラミングのために、自社製品のIE5上でもランタイムエラーが頻発する。しかも、ダイナミックに変更されたものがすべて表示されているかというと、ちょん切れていたりするから始末が悪い。つまり、Members/Attributes に全属性が表示されている保証はない。再読込みしたり、All を選んだりと試行錯誤が必要だ。まあ、どうせ信用性に乏しいので、たいした問題ではないとも言える。MSIE4.0のときの問題点は、ほとんど解決されていないと思ってよい(問題意識がないのだろう)。<SCRIPT>のコメントは直っているみたいだけど。

<HTML XMLNS:namespace> と <XML> を解釈するようにしたが、XML名前空間などをちゃんと評価はできない。(1999/10/31)

MSIE5.5 DTD
MSIE5.0 DTD

MSIE4.0 top

MSIE4.0では、</P>の直前に<BR>があると、</P>が無視されるように見える。Mac版だけか? さらに、VScriptをサポートしてないって出るぞ。自分とこのページにわんさと使ってるのにいいのか?

MSIE4.0のリファレンスが公開されているのだが、ひどいねこりゃ。ダウンロードイメージがないので、あとでゆっくりというわけにいかないことからしてけしからんのだが、目次に挙がっているのと内容が一致しない、ナヴィゲーションが正しくない、ただ並べてあるだけで意味を理解させようとしているとは思えない(多くの属性の意味不明だ)、記述の正確さは微塵もない、HTMLソースはぐちゃぐちゃ(ど素人が書いたとしか思えん、FrontPageかも)。タグリファレンスのMembersって何だ? MSIE3.0と上位互換性がない。(1998/07/04)

MSIE4.0 DTD

MSIE3.0 top

MSIE3.0のリファレンス(注:デッドリンクです)に対する代表的な疑問点を挙げておきます。これらに対する規則ファイルの修正は、明記されていない場合は行なっていません。ちなみに、このリファレンスはものすごく雑です。漏れや矛盾がぼろぼろあります。"Last Updated: October 24, 1996" なんてことでは、このリファレンスも信頼に足るものではないかも知れません(ベータ版DTDよりも古い!)。

MSIE3.0のスタイルシート対応はめちゃくちゃです。font-size:2em の em を解釈しないので、この場合 2pt または 2px で表示されるようです。この、Another HTML-lint のHTMLは、見出し部などにこのような指定があるため、MSIE3.0ではうまく表示できません。スタイルシートを無効にすればちゃんと表示されます。

MSIE3.0 DTD

MSIE3.0β top

MSIE3.0はベータ版DTDが公開されています。このDTDには独自のDOCTYPEなどもちゃんと定義されているのですが、内容が古く、現在のMicrosoftのサイトで公開されているリファレンスとは大きく食い違っています。
公開されているベータ版DTDは、著者自らがいくつものバグやおかしな記述があることを述べています。以下はこのDTDを利用するにあたってのいくつかの疑問点です。これらに対する規則ファイルの修正は、明記されていない場合は行なっていません。

Strict版と非Strict版の両方用意されていますが、Strict版の方は採用しませんでした。

上がすでにデッドリンクなので → MSIE3.0β DTD

WebExplorer top

IBM WebExplorer 1.1 は、最近更新されているのかいないのかわからないけど、どうやら見捨てられてしまっているらしい。資料がほとんどないので、サポートしているタグに何があるのかよくわからない。独特な<ANIMATE>などのタグを解釈するようにはしてみたものの、いまいちです。HTML2.0ベースらしいんだけど、それほど互換性があるようにも見えないしなぁ。今更、こんなのやったってしょうがないといえば、そのとおりです。

WebExplorer1.1 DTD

NCALS HTML2.0 top

DTD for NCALS HTML2.0。なんか昔とDTDがちょっと違うみたいな気がする。(2002/04/17)


DTD for NCALS HTML2.0 というのがあります。しかし、このDTDは相当おかしな代物です。

こんなのを信じろというのが無理な話です。


ISO/IEC 15445 top

ISO/IEC 15445:2000 が改訂されている。FORMに関する改訂など、いろいろと手が加えられているが、DOCTYPEの変更はない。この変更に伴って、1999版DOCTYPEは受け付けなくした。(2001/03/20)

DTD中には、<!ENTITY % Preparation "IGNORE"> という制御用のパラメタが定義されている。これは最終的なHTMLとしてはIGNOREとなるべきものだが、準備段階の文書に対してINCLUDEとして適用すると、<H1><H6> の出現に関して厳密な構造を要求されるようになる。つまり、<H1> の次に <H3> が現れてはならない。<H1> を独立トップページにして、その下位の(複数の) <H2> を別のページに独立させることはできない。

この Preparation に対するDOCTYPEは特に用意されていないが、

     <!DOCTYPE Pre-HTML PUBLIC "ISO/IEC 15445:2000//DTD HTML//EN">

などとして Preparation に対応させた。HTMLは <Pre-HTML></Pre-HTML> で囲まれる。


ISO/IEC 15445:2000 は、1999からDTDの変更はない。この ISO/IEC 15445:2000 を翻訳したものが 日本工業規格 JIS X 4156:2000 となっている。(2000/11/28)


ISO/IEC 15445、いわゆる ISO-HTML はまだ策定作業中です。作業中であるが、せっかく公開されていることでもあり、そこにあるDTDを組み込んでみました。HTML4.0 にあって 15445 にないパラメタ参照、例えば

    <!ENTITY % Charset "CDATA">
    <!ENTITY % LanguageCode "NAME">

などを補って、DTDに多少手を加えました。(1999/05/01)


HTML4.0 Mobile top

HTML 4.0 Guidelines for Mobile Access (1999/03/15版) は、モバイル用コンテンツ作成者に向けたアクセス性などに関する注意書きなどをまとめたものです。この文書自体、単なるガイドラインに過ぎず、含まれるDTDは参考程度のものでしかない。が、せっかくDTDがあるので、組み込んでみた。このDTDは HTML4.0 Strict のサブセットであり、ISO/IEC 15445 のサブセットでもあるから、DOCTYPEにそれらを用いたとしても間違いではない。(1999/05/01)


Compact HTML top

W3Cに Compact HTML というノートがあり、ここにはDTDもある。タグリストの Elements に !- とか !DOCTYPE とか &xxx; とかが並んでるが、これらは Element じゃない。(1999/05/01)

→ わたしが加工した Compact HTML DTD

iモード top

imode XHTML 1.1 になった。 いくつかの属性などが追加された。しかし、それらは iモードHTML5.0 に存在するものである。 DTDの所在は相変わらず不明。(2004/03/03)


HTMLは5.0になった。いくつか属性が追加された。(2003/04/09)


XHTML用という代物が公開された。(2003/02/10)

存在しなければならないDTDがどこに存在するのかわからないので、捏造しなければならない。XHTML-MPをベースにするよりも、既存のiモード4.0用のものをベースにする方が楽だ。
styleの属性値は、タグによってけっこう細かく規定されているようだが、そんなチェックは行なわない。style属性の値はCDATAとする。

→ 捏造した iモード XHTML 1.0 DTD

4.0になった。いくつか属性が追加された。(2002/06/19)


3.0になった。<OBJECT> と、<A> の属性が追加された。(2001/03/13)


1.0 にあった一部の制限が、2.0のタグ一覧からは削除されている。また、</P> が明示されるようになったが、</LI> などは出てこない。(2000/05/26)


iモードのHTML Versionが 2.0になっていた。(1999/12/05)
<BLINK> だとか <MARQUEE> だとか <FONT color> だとか、時流に逆らうような改訂であるが、利用者にはありがたいであろう。


NTT DoCoMo の iモードは、タグ一覧が公開されている。HTML3.2ベースと書いてあるが、ベースは明らかにW3Cにある Compact HTML である。iモードはこれをアレンジしたものである。サブセットではない。DTDは Compact HTML を元に作成した。(1999/04/09)

以下の制限はチェックしています。

iモードで利用できる絵文字は、すべて機種依存文字の領域ですが、iモードチェック時には除外しています(SJISでのチェック時のみ)。(1999/10/19)

「iモード」は NTT DoCoMo の登録商標

iモード4.0 DTD
iモード3.0 DTD
iモード2.0 DTD
iモード1.0 DTD

J-SkyWeb top

J-スカイサービス向けHTMLコンテンツ開発ガイド」という文書があり、そこには文字参照ができないことが明記されていました。

だいぶタグが追加されていた。また、ステーション対応とかいうよくわからん機種があって、それだと、通常のJ-Sky対応機種よりも扱えるタグが多い。(2000/10/19)


J-フォン東京株式会社スカイウェブの情報サービスメニュー向けのHTMLが公開されている。独自拡張した属性が多くあり、MML(Mobile Markup Language)という言語をベースにしている。W3Cにあるものではない。
利用者はHTMLで文書を記述しサーバに置く。スカイウェブサービスセンターは要求のあったHTMLを取得し、MMLに変換して端末に送信する。利用者がMMLそのものを意識する必要はない。(2000/06/18)

制限の多い SkyWeb には対応していません。

J-SkyWeb Station DTD
J-SkyWeb DTD

ドットi top

東京電話アステルのドットiと称する独自のHTML仕様が公開されている。iモードと非常によく似ているが、ちょっと違う。(2000/10/26)

ドットi DTD

H" top

DDIポケットの H" では、H"LINK対応機でHTMLの閲覧ができるそうである。(2002/04/09)

「オープンネットコンテンツ」では、専用に作成されたインターネット上のホームページをH"LINK(Pメー ルDX)対応端末を使って閲覧することができます。

とのことである。「オープンネットコンテンツ」とはなんぞや。仕様書によると、

DDIポケットが提供するセンターを利用して、freeH"/H"およびPメールDX対応PHSから、インターネット上のWWWサーバに置かれたDDIポケットのオープンネットコンテンツ用に作られたホームページへのアクセスを可能にするものです。

だそうだ。

通常のHTMLと共通のタグは、<BR>、<P>、<HR> のみで、ハイパーリンクなどは特殊な方法で指定する。


HDML top

流行らないHDMLでは利用者が増えないと悟ったか、au は、XHTMLでのサーヴィスも始めた。一応、XHTML Basic と謳ってタグ一覧が公開されている。tu-ka にはXHTMLの記述はない。(2002/04/08)

この au のXHTMLをどのように扱うかは難しい。DTD不在のくせにもっともらしい宣言だけは用意されていて、あいまいなXHTMLもどきの仕様しかないから、たちが悪い。 仕様としては、HTML変換仕様の方が詳しいようだ。

いろいろ読んでいくと、結局ベースにはHDMLがあるようで、それならそれでOPENWAVEのXHTMLとは相容れないんじゃないかと思えてくる。


EZwebなどで利用されている HDML(Handheld Device Markup Language)はHTMLではない。W3CにもDTDではなくBNFとして文法が示されている。だからSGMLでもない。

無理矢理DTDを作れば文法チェックできない話ではない。ただし、そのときでもデータ領域か、ファイル名の指定でのチェックとなる。HTTPでのアクセスはできない。


XHTML Mobile Profile top

OPENWAVEが開発者向けに Extensible Hypertext Markup Language Mobile Profile (XHTML-MP) 1.0 の仕様を公開している。完全なDTDを取得できる。
XHTML-MPは、携帯電話やPDA、TVベースWebブラウザなど向けの仕様である。また、XHTML1.0 (HTML 4 の XML 版) の簡略版である XHTML Basic のスーパセットであり、CSSをサポートしている、と書いてあるが、XHTML Basic は XHTML1.1のサブセットであるから、のっけから間違っている。本当に XHTML Basic のスーパセットかは面倒なので確認していない。(2002/04/08)


特許出願用HTML top

特許庁では、HTML形式の書類によるパソコンでの特許の電子出願を受け付けています。ただし、専用のソフト(1998/12現在のバージョンは01.02b)を申請して取得しなければなりません。ソフト自体は無料です。また、パソコンはWindows95/NTのみを想定しているようですし、ISDN回線によるダイアルアップ接続のみをサポートしています。

ここで用いられる特許出願用HTMLはかなり異様なもので、SGMLとしての体裁を有していません。タグの少なさ以外に、特筆すべき性格として以下のようなものがあります。(*) 印の項目が例外扱いされて、チェックされたりされなかったりします。

特許庁では、出願された文書を規定によって(HTMLではない文書に)再整形するわけですが、なぜ出願文書をこんなへんてこりんなHTMLにしたかは不明です。

特許出願用 DTD

RFC2368 top

RFC2368は、RFC1738で定められている mailto: URL の構文の拡張を定義したものです。ここでは、mailto: URL が次のように定義されています。

     mailtoURL  =  "mailto:" [ to ] [ headers ]
     to         =  #mailbox
     headers    =  "?" header *( "&" header )
     header     =  hname "=" hvalue
     hname      =  *urlc
     hvalue     =  *urlc

これに対していくつか疑問があります。ご存知の方は k16@chiba.email.ne.jp までお教えくださるとありがたいです。(1999/08/03)


RFC2396 top

RFC2396は、RFC1738をその後の経緯を踏まえて、一般化したURI構文を規定するものです。ここに書かれている構文で、「おや?」と思ったことを挙げてみます。(1999/08/28)

top


Updated: Jan 10, 2011
Created: Jun 19, 1997 [an error occurred while processing this directive]