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