<!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>
risposta
Guarda i messaggi di errore che si ottiene quando si tenta che con http://validator.w3.org
A parte un avvertimento che non è stato specificato una codifica dei caratteri (e che è quindi assumendo UTF-8), l'errore principale è che a <p>
non è consentito contenere contenuto non in linea. È possibile rimuovere completamente <p>
e </p>
oppure spostarli all'interno di <form>
.
Per quanto riguarda il 'perché', è perché è così che è definito nello schema che definisce ciò che è e ciò che non lo è validato XHTML. Se guardi allo this section of the XHTML definition vedrai che <p>
può contenere solo tag di testo o 'inline' (non 'blocchi').Tuttavia un <form>
conta come contenuto "blocco" non come contenuto "in linea".
In altre parole, un modulo può contenere paragrafi, ma un paragrafo non può contenere moduli.
+1 per essere l'unica risposta (finora) per spiegare effettivamente quale sia il problema –
+1 per lo stesso motivo anche qui. Tutti gli altri sono come "sì, non convalida in base a validator.w3c.org –
Il tipo di contenuto deve essere determinato solo dall'intestazione HTTP. – pepkin88
Secondo this, perché:
Linea 8, Colonna 44: tipo di documento non non consente elemento "forma" qui; mancante uno di "oggetto", "ins", "del", "mappa" start-tag ✉ L'elemento menzionato non è consentito per apparire nel contesto in cui è stato inserito ; gli altri menzionati elementi sono gli unici che sono sia consentito lì e possono contenere l'elemento menzionato. Questo potrebbe significare che avete bisogno di un elemento che contiene, o forse che hai dimenticato di vicino un elemento precedente.
Una delle possibili cause per questo messaggio è che si è tentato di mettere un elemento a livello di blocco (come "p" o "tavolo") all'interno di un elemento inline (come ad esempio "a", "arco ", o " font ").
Linea 9, Colonna 40: tipo di documento non non consente elemento "input" qui; mancanti di "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "indirizzo", "campo", "ins", "del" start-tag input type = "submit" value = "Hello" L'elemento menzionato non può essere visualizzato in il contesto in cui è stato inserito; gli altri elementi menzionati sono unici che sono entrambi ammessi lì e possono contenere l'elemento menzionato. Questo potrebbe significare che avete bisogno di un elemento contenente , o forse che ti sei dimenticato di chiudere un elemento precedente .
Una delle possibili cause per questo messaggio è che si è tentato di mettere un elemento a livello di blocco (come "p" o "tavolo") all'interno di un elemento inline (come ad esempio "a", "arco ", o " font ").
+1 per quanto segue: "... si è tentato di inserire un elemento a livello di blocco (come" p "o" tabella ") all'interno di un elemento in linea (come" a "," span "o" font " ")." –
Non è possibile inserire il modulo nel paragrafo. Scrivere in questo modo:
<body>
<form action="something.php" method="get">
<p>
<input type="submit" value="Hello"/>
</p>
</form>
</body>
Ha chiesto _WHY_ non convalida, non come risolverlo. –
provare a utilizzare il W3C Markup Validator, che vi dirà il vostro ciò che non è valido con la maggior parte dei documenti (X) HTML e CSS.
Penso che probabilmente lo comprende perché sa già che non sta convalidando. Stava chiedendo perché fosse invalido, non se. –
Benché il validatore del W3C spieghi piuttosto bene perché non è valido, ho pensato che fosse il modo più informativo per risolvere il problema. È meglio dire a qualcuno come risolvere un problema, piuttosto che dare loro la risposta. – DaveR
Ho eseguito un test con il codice HTML tramite validator.w3.org e il risultato è che è necessario scambiare i tag P e FORM affinché vengano passati come codice HTML W3C valido.
<!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>
Ha chiesto _WHY_ non convalida, non come risolverlo. –
la pagina di convalida non fornisce suggerimenti? –