Closed Bug 68061 Opened 24 years ago Closed 21 years ago

without wrapping tr in tbody, table does not render correctly in XHTML

Categories

(Core :: Layout: Tables, defect, P2)

defect

Tracking

()

RESOLVED FIXED
mozilla1.5beta

People

(Reporter: chrispetersen, Assigned: dbaron)

References

()

Details

(Keywords: fixed1.4.1, testcase, xhtml, Whiteboard: [patch])

Attachments

(4 files)

Build: 2001020608 Platforms: All Expected Result: Background color should displayed in table What I got: Background color is only partially displayed. Character data in the TD is opaque and overlaps background color. Steps to reproduce 1) Open either test case: http://slip/projects/marvin/xhtml/transitional/table_bgcolor_rgb.xml http://slip/projects/marvin/xhtml/transitional/tr_bgcolor_rgb.xml 2) In the table_bgcolor_rgb.xml , the bgcolor attribute appears in the TABLE element. In the tr_bgcolor_rgb.xml , the bgcolor attribute appears in the TR element. 3) Notice that the background color specified is not completely displayed. The TD 's contents is opaque and covers the background color.
Found out more info about the problem. Each test case has a bgcolor attribute on the BODY element. A value of "#FFFFFF has been assigned.Removing the bgcolor attribute from body will allow the background color of the TR/TABLE will display correctly.
Keywords: xhtml
I believe it is possible to work around this by using CSS stylesheet. This bug has been marked "future" because the original netscape engineer working on this is over-burdened. If you feel this is an error, that you or another known resource will be working on this bug,or if it blocks your work in some way -- please attach your concern to the bug for reconsideration.
Target Milestone: --- → Future
Heikki: could please reevaluate this since I think this is what's causing bug 53944. If it is then bgcolor on tables will be broken for xslt generated pages Chris: could you please attach the testcases here so that non-netscape people can test them, thanks
Keywords: mozilla1.0
Here are the same tests found at mozilla.org: http://mozilla.org/quality/browser/standards/xhtml/transitional/ table_bgcolor_rgb.xml http://mozilla.org/quality/browser/standards/xhtml/transitional/ tr_bgcolor_rgb.xml
Jonas, would you have the cycles to track this down? It is most likely just a QI to nsIHTMLDocument somewhere that we could get rid of, or extend it for nsIXMLDocument as well. Tracking it down is the hard part, and I don't know when I will have the cycles to work with this. I don't know a good place to place breakpoints to start with since I have not looked at the code, but here is one suggestion: place a breakpoint in nsXMLContentSink::OpenContainer and step in to the code that creates the HTML content object that has the bgcolor attribute. This way you should be able to find out what class might be the culprit. Then, place breakpoints in the methods of that class that might have something to do with this to try and track down where it happens. The bug might be in the content class, or frame class, or a combination of both or with bad luck it might be somewhere else. I am pretty sure the content sink has nothing to do with this, but you could see if the HTML content sink has some special handling for bgcolor attribute. You could also ask the table people (karnaze?) what would be a good place to look at.
Target Milestone: Future → mozilla1.0
Since this does considerably affect rendering of XML/XSL changing severity to "major". Possible to get this into 0.9.4 ?
Severity: normal → major
The problem is that for XHTML we're not creating the (optional) TBODY element. For HTML, this is handled by the parser, which does various fix-up for cases like this. In this case, it inserts a TBODY element between the TABLE element and the first TR element. Not sure whether we should handle this in the sink our in the stylesheet (html.css?). See http://www.w3.org/TR/html401/struct/tables.html#h-11.2.3. The relevant bit is "The TBODY start tag is always required except when the table contains only one table body and no table head or foot sections." Lowering severity, there's a workaround: wrap your rows in a TBODY.
Severity: major → normal
Just FYI: XHTML should not create a tbody element in the DOM if it is missing from the markup. This is one of the differences between XHTML and HTML. See C.11 in http://www.w3.org/TR/html/#guidelines
CC karnaze: he says there will be some problems in tables if there is no TBODY...
see bug 30378 for an extended discussion of the tbody problem
Oh, I even noticed that in the xhtml DTD <tr> is a valid child of <table> so we should defenetly be able to deal with that (at least in xhtml)
Jst, you're right. So the problem is a table layout issue. See also bug 86664 which is very similar, not sure if it's a dupe though.
Assignee: heikki → karnaze
Component: XML → HTMLTables
QA Contact: petersen → amar
er, I meant Jonas ;)
Keywords: testcase
I can't get to the url and the test case works around the problem. Removing the <tbody>s from the test case doesn't exhibit the problem. Need test cases.
Keywords: testcaseqawanted
*** Bug 86664 has been marked as a duplicate of this bug. ***
Keywords: testcase
Keywords: mozilla0.9.9
my guess that moz should be just creating an anonymous table-group object when there is no tbody
depends on what you mean by "anonymous table-group object". We can't add a tbody node in the DOM since that would break the DOM Core spec. We could however add a table-group frame, but i'm not sure if that would help, or if there even is such a frame
I was thinking more in terms of this: http://www.w3.org/TR/1998/REC-CSS2-19980512/tables.html#anonymous-boxes http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x25 I should have said table-row-group and not table-group it seems that it says: <quote> * If the parent P of a 'table-row' element T is not a 'table', 'inline-table', or 'table-row-group' element, an object corresponding to a 'table' element will be generated between P and T. </quote> but it also says <quote> * If a child T of a 'table' element (or 'inline-table') P is not a 'table-row-group', 'table-header-group', 'table-footer-group', or 'table-row' element, an object corresponding to a 'table-row' element will be generated between P and T. </quote> I'm not sure if it would help this bug, but that is how moz should be behaving.
doh! Forget what I said. I'm now wondering if we should suggest to the CSS WD to amend it to make table-row not a child of table.
Moving to Moz 1.1. Engineers are overloaded with higher priority bugs.
Target Milestone: mozilla1.0 → mozilla1.1
As this affects all rendering of XML/XSL I do recommend this for 1.0
changing summary from: Table/TR bgcolor attribute is not render correctly in XHTML to: without wrapping tr in tbody, table does not render correctly in XHTML I would suggest that whenever a table-row frame is found to be a child of a table frame, moz create a table-group frame. Though it doesn't follow the CSS2 spec but it does makes things easier and simpler, and I don't think there will be any visible differences.
Summary: Table/TR bgcolor attribute is not render correctly in XHTML → without wrapping tr in tbody, table does not render correctly in XHTML
Blocks: 30378
No longer blocks: 30378
Blocks: 30378
Depends on: 148810
Keywords: mozilla1.1
Blocks: 154398
Keywords: mozilla1.1mozilla1.3
Blocks: 193529
mass reassign to default owner
Assignee: karnaze → table
QA Contact: amar → madhur
Target Milestone: mozilla1.1alpha → ---
Priority: -- → P2
Target Milestone: --- → Future
*** Bug 205481 has been marked as a duplicate of this bug. ***
Blocks: 211114
Blocks: 151996
Bug 211636 explains a good bit of the problem in this bug and the bugs it blocks.
Depends on: 211636
Attached patch patch (deleted) — Splinter Review
Taking.
Assignee: table → dbaron
Whiteboard: [patch]
Target Milestone: Future → mozilla1.5beta
Attachment #127601 - Flags: superreview?(bzbarsky)
Attachment #127601 - Flags: review?(bzbarsky)
Comment on attachment 127601 [details] [diff] [review] patch Please add a comment that calling GetTable like: nsIConten* tableContent; GetTable(&tableContent); (with a pointer to an uninitialized nsIContent*) will most likely crash, ok? It's probably safe to assume that won't happen since this is a protected method, but....
Attachment #127601 - Flags: superreview?(bzbarsky)
Attachment #127601 - Flags: superreview+
Attachment #127601 - Flags: review?(bzbarsky)
Attachment #127601 - Flags: review+
Why? The out param is initialized to null at the beginning of |GetTable|.
Fix checked in to trunk, 2003-07-12 15:13 -0700.
Status: NEW → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
Attachment #127601 - Flags: approval1.4.x?
*** Bug 205705 has been marked as a duplicate of this bug. ***
Comment on attachment 127601 [details] [diff] [review] patch a=asa (on behalf of drivers) for checkin to 1.4 branch.
Attachment #127601 - Flags: approval1.4.x? → approval1.4.x+
Fix checked in to MOZILLA_1_4_BRANCH, 2003-08-08 02:17 -0700.
Keywords: fixed1.4.1
*** Bug 193529 has been marked as a duplicate of this bug. ***
*** Bug 15799 has been marked as a duplicate of this bug. ***
Blocks: 224532
Keywords: qawanted
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: