/[pub]/suikawiki/sw4data/ids/2/768.txt
Suika

Contents of /suikawiki/sw4data/ids/2/768.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (show annotations) (download)
Thu Feb 19 21:45:50 2009 UTC (15 years, 9 months ago) by wakaba
Branch: MAIN
CVS Tags: before-graph-20090923, suika-20100509, HEAD
Changes since 1.3: +24 -3 lines
File MIME type: text/plain
updated by (anon)

1
2 [1]
3 [[HTML]] で採用されている[DFN[[RUBYB[表モデル] @en[table model]]]]について。
4
5 [2]
6 [[HTML]] の[[表]]には、[DFN[単純表モデル]]と[DFN[複雑表モデル]]の2種類があります。
7 いずれも、[[表]]、すなわち[[二次元配列]]状に整理されたデータを記述する基本的能力を備えていますが、
8 複雑表モデルでは[[行]]と[[列]]をそれぞれ[[群]]化できます。
9
10 [[HTML 4]] は、複雑表モデルを採用しています。
11 [[XHTML Basic]] は、単純表モデルを採用しています。
12
13 ;;
14 [[XHTML m12n]] では単純表用モジュールと複雑表用モジュールの両方が用意されています。
15
16 [3] '''[[HTML]] [[表]]モデルの構成要素'''
17 ,名前 ,要素型名 ,単純表 ,複雑表 ,説明
18 ,[[表]] ,[CODE(HTMLe)@en[[[table]]]] ,○ ,○[[二次元配列]]全体
19 ,[[表題]] ,[CODE(HTMLe)@en[[[caption]]]] ,○ ,○ ,[[表]]の[[見出し]] ([[表]]に1つ以下)
20 ,[[行]] ,[CODE(HTMLe)@en[[[tr]]]] ,○ ,○ ,
21 ,[[行群]] ([[頭部]]) ,[CODE(HTMLe)@en[[[thead]]]] ,× ,○ ,[[見出し]]とみなせる[[行]]の[[群]] ([[表]]に1つ以下)
22 ,[[行群]] ([[本体]]) ,[CODE(HTMLe)@en[[[tbody]]]] ,× (明示できない) ,○ ,[[本体]]とみなせる[[行]]の[[群]] ([[表]]に1つ以上)
23 ,[[行群]] ([[脚部]]) ,[CODE(HTMLe)@en[[[tfoot]]]] ,× ,○ ,[[尾部]]とみなせる[[行]]の[[群]] ([[表]]に1つ以下)
24 ,[[列]] ,[CODE(HTMLe)@en[[[col]]]] ,× (明示できない) ,○ ,
25 ,[[列群]] ,[CODE(HTMLe)@en[[[colgroup]]]] ,× ,○ ,[[列]]の[[群]]
26 ,[[こま]] ([[見出し]]) ,[CODE(HTMLe)@en[[[th]]]] ,○ ,○ ,[[行]]と[[列]]で指定される[[見出し]]
27 ,[[こま]] ([[本体]]) ,[CODE(HTMLe)@en[[[td]]]] ,○ ,○ ,[[行]]と[[列]]で指定されるデータ ([[本体]])
28
29 [[#comment]]
30
31
32
33 ** 設計について
34
35 [25] HTML 表模型の設計に関する解説が HTML 4 B.5.1 にあります。
36
37 ;; [CSECTION@en[B.5 Notes on tables]]
38 <IW:HTML4:"appendix/notes.html#notes-tables">
39
40 それによれば、 HTML 表模型は、
41 - 次のものの研究から発展しています。
42 -- SGML 表模型
43 -- [RUBY[文書処理器] [ワープロ]]での表の扱い
44 -- 雑誌、書籍、その他紙媒体での様々な表配置技術
45 - 単純な表は単純に、必要なら複雑な表も扱えるように設計されました。
46 -- 常用の文章編集器で HTML の表をマークできます。
47 -- [[学習曲線]]が緩くなります。
48 - [[こま]]の連結や揃えなどの表現特性のこま群への関連付けは他の文書書式からの変換や
49 [[WYSIWTG]] 編集器での作成と相性が良いよう考慮しています。
50
51 [26] '''動的再書式付け''' [SRC[HTML 4 B.5.1.1]]。
52 HTML 表模型では、表の大きさや[[フォント]]などについて著者が制御しません。
53 ですから、列幅を絶対[[画素]]単位指定に依存するのは危険です。
54 よって、表は窓やフォントの大きさに合わせて動的に大きさを変更できなければなりません。
55
56 著者は列の相対幅のヒントを提供できますが、
57 利用者エージェントはこまの内容で一番幅の広い要素をレンダリングできる広さを確保するべきです。
58 著者の指定を上書きする時には、各列の相対幅が極端に変わることは避けるべきです。
59
60 [27] '''漸次表示''' [SRC[HTML 4 B.5.1.2]]。
61 表が大きな時やネットワーク接続が遅い時は、表を徐々に表示するのが利用者的にはよろしいです。
62 利用者エージェントは表のすべてのデータを受信する前に表示開始できるべきです。
63 著者は、漸次表示のためのヒントとして、列の数や表・各列の幅を指定できます。
64 [WEAK[(表の幅は既定値が [CODE(HTML)[100%]] で、列の幅の既定値は均分した値です。いずれも [CODE(HTMLe)[[[table]]]] 要素や [CODE(HTMLe)[[[col]]]] 要素の [CODE(HTMLa)[[[width]]]] 属性で上書きできます。)]]
65
66 列の数は、最初の行が到着するのを待てば良いと提案した人もいましたが、
67 最初の行の内容が多ければ時間がかかります。ですから、
68 漸次表示のためには著者が列数を明示する必要があります。
69 著者は漸次表示モードにするか、こま内容にあわせて幅を決定するモード
70 (2パス自動幅決定モード) にするかも知らせる必要があります。
71 前者は [CODE(HTMLe)[col]] 要素や [CODE(HTMLe)[[[colgroup]]]] 要素で列数を明示します。
72 後者は1パス目で UA が列数を決定します。
73
74 [28] '''構造と表現''' [SRC[HTML 4 B.5.1.3]]。
75 [[Stricter]] 的にはこま内の文章の揃え位置やこま間の境界線はレンダリングの問題で、
76 構造の話ではありません。ですが、このような特徴は (ある応用から別の応用へと)
77 非常に可搬ですから、構造情報とまとめておくと便利です。 HTML
78 表模型はほとんどのレンダリング情報をスタイル・シートに任せていますが、
79 必ず使わないといけないわけではありません。
80
81 現在の [[DTP]] ソフトウェアは表のレンダリングを極めて多様に制御できますが、
82 HTML でそれをやると [[RTF]] や [[MIF]] のようにでかくなってしまうので非現実的です。
83 HTML はそうせずに、よく使われる線種から著者が選ぶ能力程度を提供しています。
84 それ以上の制御はスタイル・シートで行えます。
85
86 開発の過程で表罫パターン指定方法が色々検討されました。
87 辺の加減算ができるようにすると算法が比較的複雑になります。
88 [WEAK[(例えば、すべての表の要素に [CODE(HTMLa)[[[frame]]]] や [CODE(HTMLa)[[[rules]]]] を持たせると、あるこまのある辺の罫線の決定に24段階程度も必要になります。)]]
89 それだけしても需要を完全に満たすことはできませんから、
90 単純で直感的でほとんどの目的に十分な程度に抑えてあります。
91 より複雑な方法を標準化する際には更に実験が必要です。
92
93 [29] '''行群・列群''' [SRC[HTML 4 B.5.1.4]]。
94 HTML では、 [[CALS]] 表模型に倣い、表の列を頭・体・足に分類できます。
95 こうすることでレンダリング情報の表現が簡単になりますし、
96 頁境界をまたぐ表で頭や足を反復させられますし、
97 体だけ scroll 可能にすることもできます。 [CODE(HTMLe)[[[tfoot]]]] は
98 [CODE(HTMLe)[[[thead]]]] の前に置くので、
99 表全体を処理するのを待たずレンダリングできます。
100
101 [30] '''アクセス可能性''' [SRC[HTML 4 B.5.1.5]]。
102 HTML 表模型は、こまを名札付けできますから、
103 高品質な文章を生成できます。データベースや表計算との輸出入の自動化にも使えます。
104
105 [[#comment]]
106
107
108 *** HTML 表モデルの限界
109
110 [4]
111 '''非正方形的連結'''
112
113 [[HTML]] の[[表モデル]]は、1つの[[こま]]に連結する場合、
114 連結[[行]]数を [CODE(HTMLa)@en[[[rowspan]]]] [[属性]]、
115 連結[[列]]数を [CODE(HTMLa)@en[[[colspan]]]] [[属性]]で指定しますが、
116 このために
117 [PRE(example aafig)[
118 +-----+-----+-----+
119 | and | 0 | 1 |
120 +-----+-----+-----+
121 | 0 | 0 |
122 +-----+ +-----+
123 | 1 | | 1 |
124 +-----+-----+-----+
125 ]PRE]
126
127 のような[[表]]を表すことはできません。
128
129 ;; [[枠線]]の表示を変えればこのように''見える''表を作ることはできますが、
130 あくまでそう''見える''に過ぎません。
131
132 [5]
133 '''入れ子の群'''
134
135 [[行群]]や[[列群]]が入れ子になった関係を表すことができません。
136
137 例えば、
138 [PRE(example aafig)[
139 --------------------
140 中部 東海 静岡
141 愛知
142 岐阜
143 三重
144 --------------
145 北陸 富山
146 石川
147 福井
148 --------------------
149 近畿 滋賀
150 京都
151 奈良
152 和歌山
153 大阪
154 兵庫
155 --------------------
156 ]PRE]
157
158 のような構造を ([CODE(HTMLe)@en[[[tbody]]]] を入れ子にするなどして)
159 記述することはできません。
160
161 ;; 一応 [[HTML 4]] 的には [CODE(HTMLe)@en[[[axis]]]]
162 [[属性]]が用意されてはいますが・・・。
163
164 [6]
165 '''こまの細分'''
166
167 [[こま]]内に更に[[表]]の一部と考えられる構造が存在し得ますが、
168 [[HTML]] の[[表モデル]]ではそれを記述できません。
169
170 例えば、[[行]]と[[列]]の[[見出し]]に対する[[見出し]][[こま]]
171 (次例の左上の[[こま]]) のような表現は極めてよく見られますが、
172 [[HTML]] では表せません。
173
174 [PRE(example aafig)[
175 +---+----+----+----+
176 |\年| | | |
177 | \ | 01 | 02 | 03 |
178 |市\| | | |
179 +---+----+----+----+
180 |津 | 32 | 42 | 42 |
181 +---+----+----+----+
182 |呉 | 55 | 32 | 32 |
183 +---+----+----+----+
184 ]PRE]
185
186 [PRE(example aafig)[
187 +---+----+----+----+
188 | | 1 | 2 | 3 |
189 +---+----+----+----+
190 | A | 3/ | 5/ | 2/ |
191 | |/ 3|/ 8|/ 10|
192 +---+----+----+----+
193 | B | 5/ | 1/ | 9/ |
194 | |/ 5|/ 6|/ 15|
195 +---+----+----+----+
196 ]PRE]
197
198 その回の得点と累計点を並べたこのような[[表]]も、 [[HTML]]
199 では表せません。
200
201 ;; [CODE(HTMLe)@en[[[td]]]] 内に適当な[[要素型]]の[[要素]]を使って記述することもできますが、
202 この例の場合[[こま]]内の構造も含めて[[表]]の構造であると考えた方が自然ですから、
203 そのことを記述できる方法がある方が好ましいと思われます。
204
205 [7]
206 '''頭・脚的列群'''
207
208 [[行群]]には頭・体・足の別があるのに、[[列群]]は一種類しかありません。
209 [[表]]は [WEAK[(少なくてもこの点では)]]
210 本来[[行]]方向と[[列]]方向で対称的なはずですが、 [[HTML]]
211 ではその区別を記述できません。
212
213 [8]
214 '''表題以外の付加情報'''
215
216 [CODE(HTMLe)@en[[[table]]]] [[要素]]内には、
217 狭義の[[表]]の他に[[表題]] ([CODE(HTMLe)@en[[[caption]]]])
218 を含めることができますが、その他の物は [[HTML]]
219 の[[内容モデル]]では含められません。
220
221 例えば[[表題]]と共に短い説明が加えられていたり、
222 [[表]]のデータや項目に関する補足説明が配置されていたりすることがありますが、
223 [[HTML]] ではこれを明確に記述することができません。
224
225 ;; [CODE(HTMLe)@en[[[table]]]] [[要素]]の外に記述することはもちろんできますが、
226 [[表題]]が [CODE(HTMLe)@en[[[table]]]] に含まれるのに、
227 [[表題]]以外の付属情報が含められないのは、
228 現在の仕様の制約以上の理由がありません。
229
230 [34]
231 [CITE@en[HTML tables: Why not column based tables in addition to row based tables?]] ([[tenacious-techhunter@comcast.net]] 著, [CODE[2007-10-02 07:53:55 +09:00]] 版) <http://lists.w3.org/Archives/Public/public-html-comments/2007Oct/0000.html>
232 ([[名無しさん]])
233
234 [[#comment]]
235
236
237 * 歴史
238
239 [21]
240 ,1993年3月28日 , ,仕様案 ,おそらく最初の提案
241 ,1993年6月24日 , ,仕様案 ,HTML+ DTD
242 ,1993年7月13日 , ,仕様案 ,HTML+ DTD (この頃、ブロック水準要素がこま内容に認められる)
243 ,1993年9月10日 , ,仕様案 ,HTML+ ([CODE(HTMLe)[tbl]] から [CODE(HTMLe)[table]] に改名)
244 ,1993年9月 , ,実装 ,(この頃、 NCSA (Mosaic) や SoftQuad (HoTMetaL PRO) で実装実験)
245 ,1993年11月8日 ,単純表 ,仕様案 ,HTML+ Discussion Document
246 ,1994年1月5日 ,単純表 ,仕様案 ,HTML+ DTD (この頃、 [CODE(HTMLe)[tr]] が包含子に)
247 ,1994年12月20日 ,単純表 ,実装 ,[[NCSA Mosaic]] 2.0 Alpha 8 [SRC[>>23]]
248 ,1995年3月28日 ,単純表 ,仕様案 ,[[HTML 3.0]] [[I-D]] 00
249 ,1995年4月 ,単純表 ,実装 ,[[NN]] 1.1
250 ,1995年7月7日 ,複雑表 ,仕様案 ,html-tables I-D 00 (後の RFC 1942)
251 ,1995年8月 ,単純表 ,実装 ,とりあえず実装した [[WinIE]] 1.0
252 ,1995年10月 ,単純表 ,実装 ,[[WinIE 2.0]]b 本格実装
253 ,1996年1月23日 ,複雑表 ,仕様案 ,WD-tables [CITE[The HTML3 Table Model]] (後の RFC 1942)
254 ,1996年5月5日 ,単純表 ,仕様案 ,[[HTML 3.2]] Draft
255 ,1996年5月 ,複雑表 ,実装 ,[[WinIE 3.0]]a1
256 ,1996年3月 ,複雑表 ,仕様 ,[[RFC 1942]] [CITE[HTML Tables]]
257 ,1996年12月 ,単純表 ,実装 ,[[Opera]] 2.1
258 ,1997年1月14日 ,単純表 ,仕様 ,HTML 3.2 勧告 (最終版)
259 ,1997年12月 ,複雑表 ,仕様 ,[[HTML 4.0]] [ABBR[FE] [第1版]] 勧告
260 ,1998年7月20日 ,単純表 ,実装 ,[[w3m]] の最初の表実装
261 , ,複雑表 ,実装 ,[[Mozilla]] ([[Gecko]])
262 ,2000年1月 ,複雑表 ,実装 ,Opera 4.0
263 ,2001年4月10日 ,複雑表・単純表 ,仕様 ,[[XHTML m12n]] 1.0 [ABBR[FE] [第1版]] 勧告
264 ,@@ ?? ,複雑表 ,仕様 ,[[HTML5]] で表系要素が規定される
265 ,@@ ?? ,複雑表 ,仕様 ,[[HTML5]] 見出しこま算法が改訂される
266 ,@@ ?? ,複雑表 ,仕様 ,[[HTML5]] 見出しこま算法が改訂される
267 ,2009年2月 ,複雑表 ,仕様 ,[[HTML5]] で表系要素のレンダリングが規定される
268
269 [39] 参考: <http://slashdot.jp/comments.pl?sid=81655&cid=280883>
270
271 ** HTML 表モデルの成立
272
273 [23] [CITE[NCSA Mosaic History]]
274 <http://www.ncsa.uiuc.edu/Divisions/PublicAffairs/MosaicHistory/history.html>
275
276 [7] [CODE(HTMLe)[table]] を最初に実装したのは [[NN]] だと思ってる人は多いけど、
277 実はそうじゃないんだなぁ。
278
279 ;; 確かに普及させたのは [[NN]] ですが。
280
281 [22] [[www-talk]] では、1993年3月に [[HTML]]
282 に[[表]]機能を追加することが提案されています。
283
284 ;;
285 [CITE@en[EMail Msg <199303280705.AA25536@kauri.vuw.ac.nz>]]
286 <http://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1993q1.messages/278.html>
287
288 [[Dave Raggett]] は [[LaTeX]] や [[tbl]] (なに?) や [[Microsoft Word]]
289 を検討しつつ、 L[SUP[A]]T[SUB[E]]X 染みた[[表]]モデルを提案しています。
290
291 ;;
292 [CITE@en[EMail Msg <9303311205.AA22020@manuel.hpl.hp.com>]]
293 <http://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1993q1.messages/293.html>
294
295 その後半年にわたる議論の末、 [[CALS]]・[[ICADD]]
296 風の[[表]]モデルが採用されました。
297
298 [24] [[NCSA Mosaic]] 2.0 で[[表]]がちゃんと実装されているとしたら、
299 [[WinIE 1.0]] の酷い実装ぶりは何なのかということになりますが、
300 [[NCSA Mosaic]] 2.0 の[[表]]の実装はどのような感じなのでしょうか?
301 [WEAK[あるいはその期間の他の [[mosaic]] variant はどうなのでしょう?]]
302
303 [31]
304 [CITE[Chapter 2]] ([CODE[1998-05-20 00:22:16 +09:00]] 版) <http://www.w3.org/People/Raggett/book4/ch02.html>
305 ([[名無しさん]])
306
307 [32]
308 [CITE[HTML: Table Deployment Strategy]] ([CODE[1995-10-18 14:13:35 +09:00]] 版) <http://www.w3.org/MarkUp/table-deployment.html>
309 ([[名無しさん]])
310
311 [33]
312 >>32
313
314 >
315 :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)
316
317 ;; [CITE[HTML Specs, Drafts, and Reports]] ([CODE[2000-06-20 03:02:20 +09:00]] 版) <http://www.w3.org/MarkUp/Bibliography#linktypes>
318
319 **
320
321 @@ ・・・
322
323 ** HTML5
324
325 [40] [[HTML5]] では [[HTML]]・[[HTML DOM]] の様々な機能の[[意味論]]的・[[処理モデル]]的明確化がはかられていますが、
326 [[HTML表モデル]]も例外ではありません。これまでおおよそ自明と思われたのか十分明確に規定されていなかった[RUBYB[表の形成]@en[form a table]]
327 ([[表]]に含まれる[[行]]や[[列]]や、[[こま]]のそれらへの所属などの確定) が[[算法]]の形で厳密に定義されたり、
328 [[見出しこま]]の適用対象を[[発見論]]的方法も取り入れつつやはり[[算法]]として定義したりしています。
329
330 [41] また、[[HTML4]] までに導入されたものの十分な運用・実装実績のない機能や、もっぱら[[表]]の見た目に関する機能は削除されています。
331 前者の例としては [CODE(HTMLa)@en[[[abbr]]]] [[属性]]や [CODE(XMLa)@en[[[axis]]]] [[属性]]、
332 後者の例としては [CODE(HTMLa)@en[[[align]]]] [[属性]]や [CODE(XMLa)@en[[[border]]]]
333 [[属性]]があります。ただし後者は過去の[[文書]]との互換性のため、 [[Webブラウザー]]がどのように[[レンダリング]]するのが好ましいかの規定が
334 [[HTML5]] に含まれています。
335
336
337 * 流用例
338
339 [38] [[DocBook]] ではいくつかの[[表モデル]]が採用されていますが、その1つとして
340 [[HTML表モデル]]も用いることができます。
341
342 * 関連
343
344 [36] [[CSS]] は [[HTML]] の表 (の[[レンダリング]]) [[モデル]]に強く影響を受けた[[表モデル]]を規定しています。
345 [[HTML]] の[[要素]]に対応する [CODE(CSS)@en[[[display]]:]] [[属性値]]として
346 [CODE(CSS)@en[[[table]]]]、[CODE(CSS)@en[[[table-row]]]]、[CODE(CSS)@en[[[table-cell]]]]
347 などが用意されています。
348
349 [37] [[OOXML]] は [[HTML]] の影響を受けた[[表モデル]]を採用しています。ただし、
350 [[要素名]]や要素の構造など様々な点が大きく異なっており、直接の互換性はまったくありません。
351
352 * メモ
353
354 [35]
355 [CITE[Re: several messages about tables and related subjects]] ([[Ian Hickson <ian@...>]] 著, [TIME[2008-03-23 19:29:56 +09:00]] 版) <http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/13535>
356 ([[名無しさん]])
357

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24