現行のHTML規格で解説したHTML文書型には、全て文書型宣言が付きます。
しかしながら、未だに文書型宣言を持たないHTML文書が少なくありません。
では、文書型宣言は無駄な記述なのでしょうか。
その事を考えて見ましょう。
HTMLには様々な規格があります。
そして、それぞれの文書型に得意不得意があります。
ブラウザはどんな文書型でもとりあえずサポートしている範囲で解釈しようとします。
ですが、もし、文書型によって扱いが全く異なる要素や属性があったとしたら、どうすべきでしょう?
ブラウザが定めている扱いに従ってしまうと、ある文書型ではおかしくなるかも知れません。
適切に思われても、制作する側の意に従っているかどうか…。
結局、文書型宣言を明示する事で、制作者の意思を明示する必要があると思われます。
文書型宣言の無いHTML文書は、この世のHTML文書の半数以上を占めているでしょう。
かつて、HTML 2.0が策定された当時は、文書型宣言の無いHTML文書は、HTML 2.0準拠と見做して良い事にしておりました。
しかしながら、HTML 2.0には<font>要素も無ければ、<table>要素もありません。
つまり、現在ある文書型宣言の無いHTML文書はこの"ローカルルール"にさえ従っていないのです。
この事から言えるのは、文書型宣言の無い文書をHTML 2.0準拠と見做すのは問題が多過ぎると言う事です。
このため、現行のHTML仕様では文書型宣言の無いHTML文書の取扱を規定しておりません。
これは、文書型宣言が無いHTML文書をデタラメに扱っても、ブラウザの責任では無いと言う事を暗示しているのだと思います。
何故なら、全く記述が無いのは仕様の規定外を意味し、従ってブラウザの実装は一切問わないと言う事だからです。
さすがに文書型宣言の無いHTML文書を拒絶するブラウザを制作者は知りませんが、そう言うブラウザが出てもおかしくない事が仕様上明らかな以上(仕様書に規定が無いからこそこの事は明らかな訳です)、文書型宣言を書かない事はそれだけでリスクがあると言えるでしょう。
文書型宣言は、文書型に従っている事を宣言するものです。
つまり、文書型宣言を書いたはいいが、宣言されている文書型に適合しない文書であってはいけません。
ですから、マークアップを一通り終えてどの文書型に該当するかを考えて宣言する必要があります。
例えば、どのHTMLの仕様にも無い<blink>要素や<marquee>要素などを用いた文書は、当然ながらその事だけでどの文書型宣言も付けられません。
だから、文書型宣言がなくてもいいではないか
という主張も聞かれます。
例えば、以下のような意見です(とほほのWWW入門より)。
- DOCTYPEは必要か?
DOCTYPEは必ず必要だ!! HTML 4.0にそう書いてある!!と自信をもって言う人がいますが、私はそうは思いません。もし、そのドキュメントが本当に HTML 4.0 に準拠しているなら、HTML 4.0 のドキュメントタイプをつけるべきですが、準拠しているかどうか分からないのに、見様見真似でつけることは感心できません。- (中略)
DOCTYPEは、そのドキュメントが、どの仕様に準拠しているかを明示的に示すものであって欲しいと思います。
ですが、そもそも規格に無い要素や属性を使う事こそが問題なのでは無いでしょうか。
つまり、適切な文書型が無いと言うのは、マークアップそのものに問題があると言えます。
以上の記述は理念的なものです。
しかしながら、現実には正しい文書型宣言が付けられないケースもあります。
例えば、無償サーヴァなどで文書型宣言が適切に付けられない場合が少なくありません。
それは、自動挿入される広告がどの文書型にも合わないサーヴァがあるからです。
制作者は一応制作時点での、すなわち広告が入らない状態での文書型を宣言しております(但しトランジッショナル文書型としております)。
勿論、広告が挿入された時点で文法違反となる訳ですが、それでも文書型宣言を付けないよりはマシだと思っております。
制作者は、規格に逆らったマークアップだけはやらないと言う意思だけは知らせたいと思うからです。
もう一度言いますが、文書型宣言の正しくないHTML文書をエラーとしてしまうブラウザが将来出て来ないとは言い切れません。
ですが、そんなブラウザがあったとしても、
作成時の文書型を宣言しておくべきだと思うのです。
そう言うサーヴァを撰んだ事自体が制作側の落ち度だと言えばそれまでですが、撰ばざるを得ないケースもあります。
フラッシュをHTML文書に埋込む場合、正規規格となっている<object>要素ではフラッシュが起動しないブラウザがあったため、今でも規格外の<embed>要素を使う方が多いようです。
従って、フラッシュを用いている文書は大半が規格外文書になっております。
フラッシュ以外のマルティメディアに関しても、同様の問題があります。
しかし、そもそもフラッシュなどのマルティメディアがウェブに必要不可欠かという問題もあると思われます。
より多くの環境で閲覧出来るようにするには、規格外文書もリスキィですし、またプラグインを強いるマルティメディアもリスキィと思われます。
勿論代替手段を提供していれば問題も多少は解消されるでしょう。しかしながら、マルティメディアを使えないようにしているとプラグインのダウンロードを強要するブラウザなどもあって鬱陶しい事この上ありません。
まず制作者は基本的に規格に背いてまでマルティメディアを使わなければならないと言う必然性をどうしても感じる事が出来ません。
ですので、制作者にはマルティメディアのために文書を規格外化する必然性もありません。
しかしながら、どうしてもそう言ったマルティメディアを用いたいと言うのであれば、せめて当該マルティメディアを埋め込む前に適切な文書型で文書を仕上げ、その文書に対して適切な文書型宣言を行うべきでしょう。
また、規格外タグを埋込んだ時点で文書型から外れ、且つ何らかのトラブルの種となり得る訳ですが、そう言った問題に関して制作した者が全責任を負うべき事は承知して欲しいものです。
この事は、入力フォームの<textarea>要素に対して、旧型ブラウザのために規格外属性であるwrap="soft"属性を付ける必要がある場合にも言えるでしょう。
wrap="soft"」属性が書かれていない場合は折返さずに際限無くスクロールしてしまうものがあります。例え理念通りに文書型宣言が機能していない現状であっても、或いは適切な文書型宣言を付けて公開出来ない事情がある場合であっても、HTML文書完成時に適切な文書型宣言をHTML文書に明示する事は、HTML文書を制作する人間が適正に文書を作成している事を明示するという意味で必要と言えます。