?? rfc1942.txt
字號:
組織:中國互動出版網(http://www.china-pub.com/)
RFC文檔中文翻譯計劃(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
譯者:黃俊(hujiao hj_chinese@yahoo.com)
譯文發布時間:2001-4-26
版權:本中文翻譯文檔版權歸中國互動出版網所有。可以用于非商業用途自由轉載,但必須
保留本文檔的翻譯及版權信息。
Network Working Group D. Raggett
Request for Comments: 1942 W3C
Category: Experimental May 1996
HTML中的表格
(RFC1942 HTML Tables)
本備忘錄的狀態
本備忘錄描述了一種Internet社區的試驗協議。本備忘錄并未規定任何Internet標準,它需
要進一步進行討論和建議以得到改進。本備忘錄的發布不受限制。
摘要
超文本標記語言(HTML)是一種簡單的用來建立超文本文檔的標記語言,以便能讓文檔能
在不同的平臺上使用。HTML文檔是具有通用語義的SGML文檔,適合在很多應用程序中
來表達信息。本規范對HTML做出了擴展以便能支持各種表格。該模型被設計成可以和聯
合樣式表一道工作,但也可以獨立于聯合樣式表。它還可以支持制作盲文,語言,或者數據
庫和電子數據表中的數據表格。HTML的表格模型包含了CALS表格模型中的某些方面,
比如,可以將表格的行用thead, tbody,tfoot組織起來,還有根據上下文可以簡潔地指定
不同的單元格如何對齊。
目錄
1.最新的修改 ................................................. 2
2.主要介紹 .…................................................ 2
3.設計的基本原理 .......................................... 5
4.了解表格DTD ............................................ 6
5.推薦的布局算法 ............................................ 20
6.HTML表格DTD ........................................... 22
7.參考文章 ..............…..................................... 26
8.安全性考慮 ..............….................................. 26
9.作者地址 ....................……............................ 27
1.最新的修改
本規范擴展了HTML以支持表格。表格模式是由HTML+的早期工作以及HTML3的初稿脫
胎而來的。更早的模型是根據信息提供者所提出的對更好地控制表格形式的信息的布局的要
求而擴展的。
? 根據指定的字符對齊,比如:"."和":"。例如,將一列數字按照小數點來對齊。
? 在制定表格的框架和規則時有更大的靈活性。
? 在大的表格中能夠根據收到的數據逐段顯示。
? 能夠支持在保持標題頭不動的情況下進行表格的卷動,而且對跨頁的表格打印有更好的
支持。
? 可選擇的列的默認對齊屬性。
此外,還有一個主要的目標就是要能夠給那些很多在Netscape上所實現的表格應用提供向
后兼容性。其次的目標是在將表格按照SGML CALS模型導入的時候,要能夠簡化工作量。
最終的草案將讓Netscape和Microsoft瀏覽器兼容同樣的ALIGN(對齊)屬性。我們已經
對DIR屬性的角色做出了一些說明,并針對當混合使用列的絕對寬度和相對寬度時所推薦
采取的行動。
我們采用了一個新的元素COLGROUP,以便能將那些用一個或更多的COL表示的,帶有
不同的寬度和對齊屬性的列組合成不同的組。COLGROUP的語義已經在前面的草案中做出
了說明,并用RULES=GROUPS代替了RULES=BASIC。
我們修改了FRAME和RULES的屬性,這樣既不會和SGML中的名字沖突,也不會和ALIGN
和VLALIGN屬性沖突。做出這樣的修改主要是考慮到將來如果規范對表格元素進行擴展,
支持FRAME和RULES屬性時所可能帶來的問題。
2.對HTML表格的主要介紹
表格由一個可選的標題頭開始,后面跟著一行或許多行。每一行由一個以上的單元格組成,
并可以區分為表頭和數據單元格。單元格可以被合并以跨列或跨行,帶有可被表現為語音或
盲文的屬性,以及能夠將表格數據導出到數據庫中的屬性。這個模型提供了部分的能力來控
制表格的外觀,比如說對單元格內容的水平或垂直對齊,框線的樣式,單元格內的是周邊距。
你可以通過將行或列組合在一起來影響這些屬性。表格能包含各種各樣的內容,比如說標題
頭,列表,段落,表單,圖形,預定義的文字甚至嵌套表格。
示例:
<TABLE BORDER>
<CAPTION>A test table with merged cells</CAPTION>
<TR><TH ROWSPAN=2><TH COLSPAN=2>Average
<TH ROWSPAN=2>other<BR>category<TH>Misc
<TR><TH>height<TH>weight
<TR><TH ALIGN=LEFT>males<TD>1.9<TD>0.003
<TR><TH ALIGN=LEFT ROWSPAN=2>females<TD>1.7<TD>0.002
</TABLE>
在一個啞終端上,這將會顯示出類似下面的東西:
A test table with merged cells
/--------------------------------------------------\
| | Average | other | Misc |
| |-------------------| category |--------|
| | height | weight | | |
|-----------------------------------------|--------|
| males | 1.9 | 0.003 | | |
|-----------------------------------------|--------|
| females | 1.7 | 0.002 | | |
\--------------------------------------------------/
接下來,我們再看一個帶行組合和列組合的例子(摘錄自Nadine Kano的《開發國際性的
軟件》)。首先是表格實際顯示出來的樣子:
CODE-PAGE SUPPORT IN MICROSOFT WINDOWS
===================================================================
=====
Code-Page| Name |ACP OEMCP| Windows Windows Windows
ID | | | NT 3.1 NT 3.51 95
------------------------------------------------------------------------
1200 |Unicode (BMP of ISO 10646) | | X X *
1250 |Windows 3.1 East. Europe | X | X X X
1251 |Windows 3.1 Cyrillic | X | X X X
1252 |Windows 3.1 US (ANSI) | X | X X X
1253 |Windows 3.1 Greek | X | X X X
1254 |Windows 3.1 Turkish | X | X X X
1255 |Hebrew | X | X
1256 |Arabic | X | X
1257 |Baltic | X | X
1361 |Korean (Johab) | X | ** X
------------------------------------------------------------------------
437 |MS-DOS United States | X | X X X
708 |Arabic (ASMO 708) | X | X
709 |Arabic (ASMO 449+, BCON V4)| X | X
710 |Arabic (Transparent Arabic)| X | X
720 |Arabic (Transparent ASMO) | X | X
===================================================================
=====
這里使用的COLGROUP元素將列組合起來并賦予默認的對齊屬性。TBODY元素用來組合
行。FRAME和RULE屬性用來選擇那些需要顯示的框線。
<table border=2 frame=hsides rules=groups>
<caption>CODE-PAGE SUPPORT IN MICROSOFT WINDOWS</caption>
<colgroup align=center>
<colgroup align=left>
<colgroup align=center span=2>
<colgroup align=center span=3>
<thead valign=top>
<tr>
<th>Code-Page<br>ID
<th>Name
<th>ACP
<th>OEMCP
<th>Windows<br>NT 3.1
<th>Windows<br>NT 3.51
<th>Windows<br>95
<tbody>
<tr><td>1200<td>Unicode (BMP of ISO 10646)<td><td><td>X<td>X<TD>*
<tr><td>1250<td>Windows 3.1 Eastern European<td>X<td><td>X<td>X<TD>X
<tr><td>1251<td>Windows 3.1 Cyrillic<td>X<td><td>X<td>X<TD>X
<tr><td>1252<td>Windows 3.1 US (ANSI)<td>X<td><td>X<td>X<TD>X
<tr><td>1253<td>Windows 3.1 Greek<td>X<td><td>X<td>X<TD>X
<tr><td>1254<td>Windows 3.1 Turkish<td>X<td><td>X<td>X<TD>X
<tr><td>1255<td>Hebrew<td>X<td><td><td><td>X
<tr><td>1256<td>Arabic<td>X<td><td><td><td>X
<tr><td>1257<td>Baltic<td>X<td><td><td><td>X
<tr><td>1361<td>Korean (Johab)<td>X<td><td><td>**<td>X
<tbody>
<tr><td>437<td>MS-DOS United States<td><td>X<td>X<td>X<TD>X
<tr><td>708<td>Arabic (ASMO 708)<td><td>X<td><td><td>X
<tr><td>709<td>Arabic (ASMO 449+, BCON V4)<td><td>X<td><td><td>X
<tr><td>710<td>Arabic (Transparent Arabic)<td><td>X<td><td><td>X
<tr><td>720<td>Arabic (Transparent ASMO)<td><td>X<td><td><td>X
</table>
3.設計的基本原理
HTML表格模型來自于各方面相關軟件的研究,包括現有的SGML表格模型,常用的字處
理軟件包對表格的處理,雜志、書刊及其他紙質文檔中對表格數據的排版等。該模型能夠讓
簡單的表格簡潔地表述,而如果需要的話,可以增加額外的復雜性。這對那些每天都要修改
內容的文字編輯者來說,非常具有實際意義,同時也減少了從頭開始的過程。這個特性對于
HTML今天的成功是非常重要的。
越來越多的人使用來自其他文檔格式的過濾器或者直觀的所見即所得的HTML編輯器。對
HTML表格模型來說,很好地和這些創作HTML的方法結合在一起是非常重要的。這將影
響到如何顯示處理那些跨行或跨列的單元格,以及如何表現那些組合在一起的單元格的對齊
或者其他的屬性。
對HTML表格模型的一個主要考慮就是瀏覽器上使用的字體和窗口大小等是不受創建者控
制的。這就給那些依靠用絕對值的單位,比如picas或pixels來指定列寬的表格帶來一定的
風險。相應的,表格可以被動態地擴展大小以和現有的窗口大小和字體協調。作者可以用相
對寬度來指示列寬,而用戶端應該確認列的寬度是否足夠能容納最大的單元格的內容。如果
作者的本來意圖必須被更改的話,個別用相對寬度指定的列不應該被大幅度的改變。
對于大表格或者比較慢的網絡連接速度來說,如果能在完成所有的數據傳輸前就開始顯示表
格將會是十分理想的。對大多數用戶代理來說,默認的窗口寬度能顯示80個字符,許多
HTML頁面都是按照這個默認的設置來設計圖形的。創建者能夠給用戶代理一個提示來啟動
表格內容的逐行顯示。這個特性需要創建者事先聲明列的數目,以及提供用相對或絕對尺寸
對不同的列寬和表格寬度的定義。
對于逐行顯示來說,瀏覽器需要知道列的數目和它們的寬度。默認的表格寬度是當前窗口的
大小(width="100%")。這可以通過改變TABLE的起始標記里的WIDTH屬性來改變。默
認地,所有的列都具有同樣的寬度,但你也能夠在表格數據開始前,指定一個或多個COL
元素的列寬。
剩下的問題就是列的數目了。有些人曾經建議直到表格的第一行數據傳輸完后才開始顯示,
但如果單元格里有很多的內容的話,這可能要花費相當多的時間。大體上看來,如果要實現
逐行顯示,讓創建者在TABLE的起始標記里面明確地指明列的數目可能會更加現實一些。
創建者可能還需要能夠通知瀏覽器是否要使用逐行顯示,或者是否要自動縮放表格以便能夠
容納單元格內的內容。在這兩種涉及到自動調整大小方式的情況中,由于對于逐行顯示方式
來說,列的數目需要在開始的時候就被注明,所以列的數目在第一種情況里就能夠得到確認。
因此,看起來使用COLS=_nn_會比使用LAYOUT屬性比如LAYOUT=FIXED或者
LAYOUT=AUTO來得更加合理。
一般來說,從兩方面來考慮文檔是非常有幫助的:結構化的標記,比如標題頭,段落,列表,
表格以及圖片;控制顯示的標記,比如邊距,開始的空格,字體和字號。過去的經驗告訴我
們應該將文檔中結構化的信息和控制顯示的信息區分開來。將這兩者混在一起將會給管理和
維護文檔帶來不斷增加的成本,并減少程序和媒體間的可移植性。
對表格來說,從純化論者的眼光來看,單元格中的文字對齊,單元格間的框線都是控制顯示
的信息。但是,如果將這些和結構化的信息組合起來將是非常有用的,因為這些特性在從一
個程序轉移到另一個程序中時,具有著很強的移植性。HTML表格模型將大部分控制顯示的
信息留給了關聯式樣表。該模型被設計成可以利用類似的式樣表,但也可以單獨存在。
HTML+早期的研究提出了一個較簡單的模型,本方案對該模型提出了一個超集。表格被認
為是由一個可選的標題及一系列的行組成,而這些行又是由一系列的單元格所組成。該模型
進一步區分了標題頭和數據單元格,并且允許單元格能夠跨越多行和多列。
按照CALS表格模型,本方案同樣允許表格的行可以被組織成標題頭,正文,和腳注部分。
這簡化了顯示控制信息的表述,而且當表格超出了頁的邊界的時候,能夠重復表格的標題頭
和腳注所在的行,也能夠在一個可滾動的表格面板上提供一個固定的標題頭。在標記語言中,
腳注部分被放置在正文部分的前面。這是來自于CALS的一個優化考慮,當處理非常長的
表格時,可以先顯示腳注部分,而不用等到所有的表格內容的傳輸結束后才開始。
對于視覺障礙人士來說,HTML還減少了由于使用圖形窗口界面而給他們帶來的不便。
HTML表格模型包括能對每個單元格進行標識的屬性,以支持高質量的從文字到語音的轉
換。同樣的屬性也可以被用來支持自動將表格數據導入或導出到數據庫或電子表格中。
現有的桌面出版軟件提供豐富的對表格顯示的控制,但要在HTML中也這樣實現是不切合
實際的,這將會將HTML變成像RTF或MIF那樣臃腫的文字格式。然而,本方案確實讓創
建者能夠在一套常用的邊框式樣中有所選擇。FRAME屬性控制表格四周框線的顯示方式,
而RULES屬性決定了表格內部的劃線方式。
在本方案的擬定過程中,我們嘗試了一系列的方法來描繪表格框線的式樣。其中的一個問題
關心的是其所能制作出的語句的種類。對邊緣減少和邊緣增加的內在支持導致了相對復雜的
算法。例如,研究顯示,如果允許所有的表格元素都具有FRAME和RULES屬性的話,那
么在確定一個單元格的一條特定的邊線是否要被劃線的時候,將要進行24步的計算。而這
些額外的復雜算法甚至還沒有滿足所有控制表格顯示的要求。目前的方案有意傾向于一個簡
單的、直觀的、能滿足大多數應用的模型,在一個更復雜的方案成為標準前,還需要作很多
試驗性的研究。
4.了解表格DTD
表格的文檔內容定義(DTD)為HTML表格的語法給出了一個正式的定義。下面就給出了一個
DTD列表,并加上了注解。本文的末尾給出了完整的DTD。
請注意TABLE元素是對一個區域,而不是對字符起作用,所以它和HTML中其他類似的元
素比如段落,列表,標題等一樣,控制的是一部分文字。
4.1常用屬性
以下這些屬性常被某些元素使用,在這里列出它們簡潔的定義。一般說來,本方案中的所有
屬性的名稱和值都不嚴格區分大小寫,但是特別注明的除外。屬性ID和CLASS是配合式
樣表使用的,而LANG和DIR則是為了滿足國際化的需要。
<!ENTITY % attrs
"id ID #IMPLIED -- 元素標識符 --
class NAMES #IMPLIED -- 為子類元素 --
lang NAME #IMPLIED -- 根據RFC 1766規范 --
dir (ltr|rtl) #IMPLIED -- I18N文字說明 --">
ID
用來定義文檔范圍內的標識符。既可以用來指明文檔內的位置,以作為一個超鏈的鏈接目標,
也可以在樣式表中使用來賦予一個元素獨特的式樣。ID屬性的值是一個SGML NAME標記,
該標記由一個字母開頭,后面跟著字母,數字或"-"及"."符號,字母只能為A-Z和a-z。
CLASS
一個用空格隔開的SGML NAME標記列表。CLASS屬性指定該元素屬于對應于該名稱的
類。它可以讓作者來區分有著同樣標記的元素所扮演的不同角色。CLASS也可以在用在式
樣表中來給這些不同的角色賦予不同的外在表現。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -