HTML4.01の規格書を読む(その3)

前回に引き続き。今日は7章。昨日ほどは雑然とならないようにまとめるよ。

7 The global structure of an HTML document

HTML全体の構造についての章。

HTMLは、次の3つの部分から構成されている。2と3は、HTML要素の中に入れられる。

  1. HTMLのバージョン情報(DOCTYPE宣言)
  2. ヘッダ(HEAD要素)
  3. 本文内容(BODY要素 or FRAMESET要素)
HTMLのバージョン情報

DOCTYPE宣言として、使っているHTMLのDTDを書く。HTML4.01のDTDは3種類。

  • HTML 4.01 Strict DTD
    • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    • deprecatedな要素・属性やフレーム関連の要素は使えない
  • HTML 4.01 Transitional DTD
    • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    • strictの要素・属性に加え、deprecatedな要素・属性も使える
  • HTML 4.01 Frameset DTD
    • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
    • transitionalの要素・属性に加え、フレーム関連の要素・属性も使える
HTML要素

DOCTYPE宣言の後の残り全体を囲む要素。

  • 開始タグも終了タグも省略可能。つまりHTML要素を書かずにいきなりHEADやBODYを書いて良いってことか。
  • lang属性とdir属性が書ける。国際化関連。
ヘッダ部:HEAD要素

文書に関する情報を含む要素。通常HEAD要素の内容はUAによってレンダリングされない。

  • 開始タグも終了タグも省略可能。
  • profile属性で、文書に関するメタ情報が置いてあるURIを指定できる。(自分注:こんな属性初めて知った…)
  • 内容には以下の要素が書ける。
    • TITLE要素
      • HTMLの必須要素。
      • 内容はPCDATA。
      • アクセシビリティのため、内容の文字列は何らかの方法でユーザーに提示されなければならない。
    • META要素
      • 文書のメタ情報を記述する。プロパティに値を割り当てるという形式。
      • 終了タグは禁止。つまり、<META name="..." content="..."> というふうに閉じタグ無しで書かないといけない。
      • 使用できる属性は次の通り。
        • name:プロパティ名。
        • content:プロパティ値。
        • scheme:プロパティ値を解釈するスキーム。
        • http-equiv:name属性の代わりに使える。HTTPサーバがHTTPレスポンスヘッダを作るために使う。
      • このHTML仕様では、どんなプロパティがあってどんな値が正当なのかは規定しない。それはprofileに書かれる。
        • profileのフォーマットもこの仕様では規定しない。
        • profileの一例がDublin Core
      • また、各プロパティの値をどう解釈すべきかも規定しない。UAメタデータを無視しても良い。
      • LINK要素でもメタデータは書けるので、プロパティ値がURIだったらLINK要素を使っても同じメタデータを表せる。
      • 使い道としては、検索エンジンへの情報提供とか、コンテンツフィルタリングとか、文書のデフォルト情報(スクリプト言語は何か等)とか。
    • SCRIPT要素
    • STYLE要素
    • LINK要素
    • OBJECT要素
      • (この辺の要素は他の章で詳しく出てくる)
内容部
  • BODY要素について
    • 開始タグも終了タグも省略可能。
    • 表現に関する属性があるが、deprecated。スタイルシート使おう。
    • FRAMESET要素はFramesの章に詳しく。
  • 要素のidentifierとなる属性について
    • id属性:文書中で一意となる名前を指定する。スタイルシートセレクタやリンクのアンカなどで使われる。
    • class属性:一つ以上のクラス名を空白区切りで指定する。同じクラス名を複数の要素で使って良い。スタイルシートセレクタが主な利用箇所。
    • これらの属性はほとんどすべてのHTML要素に指定できる。
  • ブロックレベル要素とインライン要素
    • HTMLの要素には2種類ある。違いは以下の通り。
      • ブロックレベル要素は内容にブロックレベル要素とインライン要素の両方を持てるが、インライン要素は内容にインライン要素かテキストデータしか持てない。
      • フォーマットしたときに、ブロックレベル要素は新しい行に移るがインライン要素はそうならない。
      • テキストの双方向性アルゴリズムの処理に違いがある。
    • スタイルシートで、ブロックレベルかインラインかを変更することができる。場合によってはそれが有用なこともあるが、あまりやることではない。
  • DIV要素とSPAN要素
    • 文書の構造を形作るためだけの要素。表現上の意味は付加しない。スタイルシートで使ったり。
  • 見出し:H1〜H6要素
    • H1が最重要な見出しで、数値が大きくなるほど重要度が下がる。
    • H1の次にH3を使うような、見出しの番号を飛ばすのは悪いことだと考える人々もいる。(自分注:こういった書き方ということは、規格上は見出しの番号が飛ぶのは許容しているのか)
  • ADDRESS要素
    • 文書についての問い合わせ先。
    • よく文書先頭や末尾に現れる。