2013/02/23

[html]サンプルを理解しよう - 文書型宣言

本を買うまで、こちらのページを見ながら勉強しようとしている。
html5入門

サンプルを見て、動かして、とりあえず動いた。
では、いったいこのサンプルはなんなのかを理解しよう。

そう、HTMLもCSSもよくわかっていないので、そもそもサンプルの意味がわかっていないのだ。


HTML5の特徴を使ったサンプル、ということくらいはわかっている。
特徴の中でも「構造タグ」というものを使ったサンプルであった。

では、「構造タグ」とはなんだろう?
http://html5.imedia-web.net/feature/structure.html

HTML4には「body」というタグがあるが、構造タグというのはその中に書くものらしい。
確かに、サンプルもそうなっている。

では「body」ってなんだろうか?


(日本語訳)http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/struct/global.html

まず、HTML文書というのは、以下の2つから構成される。

  • 文書型宣言
  • HTML要素

 

「文書型宣言」は、HTMLバージョン情報らしい。
この書き方に、3種類あるようだ。

  1. HTML 4.01厳密型DTD : strict.dtd
  2. HTML 4.01移行型DTD : loose.dtd
  3. HTML4.01フレーム設定型DTD : frameset.dtd

うん、よくわからん。
日本語訳をされた方のページを見ると、こうなっていた。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

「Transitional」というのは、移行型らしい。しかし、loose.dtdを指定してないな。。。
「DTD」というのは文書型定義の略らしく、たとえばloose.dtdなどにその内容が書かれている。
ちょっと見た感じでは「タグaは○○します、タグdivは○○します」のような、そういう定義が書かれているようだった。

つまりブラウザの動作としては、まずHTMLファイルの最初を読んで、このHTMLファイルがどういう文書型なのかを探し出し、解析したりレンダリングする機能に指示を与える、ということをやるのだろう。

ただ、毎回そんなことをしていたら表示するまでにとても時間がかかるので、ブラウザ内部にその定義を複数持っていて、「これは移行型だからこの設定でいくぞ」というようなことをやっているのかな。
あるいは、3つ定義があるけど、実はどれか1つをサポートしておけば全部対応できるようになっているとか。
実装する大変さを考えると、どれか1つやっておけばいい、がありがたいな(私が実装するわけじゃないけど)。


サンプルでは、こうなっている。

<!DOCTYPE html>
<html lang="ja">

さっきのに比べると、ずいぶんさっぱりしたものだ。
PUBLIC以降が省略されたように見えるが、文書型宣言はどうなったのだろう?

 

やむなく、原文を探す。。。
http://www.w3.org/TR/2012/WD-html5-diff-20121025/#doctype

「DOCTYPEは、ブラウザが標準モードでレンダリングすることを指定する、という以外のことをしない」と書かれている。
つまり「この文書はHTMLですよ」ということしか言わない、ということだろう。
ふーん。

「標準モード」と書いたが、これはstandards mode、となっている。
標準、というのはおそらく、HTML5標準、という意味なのだろう。

では、HTML4などのDOCTYPEはどうなるかというと、今までの記述は「strict doctypes(厳密なDocType)」ということで、HTML文法で記載することを許可するようだ。
うーん、よくわからんが。。。厳密に指定したものは、厳密なHTML解釈しかしなくてよいですよ、ということなのかな。


厳密なHTML5定義を知ろうとしているわけではないのだが、どこを気にすべきで、どこを気にしなくていいのかわかっていないので、効率が悪いな・・・。

まあ、そういうところも含めて勉強していけばいいか、と気楽に考えることにした。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。