tfooter не подходит для xhtml? - PullRequest
2 голосов
/ 17 августа 2010

Моя веб-страница была проверена на переходный xhtml, пока я не добавил эту таблицу (см. Ниже).С тех пор он не проверяет и говорит "

тип документа не допускает элемент" tfoot "здесь <tfoot>

Элемент, названный выше, был найден в контексте, где онне допускается. Это может означать, что у вас неправильно вложенные элементы - например, элемент «style» в разделе «body» вместо «head» - или два элемента, которые перекрываются (что недопустимо).

Одной из распространенных причин этой ошибки является использование синтаксиса XHTML в документах HTML. Из-за правил HTML для неявно закрытых элементов эта ошибка может создавать каскадные эффекты. Например, использование «самозакрывающихся» тегов XHTML для «мета»и «ссылка» в разделе «head» документа HTML может привести к тому, что синтаксический анализатор выведет конец раздела «head» и начало раздела «body» (где «link» и «meta» не допускаются;отсюда и сообщаемая ошибка). "

Есть идеи, что происходит?Я проверил наличие открытых и не закрытых тегов, но не нашел ни одного, поэтому не знаю, что еще не так.

<table>
<caption>
My first table, Anna
</caption>
<thead>
<tr>
<th>
June
</th>
<th>
July
</th>
<th>
August
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
 Data 1
</td>
<td>
Data 2
</td>
<td>
 Data 3
</td>
<td>
Data 4
 </td>
 </tr>
 <tr>
 <td>
   Data a
  </td>
   <td>
 Date b
</td>
<td>
Data c
</td>
<td>
Data d
</td>
</tr>
<tfoot>
<tr>
<td>
Result1
</td>
</tr>
</tfoot>
</tbody>
</table>

Ответы [ 2 ]

13 голосов
/ 17 августа 2010

У вас есть <tfoot> в конце таблицы.Оно должно быть между <thead> и <tbody>.Он появится внизу, но закодирован вверху.Одна из первоначальных идей заключается в том, что при загрузке большого стола заголовок и нижний колонтитул будут видны быстро, а остальные заполнятся (особенно полезно, если тело можно прокручивать между ними).На практике это не совсем сработало, но это имеет смысл, если вы это знаете.

В DTD перечислены:

<!ELEMENT table (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>

То есть необязательный caption, затем ноль или более col или colgroup, затем необязательный thead, затем необязательный tfoot, затем по меньшей мере один tbody или tr.

ОБНОВЛЕНИЕ: Обратите внимание, что HTML 5 теперь позволяет помещать <tfoot> в конец таблицы, а не перед первым <tbody> (или первым <tr>, которого нет в<thead>, <tfoot> или <tbody> и, следовательно, в одном неявном <tbody>).Таким образом, код в вопросе теперь будет считаться действительным.Более старый подход также все еще действителен и, вероятно, целесообразен.

2 голосов
/ 17 августа 2010

Элемент tfoot должен находиться вне элемента tbody, например:

<table>
<caption>
My first table, Anna
</caption>
<thead>
<tr>
<th>
June
</th>
<th>
July
</th>
<th>
August
</th>
</tr>
</thead>
<tfoot>
<tr>
<td>
Result1
</td>
</tr>
</tfoot>
<tbody>
<tr>
<td>
 Data 1
</td>
<td>
Data 2
</td>
<td>
 Data 3
</td>
<td>
Data 4
 </td>
 </tr>
 <tr>
 <td>
   Data a
  </td>
   <td>
 Date b
</td>
<td>
Data c
</td>
<td>
Data d
</td>
</tr>
</tbody>

Вот небольшой пример правильного вложения для тех, кто в нем нуждается.

<table>
    <caption></caption>
    <thead>
        <tr>
            <th></th>
        </tr>
    </thead>
    <tfoot>
         <tr>
             <td></td>
         </tr>
    </tfoot>
    <tbody>
         <tr>
             <td></td>
         </tr>
    </tbody>
</table>
...