then the user agent should treat this as
frame=border except if --n=0-- for which FRAME=NONE is appropriate.
RULES
Specifies where to place rules within the table.
NONE (the default if BORDER is absent or BORDER=0)
The table should be rendered without any internal rulings.
BASIC
The THEAD, TFOOT and TBODY elements divide the table into
groups of rows. This choice places a horizontal rule between
each such group.
ROWS
Place horizontal rules between all rows. User agents may
choose to use a heavier rule between groups of rows for
emphasis.
COLS
Place vertical rules between groups of columns as defined by
COL elements, plus horizontal rules between row groups (see
rules=basic).
ALL (default if BORDER=--n-- and --n-- is non-zero)
Place rules between all rows and all columns. User agents
may choose to use a heavier rule between groups of rows and
columns for emphasis.
Dave Raggett Page 12
HTML Tables 03 Oct 95
CELLSPACING
Specifies the space between individual cells in a table. See
standard units.
CELLPADDING
Specifies the amount of space between the border of the cell and
its contents. See standard units.
------------------------------------------------------------------------------
Table Captions
The optional CAPTION element is used to provide a caption for the
table. Both start and end tags are required.
ID, LANG and CLASS
See earlier description of common attributes.
ALIGN
This may be used to control the placement of captions relative
to the table. When present, the ALIGN attribute should have one
of the values: TOP, BOTTOM, LEFT and RIGHT. It is recommended
that the caption is made to fit within the width or height of
the table as appropriate. The default position of the caption is
deliberately unspecified.
--The ALIGN attribute is overused in HTML, but is retained here
for compatibility with currently deployed browsers.--
------------------------------------------------------------------------------
The COL Element
Dave Raggett Page 13
HTML Tables 03 Oct 95
This optional element is used to specify column based defaults for
table properties. It is an empty element, and as such has no
content, and shouldn't be given an end tag. Several COL elements may
be given in succession.
ID, LANG and CLASS
See earlier description of common attributes.
SPAN
A positive integer value that specifies how many columns this
element applies to, defaulting to one. In the absence of SPAN
attributes the first COL element applies to the first column,
the second COL element to the second column and so on. If the
second COL element had span=2, it would apply to the second and
third column. The next COL element would then apply to the
fourth column and so on. SPAN=0 has a special significance and
implies that the COL element spans all columns from the current
column up to and including the last column.
WIDTH
Specifies the width of the columns, see standard units. In
addition, the "*" suffix denotes relative widths, e.g.
width=64 width in screen pixels
width=0.5* a relative width of 0.5
Relative widths act as constraints on the relative widths of
different columns. When widths are given in absolute units, the
user agent can use these to constrain the width of the table.
--Percentage widths are inappropriate as you would need to check
that the numbers add up, and they would all have to be changed
if a column was inserted or removed. The "*" suffix is used to
simplify importing tables from the CALS representation.--
ALIGN, CHAR, CHAROFF and VALIGN
Specify values for horizontal and vertical alignment within
table cells. See inheritance order of alignment properties.
------------------------------------------------------------------------------
Table Head, Foot and Body Elements
Tables may be divided up into head and body sections. The THEAD and
TFOOT elements are optional, but one or more TBODY elements are
always required. If the table only consists of a TBODY section, the
TBODY start and end tags may be omitted, as the parser can infer
them. If a THEAD element is present, the THEAD start tag is
required, but the end tag can be omitted, provided a TFOOT or TBODY
start tag follows. The same applies to TFOOT. --This definition
provides compatibility with tables created for the older model, as
well as allowing the end tags for THEAD, TFOOT and TBODY to be
omitted.--
The THEAD, TFOOT and TBODY elements provide a convenient means for
controlling rendering. If the table has a large number of rows in
the body, user agents may choose to use a scrolling region for the
table body sections. When rendering to a paged device, tables will
often have to be broken across page boundaries. The THEAD, TFOOT and
TBODY elements allow the user agent to repeat the table foot at the
bottom of the current page, and then the table head at the top of
the new page before continuing on with the table body.
TFOOT is placed before the TBODY in the markup sequence, so that
browsers can render the foot before receiving all of the table data.
This is useful when very long tables are rendered with scrolling
body sections, or for paged output, involving breaking the table
over many pages.
Each THEAD, TFOOT and TBODY element must contain one or more TR
elements.
ID, LANG and CLASS
See earlier description of common attributes.
ALIGN, CHAR, CHAROFF and VALIGN
Specify values for horizontal and vertical alignment within
table cells. See inheritance order of alignment properties.
------------------------------------------------------------------------------
Table Row (TR) elements
Dave Raggett Page 15
HTML Tables 03 Oct 95
The TR or table row element acts as a container for a row of table
cells. The end tag may be omitted.
ID, LANG and CLASS
See earlier description of common attributes.
ALIGN, CHAR, CHAROFF and VALIGN
Specify values for horizontal and vertical alignment within
table cells. See inheritance order of alignment properties.
------------------------------------------------------------------------------
Table Cells: TH and TD
TH elements are used to represent header cells, while TD elements
are used to represent data cells. This allows user agents to render
header and data cells distinctly, even in the absence of style
sheets.
Cells can span multiple rows and columns, and may be empty. Cells
spanning rows contribute to the column count on each of the spanned
rows, but only appear in the markup once (in the first row spanned).
The row count is determined by the number of TR elements. Any rows
implied by cells spanning rows beyond this should be ignored.
If the column count for the table is greater than the number of
cells for a given row (after including cells for spanned rows), the
missing cells are treated as occurring on the right hand side of the
table and rendered as empty cells. If the language context indicates
a right to left writing order, then the missing cells should be
placed on the left hand side.
It is possible to create tables with overlapping cells, for
instance:
1 | 2 | 3
Dave Raggett Page 16
HTML Tables 03 Oct 95
|
4
|
5 | 6
|
which might look something like:
/-----------\
| 1 | 2 | 3 |
| |-------|
| | 4 | |
|---|...|---|
| 5 : | 6 |
\-----------/
In this example, the cells labelled 4 and 5 overlap. In such cases,
the rendering is implementation dependent.
The AXIS and AXES attributes for cells provide a means for defining
concise labels for cells. When rendering to speech, these attributes
may be used to provide abbreviated names for the headers relevant to
each cell. Another application is when you want to be able to later
process table contents to enter them into a database. These
attributes are then used to give database field names. The table's
class attribute should be used to let the software recognize which
tables can be treated in this way.
ID, LANG and CLASS
See earlier description of common attributes.
AXIS
This defines an abbreviated name for a header cell, e.g. which
can be used when rendering to speech. It defaults to the cell's
content.
AXES
This is a comma separated list of axis names which together
identify the row and column headers that pertain to this cell.
It is used for example when rendering to speech to identify the
cell's position in the table. If missing the user agent can try
to follow up columns and left along rows (right for some
languages) to find the corresponding header cells.
NOWRAP, e.g.
The presence of this attribute disables automatic wrapping of
text lines for this cell. If used uncautiously, it may result in
excessively wide cells.
ROWSPAN, e.g. |
A positive integer value that defines how may rows this cell
spans. The default ROWSPAN is 1. ROWSPAN=0 has a special
significance and implies that the cell spans all rows from the
current row up to the last row of the table.
Dave Raggett Page 17
HTML Tables 03 Oct 95
COLSPAN, e.g. |
A positive integer value that defines how may columns this cell
spans. The default COLSPAN is 1. COLSPAN=0 has a special
significance and implies that the cell spans all columns from
the current column up to the last column of the table.
ALIGN, CHAR, CHAROFF and VALIGN
Specify values for horizontal and vertical alignment within
table cells. See inheritance order of alignment properties.
------------------------------------------------------------------------------
Recommended Layout Algorithms
If the COLS attribute on the TABLE element specifies the number of
columns, then the table may be rendered using a fixed layout,
otherwise the autolayout algorithm described below should be used.
Fixed Layout Algorithm
For this algorithm, it is assumed that the number of columns is
known. The column widths by default should be set to the same size.
Authors may override this by specifying relative or absolute column
widths, using the COL element. The default table width is the space
between the current left and right margins, but may be overridden by
the WIDTH attribute on the TABLE element, or determined from
absolute column widths.
The table syntax alone is insufficient to guarantee the consistency
of attribute values. For instance, the number of columns specified
by the COLS attribute may be inconsistent with the number of columns
implied by the COL elements. This in turn, may be inconsistent with
the number of columns implied by the table cells. A further problem
occurs when the columns are too narrow to avoid clipping cell
contents. The width of the table as specified by the TABLE element
or COL elements may result in clipping of cell contents. It is
recommended that user agents attempt to recover gracefully from
these situations.
Autolayout Algorithm
If the COLS attribute is missing from the table start tag, then the
user agent should use the following autolayout algorithm. It uses
two passes through the table data and scales linearly with the size
of the table.
In the first pass, line wrapping is disabled, and the user agent
keeps track of the minimum and maximum width of each cell. The
maximum width is given by the widest line. As line wrap has been
disabled, paragraphs are treated as long lines unless broken by
elements. The minimum width is given by the widest word or image
etc. taking into account leading indents and list bullets etc. In
other words, if you were to format the cell's content in a window of
Dave Raggett Page 18
HTML Tables 03 Oct 95
its own, determine the minimum width you could make the window
before things begin to be clipped.
To cope with character alignment of cell contents, the algorithm
keeps three running min/max totals for each column: Left of align
char, right of align char and un-aligned. The minimum width for a
column is then: max(min_left + min_right, min_non-aligned).
The minimum and maximum cell widths are then used to determine the
corresponding minimum and maximum widths for the columns. These in
turn, are used to find the minimum and maximum width for the table.
Note that cells can contain nested tables, but this doesn't
complicate the code significantly. The next step is to assign column
widths according to the current window size (more accurately - the
width between the left and right margins).
For cells which span multiple columns, a simple approach, as used by
Arena, is to evenly apportion the min/max widths to each of the
constituent columns. A slightly more complex approach is to use the
min/max widths of unspanned cells to weight how spanned widths are
apportioned. Experimental study suggests a blend of the two
approaches will give good results for a wide range of tables.
The table borders and intercell margins need to be included in
assigning column widths. There are three cases:
1. The minimum table width is equal to or wider than the available
space. In this case, assign the minimum widths and allow the
user to scroll horizontally. For conversion to braille, it will
be necessary to replace the cells by references to notes
containing their full content. By convention these appear before
the table.
2. The maximum table width fits within the available space. In this
case, set the columns to their maximum widths.
3. The maximum width of the table is greater than the available
space, but the minimum table width is smaller. In this case,
find the difference between the available space and the minimum
table width, lets call it W. Lets also call D the difference
between maximum and minimum width of the table.
For each column, let d be the the difference between maximum and
minimum width of that column. Now set the column's width to the
minimum width plus d times W over D. This makes columns with
lots of text wider than columns with smaller amounts.
This assignment step is then repeated for nested tables. In this
case, the width of the enclosing table's cell plays the role of the
current window size in the above description. This process is
repeated recursively for all nested tables.
If the table width is specified with the WIDTH attribute, the user
Dave Raggett Page 19
HTML Tables 03 Oct 95
agent attempts to set column widths to match. The WIDTH attribute is
not binding if this results in columns having less than their
minimum widths.
If relative widths are specified with the COL element, the algorithm
is modified to increase column widths over the minimum width to meet
the relative width constraints. The COL elements should be taken as
hints only, so columns shouldn't be set to less than their minimum
width. Similarly, columns shouldn't be made so wide that the table
stretches well beyond the extent of the window. If a COL element
specifies a relative width of zero, the column should always be set
to its minimum width.
------------------------------------------------------------------------------
Dave Raggett Page 20
HTML Tables 03 Oct 95
HTML Table DTD
The DTD or document type definition provides the formal definition
of the allowed syntax for html tables.
Dave Raggett Page 21
HTML Tables 03 Oct 95
------------------------------------------------------------------------------
Dave Raggett Page 23
HTML Tables 03 Oct 95
References
Arena
W3C's HTML3 browser, see "http://www.w3.org/pub/WWW/Arena/".
Arena was originally created as a proof of concept demo for
ideas in the HTML+ specification that preceded HTML3. The
browser is now being re-implemented to provide a reference
implementation of HTML3 along with support for style sheets and
client-side scripting.
CALS
Continuous Acquisition and Life-Cycle Support (formerly
Computer-aided Acquisition and Logistics Support) (CALS) is a
Department of Defense (DoD) strategy for achieving effective
creation, exchange, and use of digital data for weapon systems
and equipment. More information can be found from the US Navy
CALS home page at http://navysgml.dt.navy.mil/cals.html
HTML 3.0
HyperText Markup Language Specification Version 3.0. This is the
initial draft specification as published in March 1995. Work on
refining HTML3 is proceeding piecemeal with the new table
specification as one of the pieces. For W3C related work on
HTML, see "http://www.w3.org/pub/WWW/MarkUp/".
RFC 1766
"Tags for the Identification of Languages", by H. Alvestrand,
UNINETT, March 1995. This document can be downloaded from
"ftp://ds.internic.net/rfc/rfc1766.txt".
------------------------------------------------------------------------------
Dave Raggett Page 24
|