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

前回に引き続き。今日は5〜6章。雑然とまとめるよ。

5 HTML Document Representation

HTML文書のビット列としての表現方法について。エンコーディングとか文字参照とか。

  • HTMLでは文字集合としてISO10646のUCSを使う
  • 使うエンコーディングはお好きなものをどうぞ
  • エンコーディング名はIANAに登録されているもの。大文字小文字は区別しない
  • UAエンコーディングを決定する規則。
    1. HTTPヘッダの、Content-Typeフィールド中のcharsetパラメータでの指定
    2. META要素での指定
    3. charset属性での指定
    4. 何らかのヒューリスティックスとかユーザー設定とか(オプション)
  • 使っているエンコーディングでカバーしていない文字やハード・ソフトの制限で入力できない文字とかは、文字参照を使うと入力可能
    • 文字参照には2種類ある
    • Numeric character references−文字のコードポイントを数値で指定。例:(10進)、 (16進、xとA-Fは大文字小文字区別しない)
    • Character entity references−文字を名前で指定。名前の大文字小文字は区別される。指定できる文字の一覧は24章に。例:<、&
    • ちなみにSGMLの規則では、改行の直前とかタグの直前とかでは文字参照の最後の「;」を省略できる。でも何か問題が起こったら嫌だから常につけとくの推奨
  • フォントががないとかエンコーディングの対応外とかで、UAがHTML中の文字を表示できないとき
    • どうするかは実装しだい。規格では定めないので適当にやってください
    • 推奨なのは次の方法
      1. 表示できない文字があることを何らかの形で表す
      2. 文字のコードポイントを16進数で表示する

6 Basic HTML data types

要素内容や属性値に現れるデータ型について。規格を読んでいくための情報。

  • Case information:大文字小文字の区別。以下の5種類がある。
    • CS:大文字小文字は区別する
    • CI:大文字小文字は区別しない
    • CN:大文字小文字は関係ない。数値とか。
    • CA:大文字小文字どちらなのかは定義により与えられる
    • CT:その他
  • SGMLのデータ型
    • CDATA:文字列。
      • 属性値は次のように解釈される。
        1. 文字参照を解決
        2. LFを除去
        3. CRとTABをスペースに変換
      • UAは、属性値の先頭と最後のスペースを除去することが許されている。が、それは行わないかもしれない。なので最初から属性値の先頭や最後にスペースは入れるべきではない
      • STYLE要素とSCRIPT要素の内容はすこし異なる解析をされる。
        • 内容のマークアップ文字参照は解釈されず、そのままテキストとなる
        • 最初に"</"という文字列が出てきたところで要素は終了。
        • (自分注:だからスクリプトの中で"</"という文字列を使うときは要注意なのだね。)
    • ID、NAME:正規表現で書くと、[A-Za-z][-_:\.A-Za-z0-9]*
    • IDREF、IDREFS:他の属性で定義されたIDへの参照。
    • NUMBER:数値。正規表現で書くと、[0-9]+
  • URI:詳細はRFCを。RFC2396
    • URIは、だいたいはCSだが一部CIの箇所も(マシン名とか)。ややこしいので、安全側に倒して大文字小文字は常に意識しといた方がよい
  • Colors:色の定義は別文書にあるそうな(自分注:こんな文書あったんだ。初めて見た)。以下のいずれかの方法で表現する。
    • 16進数値。例:#000000
    • 色の名前。16種類ある。CI。(自分注:確かCSS2.1ではOrangeが加えられて17種類)
  • Lengths:長さ関連の値。3種類ある。CN。
    • Pixels:ピクセル。数値がピクセル数を表す。
    • Length:ピクセル、もしくはパーセンテージ。パーセンテージは利用可能な長さ相対。
    • MultiLength:Length、もしくは相対長さ(relative length)。相対長さは、iを整数として"i*"の形式。
      • 相対長さが指定された要素の長さは、Lengthの部分に長さが割り当てられた残りを、相対長さが指定された要素同士で配分し合って決まる。
  • Content types:コンテントタイプ。メディアタイプとも。CI。
  • 国コード:RFC1766で定義されている。CI。
  • エンコーディング(既出):IANAに登録されている。CI。
  • 日時:ISO8601のサブセット。 "YYYY-MM-DDThh:mm:ssTZD"の形式(TZDはタイムゾーン)。CS。
  • Link types:リンクの種類? AlternateとかStylesheetとか。詳細は12章に。CI。
  • Media descriptors:出力メディア。screenとかtvとか。CSSの@mediaルールと同じか。
  • Frame target names:フレームのリンク先。以下の4種類は予約されている。
    • _blank、_self、_parent、_top
    • 他の値を指定する場合は、その値の先頭はアルファベット(a-zA-Z)でなければならない