• ベストアンサー

<HTML>は省略可能?

先日友人から『実は<html>も省略可能なんだよ』というような話を聞きびっくりしました。 私が昔読んだサイトや本では、HTMLの最小単位は <html> <head><title></title></head> <body></body> </html> だと書いてありましたが…本当に<html>も省略できるんでしょうか? 詳しい方、または説明しているサイトをご存知の方は教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nanairo9
  • ベストアンサー率44% (15/34)
回答No.1

http://ja.wikibooks.org/wiki/HTML/%E3%82%BF%E3%82%B0%E3%81%AE%E7%9C%81%E7%95%A5 可能です。 うっかり文末に</body></html>を入れわすれてアップした事がありますが、 普通に表示されていました。

rinrin_ring
質問者

お礼

ありがとうございます。 リンク先を見たところ最小はDOCTYPEとtitleと本文に当たるブロック要素みたいですね。そこまでいけるのかとびっくりしました。

その他の回答 (3)

  • Chaire
  • ベストアンサー率60% (79/130)
回答No.4

> HTMLの最小単位 「文法的に」間違いです。HTML 4.0 であれば、「文法的に妥当な」最小コードはこうです。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <title></title><p> ※Strict なので p の開始タグだけ書いています。終了タグはいりません。 --- HTML 4.0 は文書型宣言が必須です。なぜそうかと言えば、本来の目的のひとつはタグ省略を許すためです。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> 上記によって、HTML パーサは HTML 4.01 のルールで文書を解析すれば良いと分かります。 <title> さてここで、この位置には「ありえない」title 要素の開始タグが現れました。ルールを確認すると、ここに本来あるべき html の開始タグは省略可能となっています。そこで、開始タグを補います。 <html><title> 再びルールを確認すると、html の子に title は置けません。本来あるべき head 要素の開始タグを補います。 <html><head><title> これで title が置けるようになりました。次。 </title><p> title の隣に p は置けません。ルールを確認すると、p は body の子であること、body の開始タグは省略可であることが分かります。開始タグを補います。 </title><body><p> まだ足りませんね。title の隣に body は置けません。ルールを確認。head の終了タグは省略可。なら、終了タグを補います。 </title></head><body><p> 以下、同じようにやっていきます。結果的に次のような HTML ができ上がります。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head><title></title></head><body><p></p></body></html> もちろん、省略不可とされたものは省略できません。title の開始タグと終了タグはどちらも省略不可です。だから、No.3 の「<p>あいうえお</p>」だけでは不可です。ルールを確認するための文書型宣言もありませんから。 ※しかし XHTML なら構いません。ややこしいですね。 だから、タグ短縮・省略自体は HTML のルールに基づく真っ当な方法です。 --- HTML5 なら、最小形はこうです。ちゃんと Validator を通ります。 <!DOCTYPE html> <title></title> しかしながら、とある現実的な理由から、body の開始タグだけは書いた方が無難です。それと、文字コード宣言もなるべく書くようにしましょう。 <!DOCTYPE html> <meta charset="..."> <title></title> <body> これだけで十分です。<html> だの </html> だのは不要です。 もちろん、気持ち悪いから避けるのは構いません。ただ、省略できるものを省略せずに、省略できないものを省略している例文が巷には大量にあります。それはそれで、変な話でしょう。

rinrin_ring
質問者

お礼

ありがとうございます。 やっぱり最小はDOCTYPEとtitleと本文に当たるブロック要素なんですね。詳しくありがとうございました。

  • flyingbee
  • ベストアンサー率26% (49/182)
回答No.3

ブラウザはHTMLを表記するためのものですから、 省略されればデフォルトでHTMLと判断するでしょう。 より詳細には次のページが参考になるでしょうか。 http://www.ne.jp/asahi/minazuki/bakera/html/sgml/omittag 次の一行をメモ帳に貼り付けて拡張子をhtmlに変えてやれば、 あっけなくブラウザ上で表記されますよ。 <p>あいうえお</p> <html>だけでなく<head>も<body>も省略可能ということですね。 とはいえ、ブラウザの方で気を利かしていると捉えた方が良いでしょう。 省略による悪影響は考えられても、良いことはありませんから。 

rinrin_ring
質問者

お礼

ありがとうございます。 表示できることなんか言われなくても分かっていますが、仕様上正しいと言える最小が知りたかったんです。

  • 4017B
  • ベストアンサー率73% (1336/1814)
回答No.2

出来るけど、したら駄目です。する意味もないし。 代表的なブラウザでは、テキストファイルを読み込んだ時。データの先頭100バイト前後までに <nn>~</nn> が含まれていたら、自動的にHTMLファイルだと認識する様になっている物が多いので。正式な記述式に乗っ取っていなくても、例えば <p><HTML>は省略可能?</p> ~みたいな感じでも一応、HTMLページとして表示されます。 でも省略する意味は全く無い。HTMLファイルのヘッダ情報を勝手に省略してしまうと、ブラウザが(特にIE)自動的に後方互換モードで起動してしまい、意図したようにHTMLページが表示されなくなる主たる原因になります。

rinrin_ring
質問者

お礼

ありがとうございます。 それは当然分かっています。何が省略できるのか、正しいHTMLの最小は何なのかが知りたかったんです。

関連するQ&A