📄 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 + -