Draft table spec


Subject: Draft table spec
From: Jeffry Smith (smith@missioncriticallinux.com)
Date: Tue Jan 16 2001 - 16:43:14 CST


Having spent a while looking at LaTeX, XHTML, OpenOffice, and KWord (and
teaching myself a little about XML), I've drafted up a starting point for
tables in the abiword DTD (I think). It's below. The main source was the
XHTML spec, as it seemed to cover most of what I could think of, but I added
the concept of a floating frame below it. This is a frame that is attached to
either a page or paragraph point, and has a given offset.

I know there's a lot more to add, I thought to start with some basics that can
be expanded.

Main differences from XHTML:
1. all of the various things measured in pixels/percent (border, width, etc)
now have a new element, units. This is the measurement for the item (mm,
inches, pixels, etc). I don't know fully about this, but it seemed to me that
using pixels or percent only didn't work for paper. Maybe percent only would
work, and the renderer would translate.
2. Added width & height elements to cells. This allows cells to be
non-standard sizes.
3. Added a REPEAT element to colgroups, thead, and tbody. This is a binary
element that indicates whether the element is repeated across pages or not
("0" means don't repeat, "1" means repeat).
4. Dropped the <th> element in the <tr>. Specify with a colgroup, instead
(if we want to allow single cells to be headers, I suppose it could be added
back in).

I left the col & colgroup in, but I think it should be possible to drop the
col element, and use a colgroup with a span of 1 to accomplish the same thing.
 This would tighten it up.

Comments/suggestions?

jeff

<!--======================= Tables =================-->
<!-- Derived from W3C XHTML table standard, -->
<!--
 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. The values are not the same as
 CALS to avoid a name clash with the valign attribute.
-->
<!ENTITY % TFrame ?(void|above|below|hsides|lhs|rhs|vsides|box|border)">
<!--
 The rules attribute defines which rules to draw between cells:
 If rules is absent then assume:
     ?none? if border is absent or border=?0" otherwise ?all?
-->
<!ENTITY % TRules ?(none | groups | rows | cols | all)">
  
<!-- horizontal placement of table relative to document -->
<!ENTITY % TAlign ?(left|center|right)">
<!-- horizontal alignment attributes for cell contents
  char alignment char, e.g. char=?:?
  charoff offset for alignment char
-->
<!ENTITY % cellhalign
  ?align (left|center|right|justify|char) #IMPLIED
   char %Character; #IMPLIED
   charoff %Length; #IMPLIED?
>
<!-- vertical alignment attributes for cell contents -->
<!ENTITY % cellvalign
  ?valign (top|middle|bottom|baseline) #IMPLIED?
>
<!-- type of units used in measurements -->
<!ENTITY % units
  ?units (pixels|mm|inch|pica|point) #IMPLIED?
>
<!-- repeat of thead, tfoot, colgroup, or col. States whether the entity is
repeated or not on additional pages. 1 = true, 0 = false
-->
<!ENTITY % repeat (1|0) >

<!ELEMENT table
     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
<!ELEMENT caption %Inline;>
<!ELEMENT thead (tr)+>
<!ELEMENT tfoot (tr)+>
<!ELEMENT tbody (tr)+>
<!ELEMENT colgroup (col)*>
<!ELEMENT col EMPTY>
<!ELEMENT tr (th|td)+>
<!ELEMENT td %Flow;>
<!ATTLIST table
  %attrs;
  summary %Text; #IMPLIED
  width %Length; #IMPLIED
   wunits %units; #IMPLIED
  border %Pixels; #IMPLIED
   bunits %units; #IMPLIED
  frame %TFrame; #IMPLIED
  rules %TRules; #IMPLIED
  cellspacing %Length; #IMPLIED
   csunits %units; #IMPLIED
  cellpadding %Length; #IMPLIED
   cpunits %units; #IMPLIED>
<!ENTITY % CAlign ?(top|bottom|left|right)">
<!ATTLIST caption
  %attrs;
>
<!--
colgroup groups a set of col elements. It allows you to group
several semantically related columns together.
-->
<!ATTLIST colgroup
  %attrs;
  span %Number; "1"
  width %MultiLength; #IMPLIED
   wunits %units; #IMPLIED
  %repeat;
  %cellhalign;
  %cellvalign;
>
<!--
 col elements define the alignment properties for cells in
 one or more columns.
 The width attribute specifies the width of the columns, e.g.
     width=64
     wunits specifies the units the width is measured in
   
 The span attribute causes the attributes of one
 col element to apply to more than one column.
-->
<!ATTLIST col
  %attrs;
  span %Number; "1"
  width %MultiLength; #IMPLIED
   wunits %units; #IMPLIED
  %repeat;
  %cellhalign;
  %cellvalign;
>
<!--
    Use thead to duplicate headers when breaking table
    across page boundaries, or for static headers when
    tbody sections are rendered in scrolling panel.
    Use tfoot to duplicate footers when breaking table
    across page boundaries, or for static footers when
    tbody sections are rendered in scrolling panel.
    Use multiple tbody sections when rules are needed
    between groups of table rows.
-->
<!ATTLIST thead
  %attrs;
  %cellhalign;
  %cellvalign;
  %repeat;
>
<!ATTLIST tfoot
  %attrs;
  %cellhalign;
  %cellvalign;
  %repeat;
>
<!ATTLIST tbody
  %attrs;
  %cellhalign;
  %cellvalign;
>
<!ATTLIST tr
  %attrs;
  %cellhalign;
  %cellvalign;
>
<!-- Scope is simpler than headers attribute for common tables -->
<!ENTITY % Scope ?(row|col|rowgroup|colgroup)">
<!-- td for data -->
<!ATTLIST td
  %attrs;
  abbr %Text; #IMPLIED
  axis CDATA #IMPLIED
  headers IDREFS #IMPLIED
  scope %Scope; #IMPLIED
  rowspan %Number; "1"
  colspan %Number; "1"
   width %Length #IMPLIED
   wunits %units; #IMPLIED
   height %Length #IMPLIED
   hunits %units; #IMPLIED
  %cellhalign;
  %cellvalign;
>

<!--======================= Floating Frames =================-->
<!-- Concept Derived from TeX, to define a table anchored to page or -->
<!-- paragraph --->
<!--
 The border attribute sets the thickness of the frame around the
floating frame. The default units are screen pixels.
 The frame attribute specifies which parts of the frame around
 the floating frame should be rendered. The values are not the same as
 CALS to avoid a name clash with the valign attribute.
-->
<!ENTITY % FAnchor ?(page | para)">
<!ELEMENT FFrame
     (caption?, (fbody)>
<!ELEMENT caption %Inline;>
<!ATTLIST tbody
  %attrs;
  %Fhalign;
  %Fvalign;
>
<!-- vertical alignment attributes for floating frame contents -->
<!ENTITY % Fhalign
   align (left|center|right) #IMPLIED
   voffset %Length; #IMPLIED
   vunits %units #IMPLIED
   hoffset %Length; #IMPLIED
   hunits %units #IMPLIED
>
<!-- vertical alignment attributes for floating frame contents -->
<!ENTITY % Fvalign
  ?valign (top|middle|bottom|baseline) #IMPLIED
>



This archive was generated by hypermail 2b25 : Tue Jan 16 2001 - 16:43:21 CST