[CSS21] 17.4: properties on outer & inner table boxes

In previous versions of CSS2.1, the outer table box was anonymous and the
(inner) table box was considered the principal box generated by the table.
This made it reasonably clear that the outer table box's properties (other
margins, 'float' etc. as mentioned in §17.4) were all inherited from the outer
table box's parent box or at initial values, as per the fourth-last paragraph
of §9.2.1.1.

Whereas in the Oct2010 editors' draft, the outer table box is the principal box,
implying that it's now the outer table box that gets the background, borders
and so on that were the computed values of the table element.

The new text in §17.4 isn't clear whether the (inner) table box is anonymous or
not; but §9.2.1 is clear that the only elements that "may generate additional
boxes in addition to the principal box" are "'list-item' elements".  [The
current text doesn't actually specify what a "'list-item' element" is, but
most people would guess that an element with display:table isn't one.]

If property values are to stay the same as in previous versions of the spec,
then there needs to be some text saying for each of the two boxes what property
values they have.

(Or if the implied change to properties was deliberate, then I would suggest
drawing explicit attention to this, given that most or all existing user agents
assign properties according to the previous versions of the spec.)


I believe we need to be explicit that the table box associated with an
inline-table element is not "an inline-table".  Whether it's an inline-table
affects zindex.html, for example.  When describing what properties the table
box gets, I suggest explicitly stating that its 'display' property has value
'table'.

(I'll grant that an implementer who was conscious of the question may well
 decide that it shouldn't be an inline-table, but without specifying this
 explicitly, there's a fair chance that it accidentally gets left as
 inline-table, and the bug would likely not be noticed by testing.)

[The technical reason that this is an underspecification bug is that although
 §17.4 does say that the table box is block-level, the current version of
 §9.2.2 still has the sometimes/always problem such that being block-level
 isn't enough to imply that its 'display' value isn't 'inline-table' or
 'inline'.]


As hinted at above, I suggest that it be made clear whether or not the inner
table box is anonymous, and point out that §9.2.1 para 2 may need changing
accordingly.  I don't know for sure whether it makes a difference whether or
not it's anonymous or whether or not it's one of the boxes "generated by"
the table element, but it seems safest if we say that it is one of the boxes
generated by the table element, and worth the small wording cost in §9.2.1.

(The current text doesn't explicitly say that the table box is generated at
all, beyond saying that the outer table box contains "the table box".)


pjrm.

Received on Friday, 5 November 2010 06:52:11 UTC