HTML Tiny Reference (β5)

  1. 雑多なこと
    1. 要素
    2. 用語
    3. その他
      1. 文書型宣言の省略
      2. 最小のHTML
      3. Tableの内容

雑多なこと

要素

たまに見聞きする、HTML 3.2 以前の要素、メーカー独自の要素、出所不明の要素などです。 HTML 4, XHTML, ISO/IEC 15445:2000 以外の文書型で定義されているものを中心に挙げています。

XMP, LISTING, PLAINTEXT
いずれも HTML 3.2 で定義されていますが、HTML 4.0 で廃棄となりました。 HTML 4.01 StrictではPRE要素を使用してください。
LH
'List Header' のことです。HTML 3.0 で定義されています(LH)。 しかし HTML 3.0 自体、とうの昔に廃棄された仕様ですので、お目にかかることはないでしょう。
NOBR, WBR
それぞれ 'No Break', 'Word Break' の略です。 改行を抑制するのだそうです。
LAYER, NOLAYER
レイヤーだそうです。詳細不明。
NOFRAME
'NOFRAMES' の誤りでしょうか? Netscapeの非公開仕様にはこの名があるらしいです。
文字が点滅するらしいです。 Mozilla, Microsoft Internet Explorer で定義されています。 CSSで同等の機能が提供されています(CSS1 text-decoration)。
MARQUEE
文字がスクロールするのだそうです。 Microsoft Internet Explorer で定義されています。
EMBED
オブジェクトを割り当てます。 Microsoft Internet Explorer で定義されています。

用語

誤解されやすい用語や事項、意味不明な用語などです。

HTML 4.0 ?
HTML 4.01 の前身となる文書型です。 HTML 4.01 の勧告により、HTML4.0 は廃棄となりました。 これから新しく HTML 4 を使用するのでしたら、よほどの理由がないかぎり、わざわざ廃棄された仕様を持ち出す必要はないでしょう。
HTMLはプログラミング言語?
HTML, XML等のSGML[J]系言語は、マークアップ言語と呼ばれ、プログラミング言語とは区別されます。
タグ = 要素?
タグはタグ、要素は要素です。概念が違います。
文書中の要素(段落、見出し、アンカーなど)を、 タグでマーク付けしたものがHTMLであると言えます。 タグは、要素に目印をつける(マーク付けする)ための単なる記号・文字列でしかありません。 要素は、タグでマークされていようがいまいが、そこに存在します。
コメントタグ?
<!-- --> は、コメントタグではありません。マーク宣言の一種です。
マーク宣言?
<! 〜 > は、SGML[J]ではマーク宣言と呼ばれます。 文書型宣言を示す <!DOCTYPE 〜 > 、 コメント宣言を示す <!-- 〜 --> はおなじみでしょう。 ほか、CDATAブロックを示すマーク区間 <![CDATA[ 〜 ]]> や、 無視されるべきブロックを示すマーク区間 <![IGNORE[ 〜 ]]> などがあります。ただ、マーク区間については、サポートしているユーザエージェントは少ないようです。
エンプティタグ?
<IMG><BR> は空要素タグではありますが、エンプティタグとは言いません。 エンプティタグとは、<></> のことです。
このエンプティタグ、HTML 4 では使用しても良いのですが、 ユーザエージェントが正しく解釈できるとは限りませんので、できれば使わないほうが無難です。

その他

HTMLにまつわる事項をまとめてみました。 誤解されやすい事柄、どうでもいいようなことを中心にピックアップしています。

文書型宣言の省略

省略してはいけません。 よく、文書型宣言のないHTMLらしき文書を見かけますが、文書型が宣言されていないと、 どの仕様に基づいたHTMLなのかがわからず、ユーザエージェントが混乱します (現に、文書型によって挙動を変えるWebブラウザが存在します)。RFC1866 では、

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

This document type declaration refers to the HTML DTD in 9.1, "HTML DTD".

NOTE - If the body of a `text/html' message entity does not begin with a document type declaration, an HTML user agent should infer the above document type declaration.

つまり、「HTMLでもし文書型宣言が無い場合、HTML 2.0とみなす」 ということになりますが、RFC1866RFC2854により廃棄されています。 そもそも、文書型宣言がない時点でHTMLの仕様から外れていますので、そういった文書がどのように解釈されても文句は言えません。

最小のHTML

HTML 4.01 Strict の仕様を満たす最小の文書は、例えば、

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<TITLE>?</TITLE>
<HR>

です。文法は間違っておりません。もっとも、これでいったい何を表現したいのか、さっぱりわかりませんが。

HTML 4 では、条件さえ満たせば、HTML, HEAD, BODYタグは全て省略できます。 ただし、TITLEタグとその内容(中身)は省略できませんし、 HTML 4.01 StrictではBODY要素には1つ以上のブロック要素が必要です。

Tableの内容

Table要素の内容定義は、文書型ごとに微妙に異なっています。DTDには以下のように定義されています。 細かいことですが、文書型を変更するときには、気をつけた方がよいでしょう。

HTML 4.01 Strict DTD, ISO/IEC 15445:2000 DTD
(CAPTION?, (COL* | COLGROUP*), THEAD?, TFOOT?, TBODY+)
TBODY が必須となっています。TR 要素を直接持つことはできません。 しかし、TBODY 要素が1つの場合に限り、TBODY タグは省略可能ですので、 TABLE 要素に直接 TR タグを記述することはできます。
TBODY タグが省略されていると、 TABLE 要素の直下に TR要素があるように見えますが、 TBODY 要素はきちんと存在しています。
XHTML 1.0 Strict DTD
(caption?, (col* | colgroup*), thead?, tfoot?, (tbody+ | tr+))
tr 要素を直接持つことができますが、tbody と直接共存することはできません。排他関係になっています。 つまり、table 要素の直下に tr 要素が出現した場合は、 その table 要素は直接 tbody 要素を持つことができません。 その逆も然りです。thead, tfoot はこの条件に依らず、出現し得ます。
XHTML 1.1 DTD
(caption?, (col* | colgroup*), ((thead?, tfoot?, tbody+) | (tr+)))
tbody が出現したときは、thead, tfoot が出現しても良いのですが、 table 要素が直接 tr 要素を持つ場合には、thead, tfoot, tbody のいずれも出現できないとなっています。
XHTML basic 1.0 DTD
(caption?, tr+)
head, tfoot, tbodyそのものがありません。