Почему разделы внутренней таблицы должны проходить проверку через TFOOT TBODY?

#html #validation #xhtml #w3c-validation

#HTML #проверка #xhtml #w3c-проверка

Вопрос:

Я часто использую элементы THEAD, TBODY и TFOOT для разделения моих таблиц данных на разделы, которые можно обрабатывать отдельно с помощью CSS. Я также понимаю, что всегда существует неявный тег TBODY.

Что меня озадачивает, так это порядок, в котором они должны проходить проверку. ЭТА таблица будет проверять:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Table Validation Test</title>
</head>
<body>

<table>

<thead>
<tr>
    <th scope="col">Enemies List</th>
</tr>
</thead>

<tfoot>
<tr>
    <td>amp;copy; Bomb Voyage</td>
</tr>
</tfoot>

<tbody>
<tr>
    <td>Mr. Incredible</td>
    <td>Elastigirl</td>
    <td>Gazer Beam</td>
</tr>
</tbody>

</table>
</body>
</html>
  

Но этот не будет:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Table Validation Test</title>
</head>
<body>

<table>

<thead>
<tr>
    <th scope="col">Enemies List</th>
</tr>
</thead>

<tbody>
<tr>
    <td>Mr. Incredible</td>
    <td>Elastigirl</td>
    <td>Gazer Beam</td>
</tr>
</tbody>


<tfoot>
<tr>
    <td>amp;copy; Bomb Voyage</td>
</tr>
</tfoot>

</table>
</body>
</html>
  

Допустимый раздел проходит через HEAD, FOOT, BODY; что не имеет никакого смысла.

Размещение элемента foot в нижней части таблицы сохранит аналогию между таблицей и человеческим телом. Но по какой-то причине этот порядок считается недопустимым.

Кто-нибудь знает почему?

Ответ №1:

Спецификация указывает причину:

TFOOT должен отображаться перед TBODY в определении таблицы, чтобы пользовательские агенты могли отобразить foot перед получением всех (потенциально многочисленных) строк данных.

http://www.w3.org/TR/html401/struct/tables.html#h-11.2.3

Я не знаю, действительно ли какие-либо браузеры следуют этому поведению, и оно было изменено в HTML5 для обработки как порядка HTML 4, так и более логичного порядка:

В таком порядке: необязательно элемент caption, за которым следует ноль или более элементов colgroup, необязательно за которым следует элемент thead, необязательно за которым следует элемент tfoot, за которым следует либо ноль, либо более элементов tbody, либо один или более элементов tr, необязательно за которым следует элемент tfoot (но всего может быть только один дочерний элемент tfoot).

http://www.w3.org/TR/html5/tabular-data.html