the default for the table element is RULES=ALL, except if _n=0_
for which RULES=NONE is appropriate
This attribute is intended for backwards compatibility
deployed user agents. It specifies the space between the
frame and the first or last cell border for each row or column
and between other cells in the table. See standard units
Greater control will be possible using style sheet languages
This attribute is intended for backwards compatibility
deployed user agents. It specifies the amount of space
the border of the cell and its contents both above/below,
Raggett Experimental [Page 15]
RFC 1942 HTML Tables May 1996
left//right. See standard units. Greater control will
possible using style sheet languages
If a fixed width is set for the table or column, the CELLSPACING
CELLPADDING may demand more space than assigned. Current practice
for the latter to take precedence over WIDTH attributes when
conflict occurs, although this isn't required by this specification
Table
%attrs; -- id, lang, dir and class --
align %Caption; #IMPLIED -- relative to table --
>
The optional CAPTION element is used to provide a caption for
table. Both start and end tags are required
ID, CLASS, LANG and
See earlier description of common attributes
This may be used to control the placement of captions
to the table. When present, the ALIGN attribute should have
of the values: TOP, BOTTOM, LEFT and RIGHT. It is
that the caption is made to fit within the width or height
the table as appropriate. The default position of the caption
deliberately unspecified
Note the ALIGN attribute is overused in HTML, but is
here for compatibility with currently deployed browsers
The COLGROUP
%attrs; -- id, lang, dir and class --
span NUMBER 1 -- default number of columns in --
-- group --
width CDATA #IMPLIED -- default width for enclosed --
-- COLs --
%cell.halign; -- horizontal alignment in --
-- cells --
Raggett Experimental [Page 16]
RFC 1942 HTML Tables May 1996
%cell.valign; -- vertical alignment in cells --
>
The COLGROUP element acts as a container for a group of columns,
allows you to set default properties for these columns. In
absence of a COLGROUP element, all columns in the table are
to belong to a single column group. Each COLGROUP element
contain zero or more COL elements. COLGROUP requires a start tag
but the end tag may be omitted. This is useful when defining
sequence of COLGROUP elements, e.g
COLGROUP elements can be used with the following attributes
ID, CLASS, LANG and
See earlier description of common attributes
A positive integer value that specifies a default for how
columns are in this group. This attribute should be ignored
the COLGROUP element contains one or more COL elements.
provides a convenient way of grouping columns without the
to supply COL elements
Specifies a default width for each of the grouped columns,
standard units. In addition, the "*" suffix denotes
widths, e.g
width=64 width in screen
width=0.5* a relative width of 0.5
Relative widths act as constraints on the relative widths
different columns. If a COLGROUP element specifies a
width of zero, all of the columns in the group should be set
their minimum widths, unless they are associated with a
element with an overriding WIDTH attribute. When widths
Raggett Experimental [Page 17]
RFC 1942 HTML Tables May 1996
given in absolute units, the user agent can use these
constrain the width of the table. The "*" suffix is used
simplify importing tables from the CALS representation
ALIGN, CHAR, CHAROFF and
Specify values for horizontal and vertical alignment
table cells. See inheritance order of alignment properties
The COL
-- properties --
%attrs; -- id, lang, dir and class --
span NUMBER 1 -- number of columns spanned --
-- by group --
width CDATA #IMPLIED -- column width specification --
%cell.halign; -- horizontal alignment in --
-- cells --
%cell.valign; -- vertical alignment in cells --
>
This optional element is used to specify column based defaults
table properties. It is an empty element, and as such has
content, and shouldn't be given an end tag. Several COL elements
be given in succession. COL attributes override those of the
COLGROUP element
ID, CLASS, LANG and
See earlier description of common attributes
A positive integer value that specifies how many columns
element applies to, defaulting to one. In the absence of
attributes the first COL element applies to the first column
the second COL element to the second column and so on. If
second COL element had SPAN=2, it would apply to the second
third column. The next COL element would then apply to
fourth column and so on. SPAN=0 has a special significance
implies that the COL element spans all columns from the
column up to and including the last column. Note that a COL
does not define a group. It is merely a way to share
definitions
Raggett Experimental [Page 18]
RFC 1942 HTML Tables May 1996
Specifies the width of the columns, see standard units. If
element spans several columns then the WIDTH attribute
the width for each of the individual columns - not the width
the span. In addition, the "*" suffix denotes relative widths
e.g
width=64 width in screen
width=0.5* a relative width of 0.5
Relative widths act as constraints on the relative widths
different columns. If a COL element specifies a relative
of zero, the column should always be set to its minimum width
When widths are given in absolute units, the user agent can
these to constrain the width of the table. The "*" suffix
used to simplify importing tables from the CALS representation
ALIGN, CHAR, CHAROFF and
Specify values for horizontal and vertical alignment
table cells. See inheritance order of alignment properties
Table Head, Foot and Body
%attrs; -- id, lang, dir and class --
%cell.halign; -- horizontal alignment in --
-- cells --
%cell.valign; -- vertical alignment in cells --
>
Tables may be divided up into head and body sections. The THEAD
TFOOT elements are optional, but one or more TBODY elements
always required. If the table only consists of a TBODY section,
TBODY start and end tags may be omitted, as the parser can
them. If a THEAD element is present, the THEAD start tag
required, but the end tag can be omitted, provided a TFOOT or
start tag follows. The same applies to TFOOT
Note: This definition provides compatibility with tables
for the older model, as well as allowing the end tags for THEAD
TFOOT and TBODY to be omitted
Raggett Experimental [Page 19]
RFC 1942 HTML Tables May 1996
The THEAD, TFOOT and TBODY elements provide a convenient means
controlling rendering. If the table has a large number of rows
the body, user agents may choose to use a scrolling region for
table body sections. When rendering to a paged device, tables
often have to be broken across page boundaries. The THEAD, TFOOT
TBODY elements allow the user agent to repeat the table foot at
bottom of the current page, and then the table head at the top
the new page before continuing on with the table body
TFOOT is placed before the TBODY in the markup sequence, so
browsers can render the foot before receiving all of the table data
This is useful when very long tables are rendered with
body sections, or for paged output, involving breaking the
over many pages
Each THEAD, TFOOT and TBODY element must contain one or more
elements
ID, CLASS, LANG and
See earlier description of common attributes
ALIGN, CHAR, CHAROFF and
Specify values for horizontal and vertical alignment
table cells. See inheritance order of alignment properties
Table Row (TR)
%attrs; -- id, lang, dir and class --
%cell.halign; -- horizontal alignment in --
-- cells --
%cell.valign; -- vertical alignment in cells --
>
The TR or table row element acts as a container for a row of
cells. The end tag may be omitted
ID, CLASS, LANG and
See earlier description of common attributes
ALIGN, CHAR, CHAROFF and
Specify values for horizontal and vertical alignment
table cells. See inheritance order of alignment properties
Raggett Experimental [Page 20]
RFC 1942 HTML Tables May 1996
Table Cells: TH and
%attrs; -- id, lang, dir and class --
axis CDATA #IMPLIED -- defaults to cell content --
axes CDATA #IMPLIED -- list of axis names --
nowrap (nowrap) #IMPLIED -- suppress word wrap --
rowspan NUMBER 1 -- number of rows spanned by --
-- cell --
colspan NUMBER 1 -- number of cols spanned by --
-- cell --
%cell.halign; -- horizontal alignment in --
-- cells --
%cell.valign; -- vertical alignment in cells --
>
TH elements are used to represent header cells, while TD
are used to represent data cells. This allows user agents to
header and data cells distinctly, even in the absence of
sheets
Cells can span multiple rows and columns, and may be empty.
spanning rows contribute to the column count on each of the
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
implied by cells spanning rows beyond this should be ignored
If the column count for the table is greater than the number
cells for a given row (after including cells for spanned rows),
missing cells are treated as occurring on the right hand side of
table and rendered as empty cells. If the language context
a right to left writing order, then the missing cells should
placed on the left hand side
It is possible to create tables with overlapping cells,
instance
Raggett Experimental [Page 21]
RFC 1942 HTML Tables May 1996
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
concise labels for cells. When rendering to speech, these
may be used to provide abbreviated names for the headers relevant
each cell. Another application is when you want to be able to
process table contents to enter them into a database.
attributes are then used to give database field names. The table'
class attribute should be used to let the software recognize
tables can be treated in this way
ID, CLASS, LANG and
See earlier description of common attributes
This defines an abbreviated name for a header cell, e.g.
can be used when rendering to speech. It defaults to the cell'
content
This is a comma separated list of axis names which
identify the row and column headers that pertain to this cell
It is used for example when rendering to speech to identify
cell's position in the table. If missing the user agent can
to follow up columns and left along rows (right for
languages) to find the corresponding header cells
NOWRAP, e.g.
The presence of this attribute disables automatic wrapping
text lines for this cell. If used uncautiously, it may result
excessively wide cells. This attribute is defined for
compatibility with deployed user agents. Greater control
possible with associated style sheet languages (for example
control over overflow handling).
Raggett Experimental [Page 22]
RFC 1942 HTML Tables May 1996
ROWSPAN, e.g. |
A positive integer value that defines how may rows this
spans. The default ROWSPAN is 1. ROWSPAN=0 has a
significance and implies that the cell spans all rows from
current row up to the last row of the table
COLSPAN, e.g. |
A positive integer value that defines how may columns this
spans. The default COLSPAN is 1. COLSPAN=0 has a
significance and implies that the cell spans all columns
the current column up to the last column of the table
ALIGN, CHAR, CHAROFF and
Specify values for horizontal and vertical alignment
table cells. See inheritance order of alignment properties
Note: It is recommended that implementors provide support for
Netscape 1.1 WIDTH attribute for TH and TD, although this isn't
of the current specification. Document authors are advised to
the width attribute for the COL element instead
Recommended Layout
If the COLS attribute on the TABLE element specifies the number
columns, then the table may be rendered using a fixed layout
otherwise the autolayout algorithm described below should be used
Fixed Layout
For this algorithm, it is assumed that the number of columns
known. The column widths by default should be set to the same size
Authors may override this by specifying relative or absolute
widths, using the COLGROUP or COL elements. The default table
is the space between the current left and right margins, but may
overridden by the WIDTH attribute on the TABLE element, or
from absolute column widths. To deal with mixtures of absolute
relative column widths, the first step is to allocate space from
table width to columns with absolute widths. After this, the
remaining is divided up between the columns with relative widths
The table syntax alone is insufficient to guarantee the
of attribute values. For instance, the number of columns specified
the COLS attribute may be inconsistent with the number of
implied by the COL elements. This in turn, may be inconsistent
the number of columns implied by the table cells. A further
occurs when the columns are too narrow to avoid overflow of
contents. The width of the table as specified by the TABLE element
COL elements may result in overflow of cell contents. It
Raggett Experimental [Page 23]
RFC 1942 HTML Tables May 1996
recommended that user agents attempt to recover gracefully from
situations, e.g. by hyphenating words and resorting to
words if hyphenation points are unknown
In the event that an indivisible element causes cell overflow,
user agent may consider adjusting column widths and re-rendering
table. In the worst case clipping may be considered if column
adjustments and/or scrollable cell content are not feasible. In
case if cell content is split or clipped this should be indicated
the user in an appropriate manner
Autolayout
If the COLS attribute is missing from the table start tag, then
user agent should use the following autolayout algorithm. It uses
passes through the table data and scales linearly with the size
the table
In the first pass, line wrapping is disabled, and the user
keeps track of the minimum and maximum width of each cell.
maximum width is given by the widest line. As line wrap has
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
words, if you were to format the cell's content in a window of
own, determine the minimum width you could make the window before
cell begins to overflow. Allowing user agents to split words
minimize the need for horizontal scrolling or in the worst
clipping of cell contents
This process also applies to any nested tables occuring in
content. The minimum and maximum widths for cells in nested
are used to determine the minimum and maximum widths for these
and hence for the parent table cell itself. The algorithm is
with aggregate cell content, and broadly speaking independent of
depth of nesting
To cope with character alignment of cell contents, the
keeps three running min/max totals for each column: Left of
char, right of align char and un-aligned. The minimum width for
column is then: max(min_left + min_right, min_non-aligned).
The minimum and maximum cell widths are then used to determine
corresponding minimum and maximum widths for the columns. These
turn, are used to find the minimum and maximum width for the table
Note that cells can contain nested tables, but this doesn'
complicate the code significantly. The next step is to assign
widths according to the available space (i.e. the space between
Raggett Experimental [Page 24]
RFC 1942 HTML Tables May 1996
current left and right margins).
For cells which span multiple columns, a simple approach, as used
Arena, is to evenly apportion the min/max widths to each of
constituent columns. A slightly more complex approach is to use
min/max widths of unspanned cells to weight how spanned widths
apportioned. Experimental study suggests a blend of the
approaches will give good results for a wide range of tables
The table borders and intercell margins need to be included
assigning column widths. There are three cases
1. The minimum table width is equal to or wider than the
space. In this case, assign the minimum widths and allow
user to scroll horizontally. For conversion to braille, it
be necessary to replace the cells by references to
containing their full content. By convention these appear
the table
2. The maximum table width fits within the available space. In
case, set the columns to their maximum widths
3. The maximum width of the table is greater than the
space, but the minimum table width is smaller. In this case
find the difference between the available space and the
table width, lets call it W. Lets also call D the
between maximum and minimum width of the table
For each column, let d be the difference between maximum
minimum width of that column. Now set the column's width to
minimum width plus d times W over D. This makes columns
large differences between minimum and maximum widths wider
columns with smaller differences
This assignment step is then repeated for nested tables using
minimum and maximum widths derived for all such tables in the
pass. In this case, the width of the parent (i.e. enclosing)
cell plays the role of the current window size in the
description. This process is repeated recursively for all
tables. The topmost table is then rendered using the assigned widths
Nested tables are subsequently rendered as part of the parent table'
cell contents
If the table width is specified with the WIDTH attribute, the
agent attempts to set column widths to match. The WIDTH attribute
not binding if this results in columns having less than their
(i.e. indivisible) widths
Raggett Experimental [Page 25]
RFC 1942 HTML Tables May 1996
If relative widths are specified with the COL element, the
is modified to increase column widths over the minimum width to
the relative width constraints. The COL elements should be taken
hints only, so columns shouldn't be set to less than their
width. Similarly, columns shouldn't be made so wide that the
stretches well beyond the extent of the window. If a COL
specifies a relative width of zero, the column should always be
to its minimum width
HTML Table
The DTD or document type definition provides the formal definition
the allowed syntax for HTML tables
"id ID #IMPLIED -- element identifier --
class NAMES #IMPLIED -- for subclassing elements --
lang NAME #IMPLIED -- as per RFC 1766 --
dir (ltr|rtl) #IMPLIED -- I18N text direction --">
Raggett Experimental [Page 26]
RFC 1942 HTML Tables May 1996
"align (left|center|right|justify|char) #
char CDATA #IMPLIED -- alignment char, e.g. char=':' --
charoff CDATA #IMPLIED -- offset for alignment char --"
>
"valign (top|middle|bottom|baseline) #IMPLIED
>
body+)>
%attrs; -- id, lang, dir and class --
align %Where; #IMPLIED -- table position relative to --
-- window --
width CDATA #IMPLIED -- table width relative to window --
cols NUMBER #IMPLIED -- used for immediate display mode --
border CDATA #IMPLIED -- controls frame width around --
-- table --
frame %Frame; #IMPLIED -- which parts of table frame to --
-- include --
rules %Rules; #IMPLIED -- rulings between rows and cols --
cellspacing CDATA #IMPLIED -- spacing between cells --
cellpadding CDATA #IMPLIED -- spacing within cells --
Raggett Experimental [Page 27]
RFC 1942 HTML Tables May 1996
>
%attrs; -- id, lang, dir and class --
align %Caption; #IMPLIED -- relative to table --
>
%attrs; -- id, lang, dir and class --
span NUMBER 1 -- default number of columns in --
-- group --
width CDATA #IMPLIED -- default width for enclosed COLs --
%cell.halign; -- horizontal alignment in cells --
%cell.valign; -- vertical alignment in cells --
>
%attrs; -- id, lang, dir and class --
span NUMBER 1 -- number of columns spanned by --
-- group --
width CDATA #IMPLIED -- column width specification --
%cell.halign; -- horizontal alignment in cells --
%cell.valign; -- vertical alignment in cells --
>
%attrs; -- id, lang, dir and class --
%cell.halign; -- horizontal alignment in cells --
%cell.valign; -- vertical alignment in cells --
>
%attrs; -- id, lang, dir and class --
%cell.halign; -- horizontal alignment in cells --
%cell.valign; -- vertical alignment in cells --
>
%attrs; -- id, lang, dir and class --
axis CDATA #IMPLIED -- defaults to cell content --
axes CDATA #IMPLIED -- list of axis names --
nowrap (nowrap) #IMPLIED -- suppress word wrap --
rowspan NUMBER 1 -- number of rows spanned by cell --
colspan NUMBER 1 -- number of cols spanned by cell --
%cell.halign; -- horizontal alignment in cells --
%cell.valign; -- vertical alignment in cells --
>
W3C's HTML3 browser, see http://www.w3.org/pub/WWW/Arena/.
Arena was originally created as a proof of concept demo
ideas in the HTML+ specification that preceded HTML3.
browser is now being re-implemented to provide a
implementation of HTML3 along with support for style sheets
client-side scripting
Continuous Acquisition and Life-Cycle Support (
Computer-aided Acquisition and Logistics Support) (CALS) is
Department of Defense (DoD) strategy for achieving
creation, exchange, and use of digital data for weapon
and equipment. More information can be found from the US
CALS home page at http://navysgml.dt.navy.mil/cals.
Raggett Experimental [Page 29]
RFC 1942 HTML Tables May 1996
HTML 2.0 (RFC1866)
Hypertext Markup Language Specification Version 2.0 by T
Berners-Lee and D. Connolly, November 1995. Further
can be found at http://www.w3.org/pub/WWW/MarkUp/ or
ftp://ds.internic.net/rfc/rfc1866.
HTML 3.0
Hypertext Markup Language Specification Version 3.0. The
draft specification as published in March 1995. Work on
HTML3 is proceeding piecemeal with the new table
as one of the pieces. For W3C related work on HTML,
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
ftp://ds.internic.net/rfc/rfc1766.txt
Security
Security issues are not discussed in this memo
Author's
Dave Raggett W3
EMail: dsr@w3.
The World Wide Web Consortium: http://www.w3.org
Raggett Experimental [Page 30]
if you see any problems within the linking, don't worry be happy,
this is version 0.1 of the Relevance System and you gotta expect some crappy subroutines sometimes,
just be content we did not write this in Java, which would have made this "bigger and better" HAHAHHA.
RFC documents can be found at I.E.T.F.
Relevance System Copyright © 2002 Spectrum WorldResearch
other technical nosh by ServerMasters Corporation
collaboration of BobX
|