/[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.1 - (hide annotations) (download)
Wed Nov 12 22:26:36 2008 UTC (16 years ago) by wakaba
Branch: MAIN
File MIME type: text/plain
converted from SuikaWiki3 <http://suika.fam.cx/gate/cvs/suikawiki/wikidata/page/48544D4CC9BDA5E2A5C7A5EB.txt>

1 wakaba 1.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    
265     - 参考: <http://slashdot.jp/comments.pl?sid=81655&cid=280883>
266     - [23] [CITE[NCSA Mosaic History]]
267     <http://www.ncsa.uiuc.edu/Divisions/PublicAffairs/MosaicHistory/history.html>
268    
269     [7] [CODE(HTMLe)[table]] を最初に実装したのは [[NN]] だと思ってる人は多いけど、
270     実はそうじゃないんだなぁ。
271    
272     ;; 確かに普及させたのは [[NN]] ですが。
273    
274     [22] [[www-talk]] では、1993年3月に [[HTML]]
275     に[[表]]機能を追加することが提案されています。
276    
277     ;;
278     [CITE@en[EMail Msg <199303280705.AA25536@kauri.vuw.ac.nz>]]
279     <http://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1993q1.messages/278.html>
280    
281     [[Dave Raggett]] は [[LaTeX]] や [[tbl]] (なに?) や [[Microsoft Word]]
282     を検討しつつ、 L[SUP[A]]T[SUB[E]]X 染みた[[表]]モデルを提案しています。
283    
284     ;;
285     [CITE@en[EMail Msg <9303311205.AA22020@manuel.hpl.hp.com>]]
286     <http://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1993q1.messages/293.html>
287    
288     その後半年にわたる議論の末、 [[CALS]]・[[ICADD]]
289     風の[[表]]モデルが採用されました。
290    
291     [24] [[NCSA Mosaic]] 2.0 で[[表]]がちゃんと実装されているとしたら、
292     [[WinIE 1.0]] の酷い実装ぶりは何なのかということになりますが、
293     [[NCSA Mosaic]] 2.0 の[[表]]の実装はどのような感じなのでしょうか?
294     [WEAK[あるいはその期間の他の [[mosaic]] variant はどうなのでしょう?]]
295    
296     [31]
297     [CITE[Chapter 2]] ([CODE[1998-05-20 00:22:16 +09:00]] 版) <http://www.w3.org/People/Raggett/book4/ch02.html>
298     ([[名無しさん]])
299    
300     [32]
301     [CITE[HTML: Table Deployment Strategy]] ([CODE[1995-10-18 14:13:35 +09:00]] 版) <http://www.w3.org/MarkUp/table-deployment.html>
302     ([[名無しさん]])
303    
304     [33]
305     >>32
306    
307     >
308     :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)
309    
310     ;; [CITE[HTML Specs, Drafts, and Reports]] ([CODE[2000-06-20 03:02:20 +09:00]] 版) <http://www.w3.org/MarkUp/Bibliography#linktypes>
311    
312     ([[名無しさん]])
313    
314     [[#comment]]
315    
316    
317     * メモ
318    
319     [35]
320     [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>
321     ([[名無しさん]])
322    

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24