2009-06-20 19 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 página de validación no hace algunas sugerencias? –

Respuesta

53

mirada a los mensajes de error que se obtiene cuando se intenta que con http://validator.w3.org

Aparte de una advertencia de que no se ha especificado una codificación de caracteres (y que es, por tanto, asumiendo UTF-8), el error principal es que un <p> no puede contener contenido no en línea. Puede eliminar <p> y </p> por completo o moverlos dentro de <form>.

En cuanto a 'por qué', es porque así es como se define en el esquema que define lo que es y lo que no es XHTML válido. Si mira this section of the XHTML definition, verá que <p> solo puede contener texto o etiquetas "en línea" (no "bloqueadas").Sin embargo, un <form> cuenta como contenido 'en bloque' no como contenido 'en línea'.

En otras palabras, un formulario puede contener párrafos, pero un párrafo no puede contener formularios.

+1

+1 por ser la única respuesta (hasta ahora) para explicar realmente cuál es el problema –

+2

+1 por la misma razón aquí también. Todos los demás son como "sí, no valida de acuerdo con validator.w3c.org –

+0

Content-Type debe determinarse solo por el encabezado HTTP. – pepkin88

1

Según this, porque:

línea 8, columna 44: tipo de documento no no permite elemento "forma" aquí; falta uno de "objeto", "ins", "del", "mapa" etiqueta de inicio ✉ El elemento mencionado no está permitido en el contexto en el que lo ha colocado; los otros elementos mencionados son los únicos que están permitidos allí y pueden contener el elemento mencionado. Esto podría significar que necesita un elemento contenedor, o , posiblemente, que ha olvidado cerrar un elemento anterior.

Una posible causa de este mensaje es que ha intentado poner un elemento a nivel de bloque (como "p" o "mesa" ) en el interior de un elemento en línea (tales como "a", "lapso ", o " fuente ").

Línea 9, Columna 40: tipo de documento no no permite el elemento "entrada" aquí; falta uno de "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "dirección", "fieldset", "ins", "del" etiqueta de inicio input type = "submit" value = "Hello" El elemento mencionado no tiene permitido aparecer en el contexto en el que lo ha colocado; los otros elementos mencionados son los únicos que están permitidos allí y pueden contener el elemento mencionado. Esto podría significar que necesita un elemento que contiene , o posiblemente que ha olvidado cerrar un elemento anterior.

Una posible causa de este mensaje es que ha intentado poner un elemento a nivel de bloque (como "p" o "mesa" ) en el interior de un elemento en línea (tales como "a", "lapso ", o " fuente ").

+0

+1 para lo siguiente: "... ha intentado colocar un elemento de nivel de bloque (como" p "o" tabla ") dentro de un elemento en línea (como" a "," span "o" font ") ")." –

-1

No puede poner el formulario dentro del párrafo. Escribe así:

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

Preguntó _WHY_ no valida, no cómo solucionarlo. –

-1

intente utilizar el W3C Markup Validator, que le dirá a su lo que no es válido con la mayoría de los documentos (X) HTML y CSS.

+4

Creo que probablemente se da cuenta de esto porque ya sabe que no es válido. Él preguntaba por qué no era válido, no si. –

+1

Bueno, ya que el validador W3C explica muy bien por qué no es válido, pensé que era la forma más informativa de resolver el problema. Es mejor decirle a alguien cómo resolver un problema, en lugar de simplemente darles la respuesta. – DaveR

-3

Ejecuté una prueba con su código HTML a través de validator.w3.org y el resultado es que necesita intercambiar las etiquetas P y FORM para que pase como HTML W3C válido.

<!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

Le preguntó a _WHY_ no valida, no cómo solucionarlo. –

Cuestiones relacionadas