2009-06-20 16 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

la pagina di convalida non fornisce suggerimenti? –

risposta

53

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

+1 per essere l'unica risposta (finora) per spiegare effettivamente quale sia il problema –

+2

+1 per lo stesso motivo anche qui. Tutti gli altri sono come "sì, non convalida in base a validator.w3c.org –

+0

Il tipo di contenuto deve essere determinato solo dall'intestazione HTTP. – pepkin88

1

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 ").

+0

+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 " ")." –

-1

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> 
+3

Ha chiesto _WHY_ non convalida, non come risolverlo. –

-1

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.

+4

Penso che probabilmente lo comprende perché sa già che non sta convalidando. Stava chiedendo perché fosse invalido, non se. –

+1

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

-3

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> 
+4

Ha chiesto _WHY_ non convalida, non come risolverlo. –

Problemi correlati