制作者(webmaster)
野嵜健秀(Takehide Nozaki)
改訂
2002-06-23

html要素

所謂最上位要素です。適切にマーク附けの行はれたHTML文書全體がhtml要素となります。(文書型宣言等を除く)

文書のマークアップが完了した時點で、全ての要素を包含する形でhtml要素を明示出來ます。html要素の外にマーク附けされたテキストを殘してゐてはいけません。html要素の上に書けるのは文書型宣言(とXML宣言)のみです。

無料ウェブサーヴァがHTML文書を送出する時に、html要素の上や下、或は、事もあらうに文書型宣言の上部に、スクリプトやテキストを書き込んで呉れる事があります。意圖は分からなくもないのですが、HTMLの仕樣に對する非道い冒涜であるやうにも感じられます。言歸正傳。

どんな馬鹿にも、その存在はわからうと云ふものですので、html要素の開始タグと終了タグを明示する價値は大變に低い、と言へます。が、開始タグには汎用屬性を記述出來ますし、それによるメリットはあるので、記述を省略出來るけれども、目の敵にして省略すれば良いと云ふものでもありません。

なほ、一つのHTML文書にhtml要素は一つきりです。何囘もhtml要素を書いてはいけません。

共通解説

汎用屬性であるlang(、xml:lang)、dirを記述出來ます。

こと、html要素に關しては、lang屬性を明示するメリットが屡々強調されるものです。日本語のhtml文書ではlang="ja"、英語のhtml文書ではlang="en"を記述するのが望ましい、とされてゐます。書かなければ書かないで、誰か困る奴でもゐるのか、と言はれたりしないでもないですが、書かないデメリットはあつても、書いてデメリットになるものではありませんので、書いておきませう。(HTML/XHTML 1.0)

なほ、id、class、title、styleの各屬性は、記述してはなりません。

ヴァージョン毎に異る解説

HTML 4.01

記述しなくとも、html要素は常に「あるもの」とされます。即ち開始タグ・終了タグの記述を省略する事が可能です。仕樣上もオプションと明記されてゐます。

ただし、htmlの開始タグ或は終了タグが記述されてゐない文書をhtml文書だと認識出來ないUser Agentが、かつては存在したやうです。さう云ふ古いUser Agentが、現在も使用されてゐる可能性はあります。一般に「html要素の開始タグと終了タグは省略すべきでない」と言はれるのは、さう云ふ古いUser Agentとの互換性を考慮しての事です。

繰返しますが、html、head、bodyの各要素の開始タグ・終了タグは、全てオプションです。title要素とマークアップの完了した本文だけが記述されてゐるだけであつても、HTML 4.01の仕樣上はValidです。ただ、その文書をブラウザが常にまともに扱へるかどうかは、保證の限りではない、と云ふ事です。まあ、ウェブで確實な事は一つもないと言へばないのですが。

XHTML 1.0

常に要素の存在を明示しなければなりません。html要素は、開始タグ・終了タグとも、記述の省略が許されません。

屬性に、ネームスペースを指定して下さい。xmlns="http://www.w3.org/1999/xhtml/"を記述します。XHTMLでこの記述は必須です。

XMLでは使用言語を示すのに豫約屬性であるxml:langを用ゐます。屬性に、xml:lang="ja"を記述します。また、互換性維持の爲に、lang屬性も同時に指定すべきだと屡々言はれます(必ずしも必須ではない)。

HTML 4.01 Strict/Transitional

普通の文書にマーク附けを施すと、最終段階で、本文は全てbody要素としてマーク附けされ、その他の情報を空要素の中に納めたhead要素がbody要素の前に記述される事となります。その時點でそれら全ての要素を包むやうにhtml要素を明示します。

必然的に、html要素の直下に置ける要素はhead(×1箇)→body(×1箇)のみとなります(順序は固定)。

HTML 4.01 Frameset/XHTML 1.0 Frameset

HTML 4.01 Frameset/XHTML 1.0 Framesetは、フレーム構造を記述する爲だけに存在するHTMLの規格です。

當然、HTML 4.01 Frameset/XHTML 1.0 Frameset準據の文書では、フレームの記述しかなされてゐない筈ですから、html要素の直下にはhead要素とframeset要素しか出現してゐない筈です。body要素はframeset要素の下のnoframes要素の下にしか出現出來ません。

繰返しますが、HTML 4.01 Frameset/XHTML 1.0 Framesetでは、html要素の直下には、head要素とframeset要素しか出現しません。

ISO-HTML(15445:2000)

開始タグ・終了タグ共に必須。省略不可。

「HTMLの骨骼」神話と云ふ大嘘

以下は、おなじみの「HTMLの骨骼」です。

<html>
<head>
……
</head>
<body>
……
</body>
</html>

この「HTMLの骨骼」は、常に明示されなければならないと云ふ譯ではありません。

世間の殆ど全ての「ほーむぺーじ入門」は、この「骨骼」を過大評價してゐます。この「骨骼」を記述する事を制作者に強要してゐる「入門」が矢鱈とあります。しかし、「HTML文書にはこの『骨骼』を必ず書かねばならない」と「入門」の筆者が制作者に命じなければならない理由は全くありません。

殘念な事に、某方面で非常に高く評價されてゐる神崎正英氏の『ユニバーサルHTML/XHTML』でも、この「骨骼」が示されてゐます。案外、神崎氏の頭も、從來のHTMLの觀念に支配されてゐるやうに思はれます。閑話休題。

html要素、head要素、body要素は、明示されてゐなくとも、(フレームのベースとなる文書を除いては)全てのHTML文書に暗示的に存在してゐます。そして、その存在は餘りにも自明の事です。HTML 4.01以前では、html要素、head要素、body要素の開始タグ・終了タグは全て、省略出來ます。制作者に、「HTMLの骨骼」を明示しなければならない義務は、ありません。

この「骨骼」を「必ず書け」と命じつつ、bodyの中身にいきなり生のテキストを書かせる「ほーむぺーじ入門」の筆者は、HTMLの本質を全く理解してゐない「HTMLの素人」です──「ほーむぺーじのプロ」ではあるのかも知れませんが。讀者は、この手の「ほーむぺーじ入門」が駄目なものである事を理解出來るやうな目を養つて下さい。


もつとも、XHTMLでは、html要素、head要素、body要素の開始タグ・終了タグは全て省略出來ません。ISO-HTMLでも、省略出來ません。

とは言へ、HTMLでもつとも重要で、いかなる場合にも省略出來ない要素はtitle要素のみであると云ふ事實がある事に、變りはありません。html要素、head要素、body要素はtitle要素よりもプライオリティが低い、と云ふ事は、どれほど強調されてもされ過ぎであると云ふ事にはなりません。

世間の「HTML入門」には、「HTMLの骨骼」よりも、title要素が重要であると云ふ事を、きちんと教へるやうになつて貰ひたいものです。