The HTML Table DTD (1995-10-03)

Scripting is disabled and therefore annotations cannot be shown.
<!-- The HTML Table DTD -->

<!-- Content model entities imported from parent DTD:

  %body.content; allows table cells to contain headers, paras,
  lists, form elements and even arbitrarily nested tables.

  %text; is text characters, including character entities and
  character emphasis elements, IMG and anchors
-->

<!ENTITY % attrs
       "id      ID       #IMPLIED  -- element identifier --
        class   NAMES    #IMPLIED  -- used with style sheets --
        lang    NAME     #IMPLIED  -- as per RFC 1766 --">

<!--
 The BORDER attribute sets the thickness of the frame around the
 table. The default units are screen pixels.

 The FRAME attribute specifies which parts of the frame around
 the table should be rendered.

        none    no frame
        top     render only the top part of the frame
        bottom  render only the bottom part of the frame
        topbot  render both top and bottom parts
        sides   render both left and right parts
        all     render all four parts
        border  render all four parts

 The value "border" is chosen for backwards compatibility with
 <TABLE BORDER> which yields frame=border and border=implied
 For <TABLE BORDER=1> you get border=1 and frame=implied. In this
 case, its appropriate to treat this as frame=border for backwards
 compatibility with deployed browsers.

 The RULES attribute defines which rules to draw between cells:

        none    no rules between cells
        basic   rule between thead/tbody and tbody/tbody
        rows    as per basic plus row separators
        cols    as per basic plus column group separators
        all     between all rows and all columns

 If RULES is absent then assume:
     "none" if BORDER is absent or BORDER=0 otherwise "all"
-->
<!ENTITY % Frame "(none|top|bottom|topbot|sides|all|border)">

<!ENTITY % Rules "(none | basic | rows | cols | all)">
        
<!-- horizontal alignment attributes for cell contents -->
<!ENTITY % cell.halign
        "align  (left|center|right|justify|char) #IMPLIED
         char    CDATA   #IMPLIED -- alignment char, e.g. char=':' --
         charoff NUTOKEN 50       -- % offset for alignment char --"
        >

<!-- vertical alignment attributes for cell contents -->
<!ENTITY % cell.valign
        "valign  (top|middle|bottom|baseline)  #IMPLIED"
        >
        
<!ELEMENT table - - (caption?, col*, thead?, tfoot?, tbody+)>
<!ELEMENT caption - - (%text;)+>
<!ELEMENT thead - O (tr+)>
<!ELEMENT tfoot - O (tr+)>
<!ELEMENT tbody O O (tr+)>
<!ELEMENT col - O EMPTY>
<!ELEMENT tr - O (th|td)+>
<!ELEMENT (th|td) - O %body.content>

<!-- NAME is used for rules to avoid SGML name clash with %Frame -->

<!ATTLIST table                    -- table element --
        %attrs;                    -- id, lang, class --
        float (left|right) #IMPLIED -- 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   NAME     #IMPLIED  -- %Rules; controls rules between cells --
        cellspacing NUMBER #IMPLIED -- spacing between cells --
        cellpadding NUMBER #IMPLIED -- spacing within cells --
        >

<!-- ALIGN is used here for compatibility with deployed browsers -->
<!ENTITY % Caption "(top|bottom|left|right)">

<!ATTLIST caption                  -- table caption --
        %attrs;                    -- id, lang, class --
        align  %Caption; #IMPLIED  -- relative to table --
        >

<!--
 COL elements define groups of columns and the alignment
 properties of their cells. The WIDTH attribute specifies the
 width of the columns, e.g.

     width=64        width in "pixels", see earlier note on units
     width=0.5*      relative width of 0.5 (default is 1.0)

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

<!ATTLIST col                      -- column groups and properties --
        %attrs;                    -- id, lang, class --
        span    NUMBER   1         -- number of columns spanned by group --
        width   CDATA    #IMPLIED  -- relative width e.g. 2.5 --
        %cell.halign;              -- horizontal alignment in cells --
        %cell.valign;              -- vertical alignment in cells --
        >

<!--
    Use THEAD to duplicate headers when breaking table
    across page boundaries, or for static headers when
    body sections are rendered in scrolling panel.

    Use TFOOT to duplicate footers when breaking table
    across page boundaries, or for static footers when
    body sections are rendered in scrolling panel.

    Use multiple TBODY sections when rules are needed
    between groups of table rows.
-->
<!ATTLIST (thead|tbody|tfoot)      -- table section --
        %attrs;                    -- id, lang, class --
        %cell.halign;              -- horizontal alignment in cells --
        %cell.valign;              -- vertical alignment in cells --
        >

<!ATTLIST tr                       -- table row --
        %attrs;                    -- id, lang, class --
        %cell.halign;              -- horizontal alignment in cells --
        %cell.valign;              -- vertical alignment in cells --
        >

<!ATTLIST (th|td)                  -- header or data cell --
        %attrs;                    -- id, lang, 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 --
        >