⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc1942.txt

📁 很多RFC的中文文档
💻 TXT
📖 第 1 页 / 共 4 页
字号:
义的列进行分配。

如果仅仅靠表格语法是不足以保持属性值的一致性的。例如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 + -