Connected: An Internet Encyclopedia
RFC 1942 - 4.5. The TABLE element

Top: Connected: An Internet Encyclopedia
Up: Requests For Comments
Up: RFC 1942
Up: 4. A walk through the Table DTD
Prev: 4.4. Standard Units for Widths
Next: 4.6. Table Captions

### 4.5. The TABLE element

    <!ENTITY % Where "(left|center|right)">

    <!ELEMENT table - - (caption?, (col*|colgroup*), thead?, tfoot?, tbody+)>

    <!ATTLIST table                    -- table element --
            %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  -- controls rules between cells --
            cellspacing CDATA #IMPLIED -- spacing between cells --
            cellpadding CDATA #IMPLIED -- spacing within cells --
            >

The TABLE element requires both start and end tags. Table elements start with an optional CAPTION element, optionally followed by either one or more COL elements, or one or more COLGROUP elements, then an optional THEAD, an optional TFOOT, and finally one or more TBODY elements.

ID, CLASS, LANG and DIR
  See earlier description of common attributes.

ALIGN
  Defines the horizontal position of the table relative to the current left and right margins. ALIGN=CENTER centers the table midway between the left and right margins. ALIGN=LEFT positions the table at the left margin, while ALIGN=RIGHT positions the table at the right margin. User agents may flow text around the right handside of the table for ALIGN=LEFT, or the left handside for ALIGN=RIGHT.

  Note you can use <BR CLEAR=LEFT> after the table element if you want to avoid text flowing along side the table when you have specified ALIGN=LEFT, or <BR CLEAR=RIGHT> for a right aligned table. To prevent a right aligned table flowing around something else, use <BR CLEAR=RIGHT> before the table etc. Greater control over textflow is possible using style sheets.

WIDTH
  Specifies the desired width of the table. In addition to the standard units, the "%" sign may used to indicate that the width specifies the percentage width of the space between the current left and right margins, e.g. width="50%". In the absence of this attribute, the table width can be determined by the layout algorithm given later on.

  It is recommended that the table width be increased beyond the value indicated by the WIDTH attribute as needed to avoid any overflow of cell contents. Such increases should try to avoid drastic changes to relative column widths specified by the author. To avoid the need for excessive horizontal scrolling, or when such scrolling is impractical or undesired, it may be appropriate to split words across lines.

COLS
  Specifies the number of columns for the table. If present the user agent may render the table dynamically as data is received from the network without waiting for the complete table to be received. If the WIDTH attribute is missing, a default of "100%" may be assumed for this purpose. If the COLS attribute is absent, a prepass through the table's contents is needed to determine the number of columns together with suitable values for the widths of each column.

BORDER
  Specifies the width of the border framing the table, see standard units.

FRAME
  Specifies which sides of the frame to render.

             <!ENTITY % Frame
                "(void|above|below|hsides|lhs|rhs|vsides|box|border)">

  VOID
    Don't render any sides of the frame.

  ABOVE
    The top side of the frame

  BELOW
    The bottom side of the frame

  HSIDES
    The top and bottom sides of the frame

  LHS
    The left hand side of the frame

  RHS
    The right hand side of the frame

  VSIDES
    The left and right sides of the frame

  BOX
    All four sides of the frame

  BORDER
    All four sides of the frame

  The value "Border" is included for backwards compatibility with deployed browsers. If a document includes <TABLE BORDER> the user agent will see FRAME=BORDER and BORDER=_implied_. If the document includes <TABLE BORDER=_n_> then the user agent should treat this as FRAME=BORDER except if _n=0_ for which FRAME=VOID is appropriate.

  Note: it would have been preferable to choose values for FRAME consistent with the RULES attribute and the values used for alignment. For instance: none, top, bottom, topbot, left, right, leftright, all. Unfortunately, SGML requires enumerated attribute values to be unique for each element, independent of the attribute name. This causes immediate problems for "none", "left", "right" and "all". The values for FRAME have been chosen to avoid clashes with the RULES, ALIGN and VALIGN attributes. This provides a measure of future proofing, as it is anticipated that that the FRAME and RULES attributes will be added to other table elements in future revisions to this specification. An alternative would be to make FRAME a CDATA attribute. The consensus of the HTML-WG was that the benefits of being able to use SGML validation tools to check attributes based on enumerated values outweighs the need for consistent names.

RULES
  Specifies where to draw rules within the table interior.

             <!ENTITY % Rules "(none | groups | rows | cols | all)">

  NONE
    Suppresses internal rulings.

  GROUPS
    The THEAD, TFOOT and TBODY elements divide the table into groups of rows, while COLGROUP elements divide the table into groups of columns. This choice places a horizontal rule between each row group and a vertical rule between each column group. Note that every table has at least one row and one column group.

  ROWS
    As RULES=GROUPS plus horizontal rules between all rows. User agents may choose to use a heavier rule between groups of rows and columns for emphasis.

  COLS
    As RULES=GROUPS plus vertical rules between all columns. User agents may choose to use a heavier rule between groups of rows and columns for emphasis.

  ALL
    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.

  If a document includes <TABLE BORDER> or <TABLE BORDER=_n_> then the default for the table element is RULES=ALL, except if _n=0_ for which RULES=NONE is appropriate.

CELLSPACING
  This attribute is intended for backwards compatibility with deployed user agents. It specifies the space between the table 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.

CELLPADDING
  This attribute is intended for backwards compatibility with deployed user agents. It specifies the amount of space between the border of the cell and its contents both above/below, and left//right. See standard units. Greater control will be possible using style sheet languages.

If a fixed width is set for the table or column, the CELLSPACING and CELLPADDING may demand more space than assigned. Current practice is for the latter to take precedence over WIDTH attributes when a conflict occurs, although this isn't required by this specification.

Next: 4.6. Table Captions

Connected: An Internet Encyclopedia
RFC 1942 - 4.5. The TABLE element