目次 | はじめに | ゲートウェイサーヴィス |
---|---|---|
いくつかの覚え書き | 簡易ゲートウェイ | |
htmllint.cgiの使い方 | 結果の解説 | |
htmllintの使い方 | ||
規則ファイルの生成 | タグ一覧 | |
ダウンロード | 色見本 | |
メーリングリスト | ||
参考までに | ||
よくある質問と答 | ||
謝辞 | 作者にビールをおごる |
55,839 lints / 0 visits / since Jan 6, 1998
慶應義塾大学内のサイトはW3Cをミラーしているわけではないそうです。
結果の解説に、どうしてもブロックレベル要素とインライン要素の話が出て来てしまう。ここら辺は、なるべくうやむやに、しかし間違いではないように、妙な気を使って書いていましたが、だんだんとそうもいかなくなってきました。これらを解説しようとすると、どうしたってHTMLの基礎を解説することになっちまって、かなりの馬力が必要です。困ったな。他にいくらでも優秀なサイトがあるので、そっちを見てもらうことにしよう。
Jcode.pmを使ってUTF-8をハンドリングしています。いくらか制約があります。
\xa2\xf7
のように変換されます。
(1999/07/15)
XHTML™ 2.0 のドラフトが出ています。DTDが見つからないので対応できません。 (2002/08/08)
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は、2000/12/19 に勧告されました。
XHTML™ BasicというXHTML1.1のサブセットもある。これは、携帯電話やPDAなどの小型情報機器向けの仕様になっていて、イメージ、フォーム、基本的なテーブルなどが含まれています。
規則ファイル作成にあたっては、xhtml-framework-1.mod 内の xhtml-arch.module を IGNORE にしました。
(2000/03/27)
XHTML™ 1.0 (Second Edition) が勧告されていました。
<base href> が #REQUIRED になってめでたしめでたし。
(2002/08/08)
XHTML™ 1.0はHTML4をベースにしたXMLで、HTMLとしての上っ面だけ見ると次のような特徴があります。
○ | <a href="http://k16.org/"> |
× | <A HREF="http://k16.org/"> |
○ | <p>ほにゃらら</p><p>ぴー</p> |
× | <p>ほにゃらら<p>ぴー |
○ | <ol start="5"> |
× | <ol start=5> |
○ | <dl compact="compact"> |
× | <dl compact> |
/>
で終わらせる。(/>
の前には空白を空けるよう薦められています)/>
で終わらせるのは、単なる短縮形です。非空要素タグを短縮形で書くことは禁止されています。
○ | <img src="panda.jpg" alt="panda" /> |
○ | <img src="panda.jpg" alt="panda"></img> |
△ | <img src="panda.jpg" alt="panda"/> |
× | <img src="panda.jpg" alt="panda"> |
× | <td /> |
]]>
を記述することはできません。CDATA以外のマーク区間では、<
、&
も記述することはできません。つまり、]]>
を含むスクリプトやスタイルシートの記述を直接HTML中に埋め込むことはできませんし、--
などを含ませることも薦められていません。そのようなときは外部にスクリプトやスタイルシートを用意しなければなりません。
○ | <script> |
△ | <script> |
× | <script> |
× | <script> |
○ | <script> |
と、ここまではチェックしています。この他にも、次のようなのがあります。
(2000/02/08)
HTML4.0は、HTML4.01 に改訂されました(1999/12/24)。これに伴って HTML4.0 は obsolete になっています。
それほど多くの改訂があるわけではありません。次の属性が追加されています。
あとはいくらかのDTDの修正などです。
仕様書本文にも、いろいろ修正がありますが、ちゃんとは目を通していません。(1999/09/12)
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も認めている誤りです。完全DTDベースの W3C HTML Validation Service ではエラーになりますが、補正してある Another HTML-lint ではエラーになりません。
HTML3.0 (Arena) は、すでに破棄されてしまった仕様です。このHTMLは仕様が大きく、ちょっと荷が重かったのですが、かなり手抜きをして何とか規則ファイルを作ることができました。
DTDの次のような記述は実装されていません。
短縮参照は、<MATH>タグなど用に宣言されていて、X2 みたいな表現を、X^2^ と書くだけで済まそう、とかいう代物で、他にもいろいろな短縮形が宣言されています。記法宣言は<STYLE>で行なわれています。
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からコピーしたらしく、&と<に同じ間違いがある。"などがあるように書いてあるけど、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は破棄されました。(RFC2854)
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"
参考までに、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>が書けるのだが、こういう都合のいいところだけ先取りしていたのだろうか。
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)。しかし、古いし、あまりよくありませんでした。
MSIE5.0に対応したリファレンスがある。しかし、例によって内容は不正確だし矛盾だらけである。(1999/07/29)
きわめてお粗末な DynamicHTML のプログラミングのために、自社製品のIE5上でもランタイムエラーが頻発する。しかも、ダイナミックに変更されたものがすべて表示されているかというと、ちょん切れていたりするから始末が悪い。つまり、Members/Attributes に全属性が表示されている保証はない。再読込みしたり、All を選んだりと試行錯誤が必要だ。まあ、どうせ信用性に乏しいので、たいした問題ではないとも言える。MSIE4.0のときの問題点は、ほとんど解決されていないと思ってよい(問題意識がないのだろう)。<SCRIPT>のコメントは直っているみたいだけど。
The OL element is a block element and requires a closing tag.といっていながら Syntax には終了タグがなかったりする。だいたい
closing tagなんてのは正しい用語か。
The NEXTID element does not require a closing tag.とあるのに NEXTID というタグに関する解説はない。
<RUBY>日本語<RP>(<RT>にほんご<RP>)</RUBY>
|
日本語
|
<HTML XMLNS:namespace> と <XML> を解釈するようにしたが、XML名前空間などをちゃんと評価はできない。(1999/10/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がちょっと違うみたいな気がする。(2002/04/17)
DTD for NCALS HTML2.0 というのがあります。しかし、このDTDは相当おかしな代物です。
こんなのを信じろというのが無理な話です。
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)
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>
の要素に含めた。また、属性に NAME と CONTENT がない。タグリストにもあるし、明らかに間違いだろうから、補った。
<SELECT>
の文字数 4Kバイト、<TEXTAREA>
の文字数 512バイトなどという制限が書いてあるが、チェックしていない。
imode XHTML 1.1 になった。 いくつかの属性などが追加された。しかし、それらは iモードHTML5.0 に存在するものである。 DTDの所在は相変わらず不明。(2004/03/03)
HTMLは5.0になった。いくつか属性が追加された。(2003/04/09)
XHTML用という代物が公開された。(2003/02/10)
!--
が要素として解説されており、!DOCTYPE
や ![CDATA[
も要素となった。仕様書の読者層がまったく不明だ。素人相手に意味不明なことを並べて煙に巻くのが目的か。
&XXX;
も要素として解説されている。文字参照は、以前は �~ だったのに、XHTMLでは、わずかな 16進数の文字参照しか示されていない。10進では書けないってこと? これ以外は書けないってこと? この真意は不明。仕様書を尊重したいが、そんなめんどくさいチェックはしたくないのでしない。
XHTMLではbody要素に直接文字列を記述できないためdiv要素またはp要素を介在させるなどとご丁寧な注意書きがある。そんなことはDTDを示してくれれば済む話だ。
style="xxx"
として代替しようという魂胆に過ぎない。<style>
要素には <![CDATA[
を用いた正しい記述が要求されるが、a:link
などのほんのわずかなスタイルしか記述できない。しかも、i-CSSなのに type="text/css"
だ。
存在しなければならないDTDがどこに存在するのかわからないので、捏造しなければならない。XHTML-MPをベースにするよりも、既存のiモード4.0用のものをベースにする方が楽だ。
styleの属性値は、タグによってけっこう細かく規定されているようだが、そんなチェックは行なわない。style属性の値はCDATAとする。
4.0になった。いくつか属性が追加された。(2002/06/19)
3.0になった。<OBJECT>
と、<A>
の属性が追加された。(2001/03/13)
<OPTION VALUE>
の長さ制限がなくなった。
<A>
の subject、body 属性の書式が
<A href="mailto:メールアドレス"?subject="サブジェクト"&body="本文">となっている。どういう積りなのかわからん。引用符の位置を間違えているとも取れるが、属性てんだから属性なんだろう。(注: 2002/03/13現在は訂正されている)
<A KANA>
の値は、属性名などから推察するに、半角カタカナのみのようだが、実際には英数字も登録できるようだ。
<A EMAIL>
の値はURLではない。[email protected] の電話番号部分など。いずれにしても @ の前の部分で、電話番号以外は英数字、ハイフン、ピリオド、下線が許される。
目安として題面(subject)は30バイト、本文(body)は500バイトにしてください」てのがあって、30バイト以下とは書いていないわけだ(題面て何?)。
<CTI>
として記述されている。MULTIPLE属性も <MULTIPLE>
だ。
1.0 にあった一部の制限が、2.0のタグ一覧からは削除されている。また、</P>
が明示されるようになったが、</LI>
などは出てこない。(2000/05/26)
<INPUT TYPE=TEXT>
、<INPUT TYPE=PASSWORD>
の SIZE
や MAXLENGTH
の限界値の制限がなくなった。
<OPTION>
の件数の制限がなくなった。
<TEXTAREA>
の COLS
や ROWS
の限界値の制限がなくなった。
<PLAINTEXT>
が追加されている。HTML3.2の仕様とは異なる。どちらかというと、<XMP>
のように振舞う。
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)
<! ~ >
となっているが、これはあんまりじゃないのか。

までということになっているが、©
など、その範囲を超えた実体参照を使用できることになっていたり、さらに、数多く内蔵している絵文字は、鹿
などととんでもなく大きな値に対応している。これから、
まで参照できるようにしておいた。imode端末文字一覧などが参考になります。
<Hn>
の n は、1~6なんだろうな。
<HTML>
の属性 VERSION
で、HTMLバージョンを指定することができるようだ(DOCTYPEじゃないところがなんともいえないけど)。この属性値は何が指定できるのだろうか。2.0と3.2だろうか。これによってHTML解釈を制御しているのだろうか。
<A HREF="tel:0123456789">
とすれば電話がかけられる。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
の値。
iモードで利用できる絵文字は、すべて機種依存文字の領域ですが、iモードチェック時には除外しています(SJISでのチェック時のみ)。(1999/10/19)
「iモード」は NTT DoCoMo の登録商標
「J-スカイサービス向けHTMLコンテンツ開発ガイド」という文書があり、そこには文字参照ができないことが明記されていました。
だいぶタグが追加されていた。また、ステーション対応とかいうよくわからん機種があって、それだと、通常のJ-Sky対応機種よりも扱えるタグが多い。(2000/10/19)
J-フォン東京株式会社のスカイウェブの情報サービスメニュー向けのHTMLが公開されている。独自拡張した属性が多くあり、MML(Mobile Markup Language)という言語をベースにしている。W3Cにあるものではない。
利用者はHTMLで文書を記述しサーバに置く。スカイウェブサービスセンターは要求のあったHTMLを取得し、MMLに変換して端末に送信する。利用者がMMLそのものを意識する必要はない。(2000/06/18)
<P>
は空要素タグのようだ。なんと!
<IMG>
はPNGのみサポートしている。実際の表示はBMPに変換してから行なうようだが、そのときのサイズを32KBに収めろと言われても、利用者にそんなことはわかるまい。
<IMG>
の MOTION
属性は、アニメーションを実現するために同一タグ中にいくつも記述することができる。そんなのはSGMLじゃない!ってはじめからMMLって言ってるのか。
<A HREF="tel:0123456789">
とすれば電話がかけられる。
<INPUT MODE>
にはそのような選択肢はない。使えないことはないとは思うが?
&
なんてのは書けるのだろうか。これに関してMMLには言及がない。書けなくする実装は面倒なので ÿ
までは書けるようにしとこう。
<UL>
、<OL>
の入れ子は3階層まで、<LI>
は99個まで、という制限がある。<LI>
の制限は入れ子ごとに独立なのかどうかあいまい。入れ子も含めての制限と解釈した。
制限の多い SkyWeb には対応していません。
東京電話アステルのドットiと称する独自のHTML仕様が公開されている。iモードと非常によく似ているが、ちょっと違う。(2000/10/26)
<A HREF>
などのURLに指定できるスキームは http: mailto: tel: だけだと明記されている。
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では利用者が増えないと悟ったか、au は、XHTMLでのサーヴィスも始めた。一応、XHTML Basic と謳ってタグ一覧が公開されている。tu-ka にはXHTMLの記述はない。(2002/04/08)
この au のXHTMLをどのように扱うかは難しい。DTD不在のくせにもっともらしい宣言だけは用意されていて、あいまいなXHTMLもどきの仕様しかないから、たちが悪い。 仕様としては、HTML変換仕様の方が詳しいようだ。
一般的なタグは市販本を見よと書いてあるので、XHTML(Basic?)で使えるすべてのタグをサポートしているようにも読めるが、HTML変換仕様にないタグは無視されるだけなのかも知れない。
XHTMLでは、以下のようなオーバー・ハングをしてはいけませんということは、XHTMLじゃなければしてもいいのか? オーバー・ハングというのはどこの用語?
<brと/>の間には半角スペースが必要ですということは、詰まっている場合はエラーにしなくちゃならないの? HTMLはXHTMLに限らずどこかの段階でHDMLに変換されるようで、それならこの制限も手抜き実装という意味で頷ける。半角スペースを空けなかったらどうなるのかも知りたい。
<a>タグ内に<img>タグ、<br>タグ等のインライン要素を挿入した場合には、同一リンク先であってもインライン要素ごとに複数リンクが生成されますのでご注意下さいってどういうこと?
いろいろ読んでいくと、結局ベースにはHDMLがあるようで、それならそれでOPENWAVEのXHTMLとは相容れないんじゃないかと思えてくる。
EZwebなどで利用されている HDML(Handheld Device Markup Language)はHTMLではない。W3CにもDTDではなくBNFとして文法が示されている。だからSGMLでもない。
無理矢理DTDを作れば文法チェックできない話ではない。ただし、そのときでもデータ領域か、ファイル名の指定でのチェックとなる。HTTPでのアクセスはできない。
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形式の書類によるパソコンでの特許の電子出願を受け付けています。ただし、専用のソフト(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
これに対していくつか疑問があります。ご存知の方は [email protected] までお教えくださるとありがたいです。(1999/08/03)
urlc
という構文要素は出てきません。RFC822にも出てきません(当然)。RFC2396の uric
のことでしょうか。そもそもRFC1738にこのような構文は書かれていません。話の流れから言うと、uric から ? = & を取り除いたもののようです。
hname
と hvalue
が共に空になり得るので、=
だけのheader部が許されることになりますが、本当にそれでいいのでしょうか。
RFC2396は、RFC1738をその後の経緯を踏まえて、一般化したURI構文を規定するものです。ここに書かれている構文で、「おや?」と思ったことを挙げてみます。(1999/08/28)
URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]URI-reference は空でもよいということだが、ちょっと扱いにくいので、
URI-reference = ( absoluteURI | relativeURI ) [ "#" fragment ] | "#" fragmentとしておこう。
absoluteURI = scheme ":" ( hier_part | opaque_part ) opaque_part = uric_no_slash *uric一般URIとしてはいたしかたないのだが、opaque_part によって怪しげな文字列もマッチしてしまう。absoluteURI はあまり役に立たない。
absoluteURI_hier = scheme ":" hier_partみたいなのを用意しておいた方がいいかも知れない。
abs_path = "/" path_segments path_segments = segment *( "/" segment ) segment = *pchar *( ";" param ) param = *pcharこれによると、segment や param は空でよいので、path_segments も空でもよいということで、abs_path は "/" だけでもよいし、"/////////" のようなのでもよいということだ。segment は ";" だけでもOKなので、abs_path は "/;/;/;/;/;/;/" でもよいということだ。本当にそれでいいのか。
abs_path = "/" [ path_segments ] path_segments = segment *( "/" [ segment ] ) segment = 1*pchar *( ";" param ) | 1*( ";" param ) param = 1*pcharという風に解釈しておこう。
net_path = "//" authority [ abs_path ] authority = server | reg_name server = [ [ userinfo "@" ] hostport ] userinfo = *( unreserved | escaped | ";" | ":" | "&" | "=" | "+" | "$" | "," )userinfo は空でもよいということだが、本当か。server も空でよいので、net_path が "//" だけでもよいということになる。本当か。
net_path = "//" ( authority [ abs_path ] | abs_path ) authority = server | reg_name server = [ userinfo "@" ] hostport userinfo = 1*( unreserved | escaped | ";" | ":" | "&" | "=" | "+" | "$" | "," )という風に解釈しておこう。
IPv4address = 1*digit "." 1*digit "." 1*digit "." 1*digit実際には 0~255 までしか許されないはずなので、次のようにした方がいいかも知れない。
IPv4part = [ "0" | "1" ] digit [ digit ] | "2" ( ( "0" | "1" | "2" | "3" | "4" ) digit | "5" ( "0" | "1" | "2" | "3" | "4" | "5" ) ) IPv4address = IPv4part "." IPv4part "." IPv4part "." IPv4partまた、0.0.0.0 は禁止されているので取り除く必要があるのだが、それは面倒。
query = *uric fragment = *uricこれはつまり、"http://www.uso800.ac.jp/hogehoge.cgi?" とか "http://www.uso800.ac.jp/hogehoge.html#" みたいに書いても問題なしということだ。