2010-08-12 2 views
2

Je viens d'exécuter ce code simple via le service de validation w3c (http://validator.w3.org/check). Voici le code que je suis en cours d'exécution à travers:HTML 4.01 Normes strictes

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd" 
    > 
<html lang="en"> 
<head> 
    <title><!-- Insert your title here --></title> 
</head> 
<body> 
<form name="testform" action="/" method="post"> 
    <input type="text" name="testfield"> 
</form> 
</body> 
</html> 

Je reçois l'erreur suivante sur le champ de saisie:

ligne 10, colonne 40: type de document ne permet pas l'élément « INPUT " ici; manquant un de "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE", "DIV", "ADRESSE" début-tag

Je ne vois rien de mal à cela. Des idées?

Répondre

6

Les problèmes est la façon dont l'élément est FORM définir dans la DTD:

<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form --> 

Ainsi, il peut soit avoir un %block (sauf pour FORM) ou un élément SCRIPT.

Et %block est défini comme:

<!ENTITY % block 
"P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT | 
    BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS"> 

Et le reste:

<!ENTITY % heading "H1|H2|H3|H4|H5|H6"> 

<!ENTITY % list "UL | OL"> 

<!ENTITY % preformatted "PRE"> 

Étant donné que votre formulaire ne contient aucun d'entre eux comme un enfant direct, la page Échec de la validation.

+0

Merci pour la réponse. Je ne suis pas tout à fait sûr de ce que tout cela signifie cependant. Que devrais-je changer dans mon code pour corriger le problème? – blcArmadillo

+1

@blcArmadillo - la [DTD] (http://www.w3.org/TR/html4/strict.dtd) est la définition de HTML 4.01 Strict et c'est ce à quoi elle s'oppose. En bref, l'un des éléments (balises) ci-dessus doit être immédiatement après la balise '

'. Comme '' ne figure pas dans la liste, il n'est pas valide immédiatement dans la balise' '. – Oded

+0

Il vaut la peine d'ajouter qu'il y a une autre règle au-delà. La production ci-dessus indique seulement que vous ne pouvez pas avoir un formulaire immédiatement à l'intérieur d'un formulaire (' ...'). En fait, vous ne pouvez pas avoir de formulaire à l'intérieur d'un formulaire, mais cela ne peut pas être exprimé dans une DTD (de même, vous ne pouvez pas avoir un '' à l'intérieur d'un ''). –

Questions connexes