draft-ietf-html-tables

HTML表

[1] HTML で採用されている表モデル (table model) について。

[2] HTMLには、単純表モデル複雑表モデルの2種類があります。 いずれも、、すなわち二次元配列状に整理されたデータを記述する基本的能力を備えていますが、 複雑表モデルではをそれぞれ化できます。

HTML 4 は、複雑表モデルを採用しています。 XHTML Basic は、単純表モデルを採用しています。

XHTML m12n では単純表用モジュールと複雑表用モジュールの両方が用意されています。

[3] HTML モデルの構成要素

名前要素型名単純表複雑表説明
table二次元配列全体
表題caption見出し (に1つ以下)
tr
行群 (頭部)thead×見出しとみなせる (に1つ以下)
行群 (本体)tbody× (明示できない)本体とみなせる (に1つ以上)
行群 (脚部)tfoot×尾部とみなせる (に1つ以下)
col× (明示できない)
列群colgroup×
こま (見出し)thで指定される見出し
こま (本体)tdで指定されるデータ (本体)

設計について

[25] HTML 表模型の設計に関する解説が HTML 4 B.5.1 にあります。

それによれば、 HTML 表模型は、

  • 次のものの研究から発展しています。
    • SGML 表模型
    • 文書処理器 (ワープロ) での表の扱い
    • 雑誌、書籍、その他紙媒体での様々な表配置技術
  • 単純な表は単純に、必要なら複雑な表も扱えるように設計されました。
    • 常用の文章編集器で HTML の表をマークできます。
    • 学習曲線が緩くなります。
  • こまの連結や揃えなどの表現特性のこま群への関連付けは他の文書書式からの変換や WYSIWTG 編集器での作成と相性が良いよう考慮しています。

[26] 動的再書式付け HTML 4 B.5.1.1。 HTML 表模型では、表の大きさやフォントなどについて著者が制御しません。 ですから、列幅を絶対画素単位指定に依存するのは危険です。 よって、表は窓やフォントの大きさに合わせて動的に大きさを変更できなければなりません。

著者は列の相対幅のヒントを提供できますが、 利用者エージェントはこまの内容で一番幅の広い要素をレンダリングできる広さを確保するべきです。 著者の指定を上書きする時には、各列の相対幅が極端に変わることは避けるべきです。

[27] 漸次表示 HTML 4 B.5.1.2。 表が大きな時やネットワーク接続が遅い時は、表を徐々に表示するのが利用者的にはよろしいです。 利用者エージェントは表のすべてのデータを受信する前に表示開始できるべきです。 著者は、漸次表示のためのヒントとして、列の数や表・各列の幅を指定できます。 (表の幅は既定値が 100% で、列の幅の既定値は均分した値です。いずれも table 要素や col 要素の width 属性で上書きできます。)

列の数は、最初の行が到着するのを待てば良いと提案した人もいましたが、 最初の行の内容が多ければ時間がかかります。ですから、 漸次表示のためには著者が列数を明示する必要があります。 著者は漸次表示モードにするか、こま内容にあわせて幅を決定するモード (2パス自動幅決定モード) にするかも知らせる必要があります。 前者は col 要素や colgroup 要素で列数を明示します。 後者は1パス目で UA が列数を決定します。

[28] 構造と表現 HTML 4 B.5.1.3Stricter 的にはこま内の文章の揃え位置やこま間の境界線はレンダリングの問題で、 構造の話ではありません。ですが、このような特徴は (ある応用から別の応用へと) 非常に可搬ですから、構造情報とまとめておくと便利です。 HTML 表模型はほとんどのレンダリング情報をスタイル・シートに任せていますが、 必ず使わないといけないわけではありません。

現在の DTP ソフトウェアは表のレンダリングを極めて多様に制御できますが、 HTML でそれをやると RTFMIF のようにでかくなってしまうので非現実的です。 HTML はそうせずに、よく使われる線種から著者が選ぶ能力程度を提供しています。 それ以上の制御はスタイル・シートで行えます。

開発の過程で表罫パターン指定方法が色々検討されました。 辺の加減算ができるようにすると算法が比較的複雑になります。 (例えば、すべての表の要素に framerules を持たせると、あるこまのある辺の罫線の決定に24段階程度も必要になります。) それだけしても需要を完全に満たすことはできませんから、 単純で直感的でほとんどの目的に十分な程度に抑えてあります。 より複雑な方法を標準化する際には更に実験が必要です。

[29] 行群・列群 HTML 4 B.5.1.4。 HTML では、 CALS 表模型に倣い、表の列を頭・体・足に分類できます。 こうすることでレンダリング情報の表現が簡単になりますし、 頁境界をまたぐ表で頭や足を反復させられますし、 体だけ scroll 可能にすることもできます。 tfootthead の前に置くので、 表全体を処理するのを待たずレンダリングできます。

[30] アクセス可能性 HTML 4 B.5.1.5。 HTML 表模型は、こまを名札付けできますから、 高品質な文章を生成できます。データベースや表計算との輸出入の自動化にも使えます。

HTML 表モデルの限界

[4] 非正方形的連結

HTML表モデルは、1つのこまに連結する場合、 連結数を rowspan 属性、 連結数を colspan 属性で指定しますが、 このために

+-----+-----+-----+
| and |  0  |  1  |
+-----+-----+-----+
|  0  |  0        |
+-----+     +-----+
|  1  |     |  1  |
+-----+-----+-----+

のようなを表すことはできません。

枠線の表示を変えればこのように見える表を作ることはできますが、 あくまでそう見えるに過ぎません。

[5] 入れ子の群

行群列群が入れ子になった関係を表すことができません。

例えば、

--------------------
中部  東海  静岡
            愛知
            岐阜
            三重
      --------------
      北陸  富山
            石川
            福井
--------------------
近畿        滋賀
            京都
            奈良
            和歌山
            大阪
            兵庫
--------------------

のような構造を (tbody を入れ子にするなどして) 記述することはできません。

一応 HTML 4 的には axis 属性が用意されてはいますが・・・。

[6] こまの細分

こま内に更にの一部と考えられる構造が存在し得ますが、 HTML表モデルではそれを記述できません。

例えば、見出しに対する見出しこま (次例の左上のこま) のような表現は極めてよく見られますが、 HTML では表せません。

+---+----+----+----+
|\年|    |    |    |
| \ | 01 | 02 | 03 |
|市\|    |    |    |
+---+----+----+----+
|津 | 32 | 42 | 42 |
+---+----+----+----+
|呉 | 55 | 32 | 32 |
+---+----+----+----+
+---+----+----+----+
|   |  1 |  2 |  3 |
+---+----+----+----+
| A | 3/ | 5/ | 2/ |
|   |/  3|/  8|/ 10|
+---+----+----+----+
| B | 5/ | 1/ | 9/ |
|   |/  5|/  6|/ 15|
+---+----+----+----+

その回の得点と累計点を並べたこのようなも、 HTML では表せません。

td 内に適当な要素型要素を使って記述することもできますが、 この例の場合こま内の構造も含めての構造であると考えた方が自然ですから、 そのことを記述できる方法がある方が好ましいと思われます。

[7] 頭・脚的列群

行群には頭・体・足の別があるのに、列群は一種類しかありません。 (少なくてもこの点では) 本来方向と方向で対称的なはずですが、 HTML ではその区別を記述できません。

[8] 表題以外の付加情報

table 要素内には、 狭義のの他に表題 (caption) を含めることができますが、その他の物は HTML内容モデルでは含められません。

例えば表題と共に短い説明が加えられていたり、 のデータや項目に関する補足説明が配置されていたりすることがありますが、 HTML ではこれを明確に記述することができません。

table 要素の外に記述することはもちろんできますが、 表題table に含まれるのに、 表題以外の付属情報が含められないのは、 現在の仕様の制約以上の理由がありません。

[34] HTML tables: Why not column based tables in addition to row based tables? (tenacious-techhunter@comcast.net 著, 2007-10-02 07:53:55 +09:00 版) http://lists.w3.org/Archives/Public/public-html-comments/2007Oct/0000.html (名無しさん)

歴史

CALS 表モデル

[93] OASIS Web Site: TM 9502:1995 - CALS Table Model DTD, https://www.oasis-open.org/specs/a502.htm

[100] CALS Table Model - Wikipedia, , https://en.wikipedia.org/wiki/CALS_Table_Model

HTML 表モデル

[21]

1993年3月28日仕様案おそらく最初の提案
1993年6月24日仕様案HTML+ DTD
1993年7月13日仕様案HTML+ DTD (この頃、ブロック水準要素がこま内容に認められる)
1993年9月10日仕様案HTML+ (tbl から table に改名)
1993年9月実装(この頃、 NCSA (Mosaic) や SoftQuad (HoTMetaL PRO) で実装実験)
1993年11月8日単純表仕様案HTML+ Discussion Document
1994年1月5日単純表仕様案HTML+ DTD (この頃、 tr が包含子に)
1994年12月20日単純表実装NCSA Mosaic 2.0 Alpha 8 >>23
1995年3月28日単純表仕様案HTML 3.0 I-D 00
1995年4月単純表実装NN 1.1
1995年7月7日複雑表仕様案html-tables I-D 00 (後の RFC 1942)
1995年8月単純表実装とりあえず実装した WinIE 1.0
1995年10月単純表実装WinIE 2.0b 本格実装
1996年1月23日複雑表仕様案WD-tables The HTML3 Table Model (後の RFC 1942)
1996年5月5日単純表仕様案HTML 3.2 Draft
1996年5月複雑表実装WinIE 3.0a1
1996年3月複雑表仕様RFC 1942 HTML Tables
1996年12月単純表実装Opera 2.1
1997年1月14日単純表仕様HTML 3.2 勧告 (最終版)
1997年12月複雑表仕様HTML 4.0 FE 勧告
1998年7月20日単純表実装w3m の最初の表実装
複雑表実装Mozilla (Gecko)
2000年1月複雑表実装Opera 4.0
2001年4月10日複雑表・単純表仕様XHTML m12n 1.0 FE 勧告
@@ ??複雑表仕様HTML5 で表系要素が規定される
@@ ??複雑表仕様HTML5 見出しこま算法が改訂される
@@ ??複雑表仕様HTML5 見出しこま算法が改訂される
2009年2月複雑表仕様HTML5 で表系要素のレンダリングが規定される

HTML 表モデルの成立

[22] www-talk では、1993年3月に HTML機能を追加することが提案されています。

Dave RaggettLaTeXtbl (なに?) や Microsoft Word を検討しつつ、 LATEX 染みたモデルを提案しています。

その後半年にわたる議論の末、 CALSICADD 風のモデルが採用されました。

[12] tbl は、HTMLを表す要素として提案されていたものです。 現在の table 要素にあたります。

[13] WWW-Talk Apr-Jun 1993: Tables and HTML+, http://1997.webhistory.org/www.lists/www-talk.1993q2/0271.html

[14] WWW-Talk Apr-Jun 1993: Re HMML?, http://1997.webhistory.org/www.lists/www-talk.1993q2/0385.html

[15] WWW-Talk Jul-Sep 1993: Re: Tables, http://1997.webhistory.org/www.lists/www-talk.1993q3/0554.html

[16] WWW-Talk Jul-Sep 1993: Re: Status of Tables in HTML+?, http://1997.webhistory.org/www.lists/www-talk.1993q3/0876.html

[17] HTML要素概説
要素名
dl
日付
説明
HTML+ DTDdl を使った機能が追加された。 >>91
出典
注釈
  • [91] 以来、 Dave Raggett を中心に HTML機能の実現方法が検討されていた。 当時の版は現存が確認されておらず詳細は不明。
[11] HTML要素概説
要素名
tbl
要素名
tt
要素名
th
要素名
td
要素名
tr
日付
説明
HTML+ DTD に、 tbl, tt, th, td, tr がある。 tbl は現在の table, tt は現在の caption に相当する。 HTML+19930713
[92] HTML要素概説
要素名
tb
日付
説明
HTML+ DTDtb がある。 vertical break of 1/2 line spacing と説明されている。 HTML+19930713
[19] ( 版) http://www.math.utah.edu/~beebe/support/html+tables/html+tables.README

This program will parse a HTML+ Document replace HTML+ Tables

(<tbl>...</tbl>) with preformatted text tables.

[20] , http://www.math.utah.edu/~beebe/support/html+tables/html+tables

[42] HTML要素概説
要素名
tbl
要素名
tt
要素名
th
要素名
td
要素名
tr
日付
説明
Webブラウザーが対応するまでの対処と称して HTML+ (tbl, tt, th, td, tr) を pre に変換するソフトウェアが公開されている。 公開日は不明だが、現在の配布Webサーバー上では付となっている。
出典
[43] HTML要素概説
要素名
tb
日付
説明
WWWWW で、 tb は不要と判断された。
出典

[23] NCSA Mosaic History http://www.ncsa.uiuc.edu/Divisions/PublicAffairs/MosaicHistory/history.html

[7] table を最初に実装したのは NN だと思ってる人は多いけど、 実はそうじゃないんだなぁ。

確かに普及させたのは NN ですが。

[24] NCSA Mosaic 2.0 でがちゃんと実装されているとしたら、 WinIE 1.0 の酷い実装ぶりは何なのかということになりますが、 NCSA Mosaic 2.0 のの実装はどのような感じなのでしょうか? あるいはその期間の他の mosaic variant はどうなのでしょう?

[39] 参考: http://slashdot.jp/comments.pl?sid=81655&cid=280883

[10] HTML要素概説
要素名
table
要素名
caption
要素名
tr
要素名
th
要素名
td
日付
説明
HTML+table, caption, tr, th, td がある。 HTML+19931028

[31] Chapter 2 (1998-05-20 00:22:16 +09:00 版) http://www.w3.org/People/Raggett/book4/ch02.html (名無しさん)

[32] HTML: Table Deployment Strategy (1995-10-18 14:13:35 +09:00 版) http://www.w3.org/MarkUp/table-deployment.html (名無しさん)

[33] >>32

Toward Graceful Deployment of Tables in HTML March 1995, Unpublished
A strategy for gracefully introducing tables into the web using HTTP format negotiation. (revised Oct 1995)

HTML 3.0

[85] HTML: Table Deployment Strategy, , https://www.w3.org/MarkUp/table-deployment

[94] HTML要素概説
要素名
thead
要素名
tbody
要素名
tfoot
日付
説明
HTML3 仕様>>86thead, tbody, tfoot がある。 CALS表モデルを参考にしたという。 >>96
出典
注釈
  • [86] HTML3 世代の仕様書の1つ。 HTMLTables19950707 HTMLTables19950925 HTMLTables19951222 最終版は RFC 1942 となった。 RFC1942 規定されていた機能は HTML4 に取り込まれた。
  • [99] CALS表モデル (CALS table model) CALSの記述方式。 >>95 thead 等や一部の属性HTML に影響を与えた。 その他は違いが多い。
  • CALS 米軍の調達等に関するプロジェクトに由来するが、時代とともに対象が拡大、変化している。 HTML の草創期には Computer aided Acquisition and Logistic Support や Continuous Acquisition and Life-cycle Support の略とされていた。 マニュアル等の記述のための SGML応用が開発された。
[52] HTML要素概説
要素名
colw
日付
説明
HTML3 表仕様>>87colw がある。 >>97 現在の col に当たる。
出典
注釈
  • [87] HTML3 世代の仕様書の1つ。 HTMLTables19950707 HTMLTables19950925 HTMLTables19951222 最終版は RFC 1942 となった。 RFC1942 規定されていた機能は HTML4 に取り込まれた。
[61] HTML要素概説
要素名
hspec
要素名
vspec
日付
説明
HTML3 仕様>>88hspec, vspec がある。 こまの揃え位置を指定する。 >>98 以後の版にはない。 現在は CSS で記述できる。
出典
注釈
  • [88] HTML3 世代の仕様書の1つ。 HTMLTables19950707 HTMLTables19950925 HTMLTables19951222 最終版は RFC 1942 となった。 RFC1942 規定されていた機能は HTML4 に取り込まれた。
[62] HTML要素概説
要素名
col
日付
説明
HTML3 仕様>>89colwcol に改称された。
出典
注釈
  • [89] HTML3 世代の仕様書の1つ。 HTMLTables19950707 HTMLTables19950925 HTMLTables19951222 最終版は RFC 1942 となった。 RFC1942 規定されていた機能は HTML4 に取り込まれた。
[63] HTML要素概説
要素名
colgroup
日付
説明
HTML3 仕様>>90colgroup が追加された。
出典
注釈
  • [90] HTML3 世代の仕様書の1つ。 HTMLTables19950707 HTMLTables19950925 HTMLTables19951222 最終版は RFC 1942 となった。 RFC1942 規定されていた機能は HTML4 に取り込まれた。
・・・

HTML5

[40] HTML5 では HTMLHTML DOM の様々な機能の意味論的・処理モデル的明確化がはかられていますが、 HTML表モデルも例外ではありません。これまでおおよそ自明と思われたのか十分明確に規定されていなかった表の形成 (form a table) (に含まれるや、こまのそれらへの所属などの確定) が算法の形で厳密に定義されたり、 見出しこまの適用対象を発見論的方法も取り入れつつやはり算法として定義したりしています。

[41] また、HTML4 までに導入されたものの十分な運用・実装実績のない機能や、もっぱらの見た目に関する機能は削除されています。 前者の例としては abbr 属性axis 属性、 後者の例としては align 属性border 属性があります。ただし後者は過去の文書との互換性のため、 Webブラウザーがどのようにレンダリングするのが好ましいかの規定が HTML5 に含まれています。

[73] HTML要素概説
要素名
table
要素名
td
要素名
tr
日付
説明
Google検索のデータベースを使った調査によると、 要素の利用数第9, 10, 11位が table, td, tr だった。
出典
[84] HTML要素概説
要素名
table
要素名
caption
要素名
colgroup
要素名
col
要素名
thead
要素名
tbody
要素名
tfoot
要素名
tr
要素名
th
要素名
td
日付
説明
からにかけて、 HTML5が追加された。 現行仕様である。
出典

HTML 表モデルを採用した非 HTML 言語

[64] Guide to the W3C XML Specification (XMLspec) DTD, Version 2.1, , https://www.w3.org/XML/1998/06/xmlspec-report.htm#table

[68] XMLspecHTML4を採用しています。 しかし属性内容モデル等を XMLspec に合わせて改変しています。

[65] XMLspec の古い版は htable, htbody と要素名を置き換えていましたが、 その後 table, tbody に変更しました。 >>64

[69] 古い版は SGML Open の表モデルを採用していましたが、削除されました。

[72] DocBookCALS表HTML表を取り込んでいます。 HTML表caption がある table とない informaltable の2つに分かれています。 属性内容モデルDocBook に合わせて改変しています。

[216] HTML要素概説
要素名
table
要素名
caption
要素名
colgroup
要素名
col
要素名
thead
要素名
tbody
要素名
tfoot
要素名
tr
要素名
th
要素名
td
借用先
DocBook
[74] HTML要素概説
要素名
table
要素名
tr
要素名
td
借用先
WML1

流用例

[38] DocBook ではいくつかの表モデルが採用されていますが、その1つとして HTML表モデルも用いることができます。


[67] DTBookXHTML1 table および関連要素を一通りそのまま採用しています。

[9] caption以外に imggroup などで使えるなど、 独自性もあります。

関連

[36] CSSHTML の表 (のレンダリング) モデルに強く影響を受けた表モデルを規定しています。 HTML要素に対応する display: 属性値として tabletable-rowtable-cell などが用意されています。

[37] OOXMLHTML の影響を受けた表モデルを採用しています。ただし、 要素名や要素の構造など様々な点が大きく異なっており、直接の互換性はまったくありません。

メモ

[35] Re: several messages about tables and related subjects (Ian Hickson <ian@...> 著, 版) http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/13535 (名無しさん)