2009-06-20 8 views
27
<!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" xml:lang="en" lang="en"> 
<head> 
    <title>A webpage</title> 
</head> 
<body> 
    <p> 
    <form action="something.php" method="get"> 
    <input type="submit" value="Hello"/> 
    </form> 
</p> 
</body> 
</html> 
+4

Est-ce que la page de validation ne fait pas quelques suggestions? –

Répondre

53

Regardez les messages d'erreur que vous obtenez lorsque vous essayez cela avec http://validator.w3.org

Outre un avertissement que vous n'avez pas spécifié un codage de caractères (et qu'il est en supposant donc UTF-8), l'erreur principale est qu'un <p> n'est pas autorisé à contenir du contenu non-inline. Vous pouvez supprimer complètement les <p> et </p> ou les déplacer à l'intérieur du <form>.

Quant au « pourquoi », il est parce que c'est la façon dont il est défini dans le schéma qui définit ce qui est et ce qui est pas valide XHTML. Si vous regardez this section of the XHTML definition, vous verrez que <p> ne peut contenir que du texte ou des balises 'inline' (pas 'block').Cependant, un <form> compte comme du contenu «en bloc» et non comme du contenu «en ligne». En d'autres termes, un formulaire peut contenir des paragraphes, mais un paragraphe ne peut pas contenir de formulaires.

+1

+1 pour être la seule réponse (jusqu'à présent) pour expliquer réellement quel est le problème –

+2

+1 pour la même raison ici aussi. Tout le monde est comme "oui, il ne valide pas selon validator.w3c.org –

+0

Content-Type doit être déterminé uniquement par l'en-tête HTTP – pepkin88

1

Selon this, parce que:

ligne 8, colonne 44: type de document ne permet pas élément "forme" ici; l'un des "objet", "ins", "del", "carte" start-tag ✉ L'élément mentionné n'est pas autorisé à apparaître dans le contexte dans lequel vous l'avez placé; les autres éléments mentionnés sont les seuls qui sont tous deux autorisés et peuvent contenir l'élément mentionné. Cela pourrait signifier que vous avez besoin d'un élément contenant, ou peut-être que vous avez oublié de près d'un élément précédent.

Une cause possible de ce message est que vous avez tenté de mettre un élément de niveau bloc (tel que « p » ou « table ») à l'intérieur d'un élément en ligne (tel que « a », « durée ", ou " police ").

ligne 9, colonne 40: type de document ne permet pas "entrée" élément ici; manquant un de "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pré", "adresse", "fieldset", "ins", "del" start-tag input type = "submit" value = "Bonjour" L'élément mentionné ne doit pas apparaître dans le contexte dans lequel vous l'avez placé; les autres éléments mentionnés sont les seuls qui sont tous deux autorisés y et peut contenir les éléments mentionnés. Cela pourrait signifier que vous avez besoin d'un élément contenant , ou peut-être que vous avez oublié de fermer un élément précédent.

Une cause possible de ce message est que vous avez tenté de mettre un élément de niveau bloc (tel que « p » ou « table ») à l'intérieur d'un élément en ligne (tel que « a », « durée ", ou " police ").

+0

+1 pour ce qui suit: "... vous avez tenté de placer un élément de niveau bloc (tel que" p "ou" table ") à l'intérieur d'un élément en ligne (tel que" a "," span "ou" police " ")." –

-1

Vous ne pouvez pas mettre l'intérieur sous forme paragraphe. Ecrire comme ceci:

<body> 
    <form action="something.php" method="get"> 
    <p> 
    <input type="submit" value="Hello"/> 
    </p> 
    </form> 
</body> 
+3

Il a demandé _WHY_ il ne valide pas, pas comment le réparer. –

-1

Essayez d'utiliser le W3C Markup Validator, qui dira ce qui est votre invalide avec la plupart (X) HTML et les documents CSS.

+4

Je pense qu'il s'en rend probablement compte puisqu'il sait déjà qu'il ne valide pas. Il demandait pourquoi c'était invalide, pas si. –

+1

Bien vu que le validateur du W3C explique assez bien pourquoi il est invalide, j'ai pensé que c'était la façon la plus informative de résoudre le problème. Il est préférable de dire à quelqu'un comment résoudre un problème, plutôt que de simplement lui donner la réponse. – DaveR

-3

J'ai exécuté un test avec votre code HTML via validator.w3.org et le résultat est que vous devez échanger les balises P et FORM pour qu'il passe en tant que code HTML W3C valide.

<!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" xml:lang="en" lang="en"> 
<head> 
    <title>A webpage</title> 
</head> 
<body> 
    <form action="something.php" method="get"> 
    <p> 
     <input type="submit" value="Hello"/> 
    </p> 
    </form> 
</body> 
</html> 
+4

Il a demandé _WHY_ il ne valide pas, pas comment le réparer. –

Questions connexes