Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can a table row have no cells?

I'm using HTML tables to create a timetable. Each row represents half hour, and the cells can span multiple rows by using rowspan.

Sometimes I have empty tr elements, because all the slots are taken by cells from previous rows.

In that case, the HTML validator complains:

Row [N] of a row group established by a tbody element has no cells beginning on it.

Sure, I could remove those empty tr and reduce the rowspan value of the expanded cells. But then the rowspan value would no longer univocally correspond to the duration of the cell.

Therefore, are empty trs really invalid? Why?

like image 498
Oriol Avatar asked Sep 03 '15 17:09

Oriol


1 Answers

You can’t have empty rows in a table in a valid HTML document per the current HTML spec.

Maybe you rightly should be able to, but the spec currently clearly says that you can’t. So if anybody believes it should be allowed by the spec, the right thing to do is to file an issue against the HTML Standard in its github tracker or even write a patch and open a PR for it.

Specifically the spec defines the following error case:

https://html.spec.whatwg.org/multipage/tables.html#the-table-element

If there exists a row or column in the table containing only slots that do not have a cell anchored to them, then this is a table model error.

In Internet-spec terms, that is a “normative” authoritative statement that can’t be ignored or overridden by anything else. It is stating a hard requirement.

The spec elsewhere says this:

The tr element: Content model

https://html.spec.whatwg.org/multipage/tables.html#the-tr-element Zero or more td, th, and script-supporting elements

But that’s not actually a contradiction and does not conflict with or supersede or override the “table model error” requirement cited above. In fact, it’s the opposite—the “table model error” requirement supersedes the more-liberal requirement in the other section (cited above) that a valid tr element can have zero or more children.

Any stricter requirements in a spec always supersedes or overrides any more-liberal requirements.

like image 135
sideshowbarker Avatar answered Sep 21 '22 22:09

sideshowbarker