* [CODE(HTMLe)[h[VAR[n]]]] 要素型群 (HTML, XHTML 1) [1] [ABBR[[[HTML]]][Hypertext Markup Language]] の [CODE(HTMLe)[h[VAR[n]]]] 要素型群の要素は[DFN[[RUBYB[[[見出し]]][heading]]]]です。 見出し要素は、それによって始まる[RUBYB[[[節]]][section]]の話題を手短に記述します。 [RUBYB[[[付番]]][rank]] [VAR[n]] は、 [[HTML 4]] をはじめとする [ABBR[[[IETF]]][Internet Engineering Task Force]] や [ABBR[[[W3C]]][World Wide Web Consortium]] の規定する [ABBR[[[HTML]]][Hypertext Markup Language]] 仕様では [CODE[1]]〜[CODE[6]] が定義されています。 [21] 仕様書: - [[HTML 2.0]]: [[RFC 1866]] -- [CITE[5.4. Headings: H1 ... H6]] - [[HTML 4]]: -- [12] :[[開始タグ]]:必須 :[[終了タグ]]:必須 :[[内容モデル]]:[CODE(SGML)[(%[[inline]];)*]] :出現できる文脈:[CODE(SGML)[%[[block]]]] な文脈 :[[属性]]: ,属性名,属性値,既定値,説明,出典 ,[CODE(HTMLe)[[[align]]]] , , ,揃え位置,[HTML4] 非推奨 ,[CODE(HTMLa)[[[class]]]] , , ,[[級]] ,[HTML4] %[[coreattr]] ,[CODE(HTMLa)[[[datafld]]]] , , ,欄名 ,[HTML4] 予約 ,[CODE(HTMLa)[[[dataformat]]]] , , ,データ書式 ,[HTML4] 予約 ,[CODE(HTMLa)[[[datasrc]]]] ,[CODE(SGML)[%[[URI]]]] , ,データ源 ,[HTML4] 予約 ,[CODE(HTMLa)[[[dir]]]] , , ,[[書字方向]] ,[HTML4] %[[i18n]] ,[CODE(HTMLa)[[[id]]]] ,[CODE(SGML)[[[ID]]]] , ,一意識別子 ,[HTML4] %coreattr ,[CODE(HTMLa)[[[lang]]]] ,[CODE(SGML)[%[[LanguageCode]]]] ,(継承) ,[[自然言語]] ,[HTML4] %i18n ,[CODE(HTMLa)[[[xml]]:lang]] ,[CODE(SGML)[%[[LanguageCode]]]] ,(継承) ,自然言語 ,[XHTML1] ,[CODE(HTMLa)[[[onclick]]]] , , , ,[HTML4] %[[events]] ,[CODE(HTMLa)[[[ondblclick]]]] , , , ,[HTML4] %events ,[CODE(HTMLa)[[[onkeydown]]]] , , , ,[HTML4] %events ,[CODE(HTMLa)[[[onkeypress]]]] , , , ,[HTML4] %events ,[CODE(HTMLa)[[[onkeyup]]]] , , , ,[HTML4] %events ,[CODE(HTMLa)[[[onmousedown]]]] , , , ,[HTML4] %events ,[CODE(HTMLa)[[[onmouseout]]]] , , , ,[HTML4] %events ,[CODE(HTMLa)[[[onmouseover]]]] , , , ,[HTML4] %events ,[CODE(HTMLa)[[[onmouseup]]]] , , , ,[HTML4] %events ,[CODE(HTMLa)[[[style]]]] , , ,スタイル情報 ,[HTML4] %coreattr ,[CODE(HTMLa)[[[title]]]] ,[CODE(SGML)[%[[Text]]]] , ,注釈的題 ,[HTML4] %coreattr [[#comment]] ** 付番 [14] [RUBYB[[[付番]]][rank]] [VAR[n]] (注 >>15) は、 [[HTML 4]] をはじめとする [ABBR[[[IETF]]][Internet Engineering Task Force]] や [ABBR[[[W3C]]][World Wide Web Consortium]] の規定する [ABBR[HTML][Hypertext Markup Language]] 仕様では [CODE[1]]〜[CODE[6]] が定義されています。 [ABBR[HTML][Hypertext Markup Language]] 4 仕様書によれば、 [CODE(HTMLe)[h1]] が最も重要度が高い見出し、 [CODE(HTMLe)[h6]] が最も重要度が低い見出しです。 [15] 注意: [ABBR[[[SGML]]][Standard Generalized Markup Language]] 的 [WEAK[([[SGML宣言]]および [ABBR[[[DTD]]][Document Type Definition]] 的)]] 意味では [VAR[n]] は付番とは言えませんが、付番は付番です [WEAK[(開き直り)]]。 [17] [[Word]] 9 は [CODE[7]] を超えると、 [CODE(HTMLe)[[[class]]]] が [SAMP[MsoHeading8]] のような [CODE(HTMLe)[[[p]]]], [CODE(HTMLe)[[[div]]]] または [CODE(HTMLe)[[[li]]]] を吐く模様です。 [CODE(HTML)[9]] まで確認されています。 [18] >>17 Word 10 でも同じ。 [19] 付番を文書ではなく文書群に対するものと考える人も少なくないようですが、 それは誤りです。 ([SAMP(URI)[toc.html]] は [CODE(HTMLe)[h1]] からはじめて、 [SAMP(URI)[section1.html]] は [CODE(HTMLe)[h2]] からはじめて、 [SAMP(RUI)[section1-subsection2.html]] は [CODE(HTMLe)[h3]] からはじめて、・・・というような使い方は誤り。) 元々付番は文書の中で使うもので、文書群なんてものは考えられていません。 (しかし想定外なのですから、 文書の一部分を別の文書に持っていった際に付番はそのままにしたようなもの、 と考えるのも悪くはない気がしますね。どうしたものでしょう?) [20] [[LaTeX]] で [CODE[[[part]]]] とか [CODE[[[chapter]]]] がなくて [CODE[[[section]]]] が最上位だったりするのは普通なことですから、 [ABBR[SGML][Standard Generalized Markup Language]] や [ABBR[HTML][Hypertext Markup Language]] で [CODE(HTMLe)[h2]] くらいから始まっていても悪くはないような気もします。付番の最初は [ABBR[SGML][Standard Generalized Markup Language]] 的には規定されていませんし。 やっぱり [[XHTML 2]] のような見出しの水準に中立なモデル化が何も考えずに済むので便利でしょうかね。 [32] HTML が 1〜6 を標準として持っているのは >>31 の通り歴史的な事情で、それ以上の深い理由はありません。 良い文書は 1〜4 程度に収めるべきだとか、 実際には 1〜3 くらいしか見かけないなあとか、 でもでかい文書のためには 1〜9 くらいあった方が良いとか、 色々言われてきましたが結局上限を変える程の根拠も無く、 現在に至っています。 [[#comment]] *** 付番の飛び越し [9] たとえば [PRE[

]PRE] のように、 [CODE(HTMLe)[h2]] の抜けた [[HTML文書]]があります。 [ABBR[HTML][Hypertext Markup Language]] 2 や [ABBR[HTML][Hypertext Markup Language]] 4 の [ABBR[DTD][Document Type Definition]] 的にはこのような文書も[RUBYB[[[妥当]]][valid]]です。 [10] しかしながら、見出しの水準は飛ばすべきではありません [SRC[RFC 1866 5.4.]] し、飛ばすのを良く思わない人もいます [SRC[HTML 4]]。 飛ばすことによって他の形式への変換に支障をきたすこともあります [SRC[RFC 1866 5.4.]]。 [[#comment]] ** 見出し要素の応用 *** 目次生成 [13] [ABBR[[[UA]]][利用者エージェント]] は、 見出し要素を使って文書の[[目次]]を自動生成することができます [SRC[HTML 4]]。 実際に、文書中の見出し一覧を表示して頁内を移動できる機能を持つ [[WWWブラウザ]]や、文書群の総合目次のようなものを作ることができるソフトウェアがあったりします。 [[#comment]] *** レンダリング [16] [[視覚ブラウザ]]は、通常、重要度の高い [WEAK[(付番の小さい)]] 見出しをより低い [WEAK[(大きい)]] 見出しよりも大きく描画します [SRC[HTML 4]]。 [2] 古い [[mosaic]] の日本語版では、 [CODE(HTML)[h1]]〜[CODE(HTML)[h6]] 各要素の大きさが6段階であるべきなのに、 3段階にしかならないことがあったそうです。 [24] 古い時代の典型レンダリング [SRC[RFC 1866 5.4.]]: ,要素型,太字,斜体,大きさ,左右余白,上下余白 ,[CODE(HTMLe)[h1]],○,×,非常に大きい,中央寄せ,"1,2行" ,[CODE(HTMLe)[h2]],○,×,大きい,左揃え,"1,2行" ,[CODE(HTMLe)[h3]],×,○,大きい,十分字下げ,"1,2行" ,[CODE(HTMLe)[h4]],○,×,普通,[CODE(HTMLe)[h3]] より字下げ,"1行" ,[CODE(HTMLe)[h5]],×,○,普通,[CODE(HTMLe)[h4]] 程度字下げ,"上1行" ,[CODE(HTMLe)[h6]],○,×,普通,[CODE(HTMLe)[h5]] より字下げ,"上1行" [[#comment]] **** 番号振り [8] [ABBR[HTML][Hypertext Markup Language]] 自体では、 見出しに自動的に章節番号を与えることはできません。 しかし、そのような [ABBR[[[UA]]][利用者エージェント]] は存在しますし、 [[スタイル言語]]を併用することで[[著者]]がこれを制御することも可能です。 [SRC[HTML 4 ]] これが可能なスタイル言語の例としては、 [ABBR[[[CSS2]]][Cascading Style Sheets, Level 2]] や [ABBR[[[XSL]]][Extensible Stylesheet Language]] や [ABBR[[[DSSSL]]][Document Style Semantics and Specification Language]] が挙げられます。 ([ABBR[[[JSSS]]][[[JavaScript Style Sheet]]]] はどうだろう?) [[#comment]] *** その他 [[#comment]] ** 歴史 [31] [CODE(HTMLe)[h[VAR[n]]]] は [ABBR[HTML][Hypertext Markup Language]] の最初期 (おそらく本当に一番最初) から存在する要素型で、 古い仕様書 (例えば1992年1月のもの ) によれば、 [CITE[CERN [ABBR[SGML][標準一般化マーク付け言語]] Guide]], ひいては [Q[[ABBR[AAP][Association of American Publishers]] tag set]] [WEAK[(後の [[ISO/IEC 12083]])]] に由来しているそうです。 [[#comment]] ** 不思議解釈 [3] [CODE(HTML)[h[VAR[n]]]] 要素型群が見出しであるとしながらも、 [[文字]]の大きさを変えるのに使うこともできると説明している文章もあります。 後者の間違った用法しか説明しない完璧な[[不思議]]解説もいやらしいですが、 この種のもなあ。 [4] 見出し要素型群がまともに使ってもらえなくなったのって、 絶対 [ABBR[[[NN]]][Netscape Navigator]] の既定のスタイルシート [WEAK[(もしかしたら [[mosaic]] のも。)]] で見出しの大きさがはちゃめちゃだった影響が8割くらいありますよね。 見出し水準1は馬鹿でかいし、 水準4以下は普通の文字よりも小さい。 普通の文字より小さい見出しがいったいどこの世の中にありますか。 であるからにして、 NN が登場してから [ABBR[[[CSS]]][Cascading Style Sheets]] が普及するまで、 見出しタグを使うとウェブ頁が正視に堪えられなくなるという状態だったわけですよ。 ふと目をそらせば [CODE(HTMLe)[[[font]]]] タグが漂っている。どっちが常識的な選択かは明らかでしょ。 [5] もちろん、 >>4 は昔話であって、 現代でありながら見出しを正しく使っていない文書の著者は間抜けですよ。 [6] [WEAK[(よくわからないけど仮に mosaic でも NN みたいにまともじゃない見出しの文字の大きさだったとして、)]] mosaic の多く [WEAK[(多分、ある時点よりあとの版)]] は利用者設定のスタイルシートを実装していて、 見出しの文字の大きさも自分で指定できたと思うのですけど、 できたからといってちゃんとまともな大きさにしていた人がどれだけいたか。 [[#comment]] ** 例 [22] 見出しを含む簡単な文書片 [SRC[RFC 1866 5.4.]] [PRE(HTML)[

This is a heading

Here is some text

Second level heading

Here is some more text. ]PRE] [[#comment]] ** メモ [7] 見出し要素は、節の始まりを暗示しているのでありますが、 [ABBR[[[DTD]]][Document Type Definition]] 的あるいは [ABBR[[[XML]]][Extensible Markup Language]] 的にはどこからどこまでが節なのか明示することまではできません。 [ABBR[HTML][Hypertext Markup Language]] 4 仕様書は、 [CODE(HTMLe)[[[div]]]] 要素を使ってこれを明示する例を示しています。 ちなみに、 [[XHTML 2]] は [CODE(XHTMLe)[[[section]]]] という新要素型を導入しています。 [[#comment]] * [CODE(SGMLe)[h[VAR[n]]]] 要素型群 (SGML) [25] [ABBR[[[SGML]]][Standard Generalized Markup Language]] では一般に古くから[RUBYB[[[見出し]]][[[heading]]]]を表す要素型として [CODE(SGMLe)[h[VAR[n]]]] がよく使われています。 [[付番]]は [CODE(SGML)[1]] から始まって数個程度で、 [CODE(SGMLe)[[[h0]]]] が使われることもたまにあります。 [26] [[LaTeX]] 式の [SAMP[chapter]], [SAMP[subsection]] のような名前による区分とは異なり、 何も考えずに番号で深さを表現できる点で優れています [WEAK[(と考えた人が [CODE(SGMLe)[h[VAR[n]]]] 式見出し・章節構造を採用しています)]]。 [27] 採用例: - [[JIS X 4151]] -- 参考3 4.2.3 の例文 [ABBR[(純)][純粋見出し方式]] [CODE(SGMLe)[h1]]〜[CODE(SGMLe)[h4]] -- 参考6 1. の [ABBR[DTD][Document Type Definition]] 例 [ABBR[(節)][章節開始位置方式]] [CODE(SGMLe)[h0]]〜[CODE(SGMLe)[h4]] - [[HTML]] [ABBR[(純)][純粋見出し方式]] [CODE(HTMLe)[h1]]〜[CODE(HTMLe)[h8]] -- [[JIS X 4152]]:2000 (非 SGML 応用) [ABBR[(純)][純粋見出し方式]] [CODE(HTMLe)[h1]]〜[CODE(HTMLe)[h3]] - [[ICADD]] [ABBR[(純)][純粋見出し方式]] [CODE(SGMLe)[h1]]〜[CODE(SGMLe)[h6]] [28] 純粋見出し方式: [CODE(SGMLe)[h[VAR[n]]]] はその名の通り、 見出しそのものを表します。見出しを含む章節は、 他の要素型によって明示・暗示される場合もあれば、 [ABBR[SGML][Standard Generalized Markup Language]] 的には表現されずにその応用独自の方法や発見的方法でのみ得られる場合もあります [WEAK[([[ISO-HTML]] 準備用は前者、標準の [ABBR[HTML][Hypertext Markup Language]] は後者)]]。 例: [PRE(SGML)[

大見出し

章の内容

小見出し

節の内容

小見出し

別の節の内容 ]PRE] 要素型定義の例: [PRE(SGML)[ ]PRE] [29] 章節開始位置方式: [CODE(SGMLe)[h[VAR[n]]]] は見出しの開始を表すタグとして使いますが、 実はその章全体を含む要素になっています。 例: [PRE(SGML)[

大見出し

章の内容

小見出し

節の内容

小見出し

別の節の内容 ]PRE] この例のように、[[文書実現値]]だけを見れば >>28 の場合と同じですが、 次のような要素型定義を使うと、異なった文書木が得られます。 要素型定義の例: [PRE(SGML)[ ]PRE] この要素型定義を使うと、先の例は次のように解釈されます。 [PRE(SGML)[

[INS[]]大見出し [INS[]]

章の内容 [INS[

]]

[INS[]]小見出し [INS[]]

節の内容 [INS[

]]小見出し [INS[]]

別の節の内容 [INS[

]] ]PRE] [30] 付番方式: 深さを要素型名の番号で表す際の宣言とマークの便宜のために、 [ABBR[SGML][Standard Generalized Markup Language]] には[[付番]]という機能があります。 (折角用意されているのに optional な機能なのでほとんど使われていません。) 例: [PRE(SGML)[

大見出し

章の内容

小見出し

節の内容

同じ節の内容 小見出し

別の節の内容 ]PRE] 実は >>28-29 と同じ例でも良いのですが、 付番の省略の機能を使うように少し変えてみました。 要素型定義の例: [PRE(SGML)[ ]PRE] 先の例は、次のように解釈されます。 [PRE(SGML)[

大見出し 章の内容

小見出し 節の内容 同じ節の内容 小見出し 別の節の内容 ]PRE] [[#comment]] * メモ