HTML や SGML の文法に関する Q&A です。
いちおう、HTML4.01 12.2.1 辺りには、
Anchor names should be restricted to ASCII characters. Please consult the appendix for more information about non-ASCII characters in URI attribute values.
ということで、ASCII 文字だけに制限すべきだと書かれています。must be ではなく should be ですから、どうしても ASCII でなければならないというわけではないようですが、ASCII 文字だけにしておくのが無難でしょう。
A要素の name属性で指定するのでしたら問題ありません。A の name属性はその名に反して CDATA 型の属性ですから、数字だけの名前を指定することもできます。
しかし、id 属性でアンカーを指定する場合には注意が必要です。id のデータ型は id ですから、この属性値は名前開始文字で始まることが要求されます。要するに、アルファベットで始まらなくてはなりません。
互換性を考えるなら、アルファベットで初めておいた方が無難のような気がします。
HTML3.2, HTML4.0 では16色に名前が付けられています。black, green, silver, lime, gray, olive, white, yellow, maroon, navy, red, blue, purple, teal, fuchsia, aqua です。これだけです。
これ以外の色は、おそらくブラウザメーカーが勝手に定めたものだと思われます。世間一般に通用する保証は全くありませんので、色名を使わずに RGB 値で表現するべきでしょう。たとえば "gold" という指定は "#FFD700" とします。Another HTML-lint の色見本が参考になるでしょう。
その話の出所は HTML4.01 Spec 1.2.1 のこの記述でしょう。
Element names are written in uppercase letters (e.g., BODY). Attribute names are written in lowercase letters (e.g., lang, onsubmit). Recall that in HTML, element and attribute names are case-insensitive; the convention is meant to encourage readability.
この文章の記載されている文書のタイトルに注意してください。"1 About the HTML 4 Specification" は、「この仕様書について」述べているところです。1.2 では、この仕様書の読み方について説明されており、それに続いて上記の文章が現れます。「要素名は大文字で、属性名は小文字で書く」と言っているように読めますが、それはこの仕様書の中ではそのように書く、と言っているに過ぎません。また、その後には「HTML では要素名属性名の大文字小文字を区別しないことを思い出してください」「この取り決めは読みやすくすることを意味しています」と書かれています。どう見ても大文字の書き方を推奨しているようには読めません。
HTML では要素名や属性名の大文字小文字は区別されませんので、どのような書き方をしても構いません。<HTML> も <html> も <Html> も <hTmL> も同じです。ただし全角アルファベットは別の文字とみなされますので 「<HTML>」などと書いてはいけません。
ただし、XML では要素名や属性名の大文字小文字を区別するので注意してください。XHTML1.0 では、要素名も属性名もすべて小文字で定義されていますので、これは全て小文字で書かなければなりません。何かの機会に XHTML に移行するようなことを考えると、HTML でもすべて小文字にしておくのが良いかも知れません。
私が聞きたいくらいです。WORD97 が吐き出す HTML は、私の知るどの HTML 仕様にも適合しません。このような謎の「HTMLモドキ」を生成するツールは、WORD 以外にもたくさんあります。
ちなみに、WORD にはやたらに <FONT FACE> を吐き出すという癖があります。生成される HTML は、かなり酷いものです。専用のツールではないのですから、仕方がないのかも知れませんが……。
HTML4.0 で定義されているイベントは、以下の通りです。
onload, onunload, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onfocus, onblur, onkeypress, onkeydown, onkeyup, onsubmit, onreset, onselect, onchange
onresize は存在しません。お察しの通り、それは IE4.0 の独自拡張のようです。Microsoft社のリファレンスを見ると、独自のイベントとして、
onafterupdate, onbeforeupdate, onhelp, onlosecapture, onpropertychange, onreadystatechange, onresize, onrowenter, onrowexit, onscroll
……があるようです。(もっとも、このリファレンスはあまり信用できる代物ではありません)。
HTML4.0 には onresize の代替になるようなものは存在しません。あきらめるか、開き直って onresize を使ってしまうかのどちらかでしょう。
私は "element" を「要素」、"End Tag" を「終了タグ」と呼んでいますが、「エレメント」「終タグ」と呼んでも間違いではないと思います。
さて IFRAME ですが、HTML4.01 Transitional の loose.dtd を見ると、IFRAME 要素はこのように定義されています。
<!ELEMENT IFRAME - - (%flow;)* -- inline subwindow -->
開始タグ終了タグ共に必須で、中身は %flow; です。%flow; はブロック要素とインライン要素をまとめたもので、たいていの要素は書けると思って良いでしょう。
問題はこの中身の意味するところですが、ここには IFRAME 未対応のブラウザや、フレーム機能をオフにしているブラウザに対する代替表示を指定します。
たとえば、このようにします。
<IFRAME src="document1.html" height="50%" width="50%"> <P><A href="document1.html">文書</A>を参照して下さい。</P> </IFRAME>
こうしておくと、フレームに対応していないブラウザでも、リンクを辿って document1.html を参照することが可能になるわけです。