2010-11-30 29 views
5

Je reçois cette erreur de validation W3C HTML:Pourquoi cette définition de table html n'est-elle pas validée?

end tag for "table" which is not finished 

pour ce code:

<table id="myTable"> 
</table> 

Ceci est mon DOCTYPE:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

Je pensais que la définition de la table était parfaitement bien!?

+0

Cela me semble correct. Est-ce le code réel qui lance l'erreur? – Allan

Répondre

3

Je crois qu'il devrait y avoir des balises tr et td dans une table pour valider. Il en est de même lorsque vous fermez une balise de tête sans inclure de balise de titre

+0

Je ne reçois pas cet avertissement quand je fais '

' – BeemerGuy

+1

@BeemerGuy Je l'ai fait –

3

Une table XHTML 1.0 doit avoir au moins un tbody ou un tr enfant. Voir the DTD, en particulier la table element:

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

Notez la dernière partie.

6

Si vous regardez le XHTML 1.0 Strict DTD, il précise qu'une table nécessite au moins l'un des TR OU TBODY:

<!ELEMENT table 
    (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))> 
<!ELEMENT caption %Inline;> 
<!ELEMENT thead (tr)+> 
<!ELEMENT tfoot (tr)+> 
<!ELEMENT tbody (tr)+> 
<!ELEMENT colgroup (col)*> 
<!ELEMENT col  EMPTY> 
<!ELEMENT tr  (th|td)+> 
<!ELEMENT th  %Flow;> 
<!ELEMENT td  %Flow;> 

Le TR, à son tour, nécessite au moins l'un des TH ou TD.

Le signe + après un nom d'élément signifie qu'il doit apparaître au moins une fois.

+0

Je cherchais cela dans la spécification, et vous me battre à elle. – zzzzBov

+1

Le document OP n'utilise pas HTML 4.0. –

+1

@Matthew Flaschen XHTML 1 et HTML 4 utilisent les mêmes spécifications de base, je vais devoir aller voir dans la DTD XHTML 1, mais la seule vraie différence est certaines spécifications de syntaxe en XHTML. – zzzzBov

0

Jetez un oeil à http://validator.w3.org/docs/errors.html

73: balise de fin pour X qui est pas fini

Tags les plus probables, vous et imbriqués les fermé dans le mauvais ordre. Par exemple <p><em>. </p> n'est pas acceptable, car <em> doit être fermé avant <p>. L'imbrication acceptable est:

<p><em>...</em></p> 

Une autre possibilité est que vous utilisiez un élément qui nécessite un élément enfant que vous n'avez pas inclus. L'élément parent est donc "non fini", pas complet. Par exemple, en HTML, l'élément doit contenir un élément enfant, les listes nécessitent des éléments de liste appropriés (<ul> et <ol> nécessitent <li>; <dl> requiert <dt> et <dd>), et ainsi de suite.

Vous avez besoin d'au moins un <tr> dans votre tableau.