?? rfc1942.txt
字號:
義的列進行分配。
如果僅僅靠表格語法是不足以保持屬性值的一致性的。例如COLS屬性所指定的列的數目
可能和用COL元素所指定的列的數目不一致,這也就可能和表格單元格所表示的列的數目
不一致。當列過于狹窄以至于容納不了單元格的內容的時候,就會發生更多的問題。TABLE
元素或者是COL元素所指定的表格的寬度都可能引起單元格內容的溢出。所以我們推薦用
戶端在這些情況下,要盡量能夠進行恢復。比如說用連字符來連接單詞,或者在連接點未知
的情況下,試著分隔單詞。
如果碰到了一個不可分割的元素,而且該元素將引起單元格內容的溢出的話,用戶端可能需
要考慮調整列寬,并且重新顯示表格。在最壞的情況下,如果調整列寬或者是讓單元格的內
容變成可滾動的都不合適的話,可能需要考慮截去一部分的內容。在任何情況下,如果單元
格的內容被分割開或者是被截斷了,都應該用一種適當的方法向用戶指明這一點。
5.2 自動布局算法
如果在表格開始的標記里面缺少COLS屬性,那么用戶端就應該采用自動布局算法。它線
性地根據表格的大小,使用兩種方法來處理表格的數據和范圍。
在第一種情況下,自動折行被禁止,用戶端保留對每個單元格最小和最大的寬度的記錄。最
大的寬度由最寬的行所決定。因為禁止折行,所以段落都排在一個長的整行中,除非用<BR>
元素來折行。最小的寬度由最寬的單詞或者是圖片或者是類似的東西所決定,當然還要考慮
到行首的縮進以及列表符號等等。換句話說,如果你想要將單元格的內容在其自己的窗口位
置格式化輸出的話,應該先確定你所使用的最小寬度不會導致單元格內容溢出。如果允許用
戶端可以分隔單詞將減少水平滾動的產生,或者避免更糟的情況—單元格內容的截斷。
這個處理過程也適用于那些單元格內容中的任何嵌套表格。在嵌套表格中單元格的最小和最
大寬度被確定為這些表格的最小和最大寬度,同時也是容納這些表格的單元格的寬度。這個
算法針對所有的單元格內容來說都是線性的,而且從更廣義的角度來看,是和嵌套的深度無
關的。
為了應付單元格內字符的對齊,該算法還要考慮每個列中的三種情況:左對齊字符,右對齊
字符以及未指明對齊者。所以一個列的最小寬度是max(最小的左對齊的 + 最小的右對齊
的, 最小的未指明對齊的)
單元格的最小和最大寬度被用來確定列的相應的最小和最大寬度。而這些寬度又被用來確定
表格的最小和最大寬度。請注意單元格可以包含嵌套表格,但這并不會使得代碼變得過分復
雜。接下來的一步就是根據所有的空間來為每個列分配空間(也就是在左右邊界之間的空
間)。
對于那些跨越多列的單元格來說,一個簡單的被Arena所使用的方法就是給每個所涉及的
列均勻地分配最小/最大寬度。一個稍微復雜一點的方法是利用那些沒有跨越列的單元格的
最小/最大寬度來計算如何分配跨越的寬度。實踐顯示這兩種方法的結合將能夠滿足大多數
表格的要求。
在分配列的寬度的時候,表格的邊框以及內部單元格四周的邊距也應該一并考慮進去。這有
三種情況:
1. 表格的最小寬度等于或者大于實際的空間寬度。在這種情況下,按照最小的寬度來分配
空間,并且讓用戶進行水平滾動。如果要轉化為盲文的話,則有必要將這些單元格替換為包
含全部內容的參考符號,按常規放置在表格的前面。
2. 表格的最大寬度正好和實際的空間寬度吻合。在這種情況下,按照列的最大寬度分配空
間。
3. 表格的最大寬度大于實際的空間寬度,但是最小寬度小于這個寬度。在這種情況下,我
們把實際的寬度和最小的表格寬度的差值記作W,把表格的最大寬度和最小寬度的差值記
作D。對每個列來說,我們把該列的最大寬度和最小寬度的差值記作d。現在將列的寬度設
定為最小的寬度加上d?W/D。這就可以使那些最大寬度和最小寬度相差很大的列比那些相
差比較小的列要寬。
對于所有在第一種情況中如此得到最小和最大寬度的嵌套表格來說,這一步被重復地執行。
在這種情況下,父表格(也就是說包含嵌套表格的表格)的單元格的寬度扮演著上述步驟中
當前窗口的大小。這個處理過程對所有的嵌套表格都作遞歸處理。然后,最頂級的表格按照
所分配的寬度進行顯示。嵌套的表格則作為父表格單元格中的內容依次進行顯示。
如果表格的寬度已經由WIDTH屬性進行了指定,那么用戶端將盡量讓列的寬度能和表格的
寬度相匹配。但是如果這個WIDTH屬性將會導致列的實際寬度小于它們所需要的最小寬度
(也就是說最低限度)的話,表格將不會局限于該屬性的值。
如果用COL元素指定了相對寬度,那么該算法將做出一些修改,將在最小的列寬度的基礎
上作一些增加以便能滿足相對寬度的限制。COL元素也應該僅僅是作為一個參考,這樣列
就不會被設定為小于它們的最小寬度了。同樣地,列也不應該被設定得過寬而使得表格被撐
開得遠遠大于窗口的寬度。如果某個COL元素指定了一個值為0的相對寬度,那么列就應
該總是按照其最小的寬度來設置。
6.HTML表格DTD
DTD也就是文檔類型定義(document type definition)為HTML表格的語法提供了正式的
定義。
<!—內容模型的實體從父DTD中導入:
%body.content; 允許表格單元格包含標題,段落,列表,表單元素甚至隨意嵌套表格。
%text; 是文字字符,包括字符實體和字符強調元素,IMG和錨點
-->
<!ENTITY % attrs
"id ID #IMPLIED -- 元素標示符 --
class NAMES #IMPLIED -- 標志子類元素 --
lang NAME #IMPLIED -- 根據RFC 1766 --
dir (ltr|rtl) #IMPLIED -- I18N文字方向 --">
<!--
BORDER屬性設置了表格四周框線的寬度,默認的單位為屏幕像素(screen pixels)。
FRAME屬性設定了表格四周哪一部分框線應該被顯示。該屬性的值和CALS中的不同,以
避免和VALIGN屬性的值發生沖突。
值"border"也被包含在內以便保留和<TABLE BORDER>的向后兼容性,可以視作
frame=border和border=implied。對于<TABLE BORDER=1>,將認為是border=1以及
frame=implied。在這種情況下,應該將其認為是frame=border以便能和那些舊的瀏覽器保
持向后兼容性。
-->
<!ENTITY % Frame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
<!--
RULES屬性定義了單元格間的那些線條應該被顯示:
如果沒有RULES屬性,那么就假定為
"none", 如果沒有BORDER或者是BORDER=0,則為"all"
-->
<!ENTITY % Rules "(none | groups | rows | cols | all)">
<!—表格相對于窗口的水平放置位置-->
<!ENTITY % Where "(left|center|right)">
<!—單元格內容的水平對齊屬性-->
<!ENTITY % cell.halign
"align (left|center|right|justify|char) #IMPLIED
char CDATA #IMPLIED – 對齊字符, 例如char=':' --
charoff CDATA #IMPLIED – 對齊字符的縮進距離--"
>
<!--單元格內容的垂直對齊屬性-->
<!ENTITY % cell.valign
"valign (top|middle|bottom|baseline) #IMPLIED"
>
<!ELEMENT table - - (caption?, (col*|colgroup*), thead?, tfoot?, t
body+)>
<!ELEMENT caption - - (%text;)+>
<!ELEMENT thead - O (tr+)>
<!ELEMENT tfoot - O (tr+)>
<!ELEMENT tbody O O (tr+)>
<!ELEMENT colgroup - O (col*)>
<!ELEMENT col - O EMPTY>
<!ELEMENT tr - O (th|td)+>
<!ELEMENT (th|td) - O %body.content>
<!ATTLIST table -- 表格標記 --
%attrs; -- id, lang, dir和class --
align %Where; #IMPLIED -- 表格相對于窗口的--
-- 位置 --
width CDATA #IMPLIED -- 表格相對于窗口的寬度 --
cols NUMBER #IMPLIED -- 用在即時顯示模式--
border CDATA #IMPLIED -- 控制表格四周的--
-- 框線 --
frame %Frame; #IMPLIED -- 要包含表格框線的--
-- 哪一部分 --
rules %Rules; #IMPLIED -- 在行和列之間的線條--
cellspacing CDATA #IMPLIED – 單元格之間的距離--
cellpadding CDATA #IMPLIED – 單元格內部四周的邊距 --
>
<!—ALIGN用來保留對那些舊的瀏覽器的兼容性-->
<!ENTITY % Caption "(top|bottom|left|right)">
<!ATTLIST caption -- 表格標題 --
%attrs; -- id, lang, dir和class --
align %Caption; #IMPLIED -- 相對于表格 --
>
<!--
COLGROUP將一系列COL元素組合起來。它讓你可以將若干列組合在一起。
-->
<!ATTLIST colgroup
%attrs; -- id, lang, dir和class --
span NUMBER 1 -- 組里面默認的--
-- 列的數目--
width CDATA #IMPLIED -- 組中的列的默認寬度--
%cell.halign; -- 單元格的水平對齊設置--
%cell.valign; -- 單元格的垂直對齊設置--
>
<!--
COL元素定義了在某個給定的列或者跨越的列中的單元格的對齊屬性。WIDTH屬性指定了
該列的寬度。例如:
width=64 用屏幕像素表示的寬度。
width=0.5* 0.5的相對寬度
-->
<!ATTLIST col -- 列的組以及它們的屬性--
%attrs; -- id, lang, dir和class --
span NUMBER 1 -- 跨組的列的--
-- 數目 --
width CDATA #IMPLIED -- 列的寬度--
%cell.halign; -- 單元格的水平對齊設置--
%cell.valign; -- 單元格的垂直對齊設置--
>
<!--
當表格跨頁分布的時候,可以通過使用THEAD來重復表頭。或者當表體部分顯示在可滾動
的面板中的時候,用THEAD來作為靜態的標題。
當表格跨頁分布的時候,可以通過使用TFOOT來重復注腳。或者當表體部分顯示在可滾動
的面板中的時候,用THEAD來作為靜態的注腳。
可以通過使用多個TBODY來在表格不同的行構成的組之間顯示標線。
-->
<!ATTLIST (thead|tbody|tfoot) -- 表格部分--
%attrs; -- id, lang, dir和class --
%cell.halign; -- 單元格的水平對齊設置 --
%cell.valign; -- 單元格的垂直對齊設置 --
>
<!ATTLIST tr -- 表格的行--
%attrs; -- id, lang, dir和class --
%cell.halign; -- 單元格的水平對齊設置 --
%cell.valign; -- 單元格的垂直對齊設置 --
>
<!ATTLIST (th|td) -- 標題頭或者是數據單元格--
%attrs; -- id, lang, dir和class --
axis CDATA #IMPLIED -- 默認為單元格內容--
axes CDATA #IMPLIED -- axis名字列表 --
nowrap (nowrap) #IMPLIED -- 禁止單詞換行--
rowspan NUMBER 1 -- 單元格跨越的行的數目--
colspan NUMBER 1 -- 單元格跨越的列的數目--
%cell.halign; -- 單元格的水平對齊設置 --
%cell.valign; -- 單元格的垂直對齊設置 --
>
7.參考文章
Arena
W3C的HTML3瀏覽器, 參見http://www.w3.org/pub/WWW/Arena/.
Arena原本是用來作為HTML3前的HTML+方案的概念演示而創作的。該瀏覽器現
在正被重新改寫以便能在為HTML3提供應用的同時,也支持式樣表以及客戶端的script編
程。
CALS
連續的獲取以及生命周期的支持(Continuous Acquisition and Life-Cycle
Support),(以前被稱為計算機輔助獲取以及后備支持(Computer-aided Acquisition and
Logistics Support)),即CALS,是美國國防部為了武器裝備系統上數據的高效存取,創
建,交換的策略而設計的,更多的詳細信息可以在美國海軍的CALS頁面上獲得:
http://navysgml.dt.navy.mil/cals.html
HTML 2.0 (RFC1866)
超文本標記語言方案2.0版,由T.Berners-Lee和D. Connolly于1995年11月提
出,詳細信息可以在http://www.w3.org/pub/WWW/MarkUp/ 或者
ftp://ds.internic.net/rfc/rfc1866.txt查閱。
HTML 3.0
超文本標記語言方案3.0版。最初的草案在1995年3月發布。對其的精簡完善工
作仍在進行中,新的表格草案也是其中的一部分,W3C在HTML方面的相關工作可以在
http://www.w3.org/pub/WWW/MarkUp/找到。
RFC 1766
"Tags for the Identification of Languages", 由H. Alvestrand,
UNINETT于1995年3月發布。該文檔可在下述地址下載:
ftp://ds.internic.net/rfc/rfc1766.txt.
8.安全性考慮
在本備忘錄中沒有討論安全性方面的問題。
9.作者地址
Dave Raggett W3C
EMail: dsr@w3.org
The World Wide Web Consortium: http://www.w3.org/
RFC 1942 HTML Tables HTML中的表格
RFC文檔中文翻譯計劃 2
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -