| 目次 | はじめに | ゲートウェイサーヴィス |
|---|---|---|
| いくつかの覚え書き | 軽いゲートウェイ | |
| htmllint.cgiの使い方 | 結果の解説 | |
| htmllintの使い方 | タグ一覧 | |
| ダウンロード | 色見本 | |
| 規則ファイルの生成 | ||
| 参考までに | プライマリサイト |
慶應義塾大学内のサイトはW3Cをミラーしているわけではないそうです。
結果の解説に、どうしてもブロックレベル要素とインライン要素の話が出て来てしまう。ここら辺は、なるべくうやむやに、しかし間違いではないように、妙な気を使って書いていましたが、だんだんとそうもいかなくなってきました。これらを解説しようとすると、どうしたってHTMLの基礎を解説することになっちまって、かなりの馬力が必要です。困ったな。他にいくらでも優秀なサイトがあるので、そっちを見てもらうことにしよう。
結果の解説で、文字数制限に「半角換算」というのが出てくる。実際にはおそらくバイト数制限である。JISのように、表示されないエスケープなどが含まれる場合、それも勘定されるのだろうか。そのように処理してしまっていいのかどうかもよくわからない。ここでは勘定されていない。
属性値 CDATA は空でもよい。しかし、DTDでCDATAとされているものの多くは、空では好ましくない。というより、空でよい属性値はしごく少ないんじゃないかと思われる。
ISO/IEC 15445、いわゆる ISO-HTML はまだ策定作業中である。作業中であるが、せっかく公開されていることでもあり、そこにあるDTDを組み込んでみた。HTML4.0 にあって 15445 にないパラメタ参照、例えば
<!ENTITY % Charset "CDATA">
<!ENTITY % LanguageCode "NAME">
などを補って、DTDに多少手を加えた。(1999/05/01)
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進の文字参照ができる。水 みたいに。
HTML4.0では、IDやNAMEに "_" や ":" が使えると書いてある。つまり、SGML宣言の
LCNMCHAR ".-_:"
UCNMCHAR ".-_:"
の部分だ。SHORTTAG YES はデフォルトなので、HTML4.0では、属性値に "_" や ":" を含む文字列を与えるときに、引用符で囲まなくてもよいということになる。
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には、実体宣言に " が欠落しています。これはW3Cも認めている誤りです。
HTML3.0 (Arena) は、すでに廃棄されてしまった仕様です。このHTMLは仕様が大きく、ちょっと荷が重かったのですが、かなり手抜きをして何とか規則ファイルを作ることができました。
DTDの次のような記述は実装されていません。
短縮参照は、<MATH>タグなど用に宣言されていて、X2 みたいな表現を、X^2^ と書くだけで済まそう、とかいう代物で、他にもいろいろな短縮形が宣言されています。記法宣言は<STYLE>で行なわれています。
HTML2.0では、以下のようなDTDのヴァリエーションが書かれていますが、Another HTML-lint では、DOCTYPEにどれを書いてもすべて同じ扱いです。
PUBLIC "-//IETF//DTD HTML//EN"
PUBLIC "-//IETF//DTD HTML 2.0//EN"
PUBLIC "-//IETF//DTD HTML Level 2//EN"
PUBLIC "-//IETF//DTD HTML 2.0 Level 2//EN"
PUBLIC "-//IETF//DTD HTML Level 1//EN"
PUBLIC "-//IETF//DTD HTML 2.0 Level 1//EN"
PUBLIC "-//IETF//DTD HTML Strict//EN"
PUBLIC "-//IETF//DTD HTML 2.0 Strict//EN"
PUBLIC "-//IETF//DTD HTML Strict Level 2//EN"
PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//EN"
PUBLIC "-//IETF//DTD HTML Strict Level 1//EN"
PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 1//EN"
HTML+はやってないんだけど、HTML文書を<HTMLPLUS>〜</HTMLPLUS>で囲むことになっていて、ちょっと異色だ。つまり、
<!DOCTYPE HTMLPLUS [ 〜 ]>
となっている。
文字参照の定義をHTML1.0のDTDからコピーしたらしく、&と<に同じ間違いがある。"などがあるように書いてあるけど、DTDには欠落している。
参考までに、HTML1.0のDTDも見てみました。実用的価値は皆無です。(1998/07/07)
DTDの以下の部分を修正しました。
<!ENTITY % bodyelement
"P | %heading |
%list | DL | HEADERS | ADDRESS | PRE | BLOCKQUOTE
| %literal">
の HEADERS というのがどこにも出て来ないので削除した。
<!ENTITY amp "&" -- ampersand -->
<!ENTITY lt "<" -- less than -->
は、それぞれ、"&"、"<" とした。
よく見ると、HTML1.0でも<PRE>内に<IMG>は書けない。Laura Lemay女史は、何を参考にしたのだろうか。HTML+では<PRE>内に<IMG>が書けるのだが、こういう都合のいいところだけ先取りしていたのだろうか。
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)。しかし、古いし、あまりよくありませんでした。
MSIE4.0では、</P>の直前に<BR>があると、</P>が無視されるように見える。Mac版だけか? さらに、VScriptをサポートしてないって出るぞ。自分とこのページにわんさと使ってるのにいいのか?
MSIE4.0のリファレンスが公開されているのだが、ひどいねこりゃ。ダウンロードイメージがないので、あとでゆっくりというわけにいかないことからしてけしからんのだが、目次に挙がっているのと内容が一致しない、ナヴィゲーションが正しくない、ただ並べてあるだけで意味を理解させようとしているとは思えない(多くの属性の意味不明だ)、記述の正確さは微塵もない、HTMLソースはぐちゃぐちゃ(ど素人が書いたとしか思えん、FrontPageかも)。タグリファレンスのMembersって何だ? MSIE3.0と上位互換性がない。(1998/07/04)
<SCRIPT>
//<!--
...
// -->
</SCRIPT>
という風に書いてある。相当マヌケだ。
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が公開されています。このDTDには独自のDOCTYPEなどもちゃんと定義されているのですが、内容が古く、現在のMicrosoftのサイトで公開されているリファレンスとは大きく食い違っています。
公開されているベータ版DTDは、著者自らがいくつものバグやおかしな記述があることを述べています。以下はこのDTDを利用するにあたってのいくつかの疑問点です。これらに対する規則ファイルの修正は、明記されていない場合は行なっていません。
Strict版と非Strict版の両方用意されていますが、Strict版の方は採用しませんでした。
IBM WebExplorer 1.1 は、最近更新されているのかいないのかわからないけど、どうやら見捨てられてしまっているらしい。資料がほとんどないので、サポートしているタグに何があるのかよくわからない。独特な<ANIMATE>などのタグを解釈するようにはしてみたものの、いまいちです。HTML2.0ベースらしいんだけど、それほど互換性があるようにも見えないしなぁ。今更、こんなのやったってしょうがないといえば、そのとおりです。
DTD for NCALS HTML2.0 というのがあります。しかし、このDTDは相当おかしな代物です。
こんなのを信じろというのが無理な話です。
HTML 4.0 Guidelines for Mobile Access (1999/03/15版) は、モバイル用コンテンツ作成者に向けたアクセス性などに関する注意書きなどをまとめたものです。この文書自体、単なるガイドラインに過ぎず、含まれるDTDは参考程度のものでしかない。が、せっかくDTDがあるので、組み込んでみた。このDTDは HTML4.0 Strict のサブセットであり、ISO/IEC 15445 のサブセットでもあるから、DOCTYPEにそれらを用いたとしても間違いではない。(1999/05/01)
W3Cに Compact HTML というノートがあり、ここにはDTDもある。タグリストの Elements に !- とか !DOCTYPE とか &xxx; とかが並んでるが、これらは Element じゃない。(1999/05/01)
!- はなんだろう。
<DFN>、<ISINDEX> は含まれないはずがDTDに中途半端に含まれている。削除した。
<META> がDTD中でどこからも参照されていない。<HEAD> の要素に含めた。
<SELECT> の文字数 4Kバイト、<TEXTAREA> の文字数 512バイトなどという制限が書いてあるが、チェックしていない。
NTT DoCoMo の iモードは、タグ一覧が公開されている。HTML3.2ベースと書いてあるが、ベースは明らかにW3Cにある Compact HTML である。iモードはこれをアレンジしたものである。サブセットではない。DTDは Compact HTML を元に作成した。(1999/04/09)
<! 〜 > となっているが、これはあんまりじゃないのか。
 までということになっているが、© など、その範囲を超えた実体参照を使用できることになっていたり、さらに、数多く内蔵している絵文字は、鹿 などととんでもなく大きな値に対応している。これから、 まで参照できるようにしておいた。imode端末文字一覧などが参考になります。
<Hn> の n は、1〜6なんだろうな。
<HTML> の属性 VERSION で、HTMLバージョンを指定することができるようだ(DOCTYPEじゃないところがなんともいえないけど)。この属性値は何が指定できるのだろうか。2.0と3.2だろうか。これによってHTML解釈を制御しているのだろうか。
<A HREF="tel:110"> とすれば電話がかけられる。HTML3.2にはない ACCESSKEY 属性をサポートしていて、これと組み合わせれば便利そうだ。
<A> の解説に、タグとして ACCESSKEY が出てくるが、それは明らかに間違い。
ACCESSKEY の値は、表紙とAタグの説明とでは指定できる文字に矛盾がある。
<BR CLEAR> という表現を許すために、<BR CLEAR=CLEAR> を属性値に追加した。
<HR> はヘアライン?? どっから持って来た訳だか。だいたいラインはLだろうが。レはレモンのレと言うのと同じだ。
<IMG> は2階調GIFのみをサポートしている。URLの存在をチェックするようにしていれば、GIFかどうかはチェックされるが、2階調かどうかはチェックできない。
<A> の要素に <IMG> が書けることになっているが、そのように実装されているか確認したい。
</P> が出てこない。他にも </DT>、</DD>、</LI> が出てこない。当然CompactHTMLにはある。
以下の制限はチェックしています。
ACCESSKEY の値。
<INPUT TYPE=TEXT>、<INPUT TYPE=PASSWORD> での SIZE と MAXLENGTH の値。
<OPTION> の件数と、VALUE の長さ。
<TEXTAREA> の COLS と ROWS の値。
特許庁では、HTML形式の書類によるパソコンでの特許の電子出願を受け付けています。ただし、専用のソフト(1998/12現在のバージョンは01.02b)を申請して取得しなければなりません。ソフト自体は無料です。また、パソコンはWindows95/NTのみを想定しているようですし、ISDN回線によるダイアルアップ接続のみをサポートしています。
ここで用いられる特許出願用HTMLはかなり異様なもので、SGMLとしての体裁を有していません。タグの少なさ以外に、特筆すべき性格として以下のようなものがあります。(*) 印の項目が例外扱いされて、チェックされたりされなかったりします。
特許庁では、出願された文書を規定によって(HTMLではない文書に)再整形するわけですが、なぜ出願文書をこんなへんてこりんなHTMLにしたかは不明です。
RFC2368は、RFC1738で定められている mailto: URL の構文の拡張を定義したものです。ここでは、mailto: URL が次のように定義されています。
mailtoURL = "mailto:" [ to ] [ headers ]
to = #mailbox
headers = "?" header *( "&" header )
header = hname "=" hvalue
hname = *urlc
hvalue = *urlc
これに対していくつか疑問があります。ご存知の方はお教えくださるとありがたいです。
urlc という構文要素は出てきません。RFC822にも出てきません。RFC2396の uric のことでしょうか。
hname と hvalue が共に空になり得るので、= だけのheader部が許されることになりますが、本当にそれでいいのでしょうか。
#mailbox にはコンマで区切って宛先を複数並べてもいいようなことが書いてあるのですが、その根拠がRFC822となっており、RFC822からそのような構文を導くことが私にはできませんでした。
mailto:?to=geregere@uso800.ac.jpみたいに書くことも許されていて、このように本来の宛先部分のないときは、
? 以降を %20 やらで符号化しなくていいことになっています。つまり、
mailto:?to=geregere@uso800.ac.jp&subject=はじめまして&body=ほにゃららぴーのように何でもOKということらしいんですが、そのような例外処理はしていません。
このサイトの運営は作者が行なっているわけではありませんのでご注意ください。作者が管理しているのはプライマリサイトだけです。