2010-07-08 20 views
15

Según http://www.w3.org/TR/html401/interact/forms.html#h-17.4, un elemento de entrada debe terminar con un solo > y no un />. Aunque la mayoría de los navegadores pueden manejar un elemento de entrada que termina en />, ¿es ese elemento de entrada válido según las reglas de sintaxis HTML? En otras palabras, elementos como <input ... /> y <br /> son válidos en HTML 4?¿Las etiquetas de entrada de cierre automático son válidas en HTML 4?

(Esta pregunta es acerca de HTML y XHTML no !!!)

Respuesta

11

La sintaxis es válida en algunos lugares pero no significa lo mismo que en XHTML, por lo que no utilizan ellos.

En HTML 4 <foo /> (donde foo es el nombre de un elemento definido como EMPTY) significa lo mismo que <foo>> que significa lo mismo que <foo>&gt; (aunque casi ninguna navegador es compatible con la sintaxis correcta, Emacs-W3 utilizado pero rompió la compatibilidad con el estándar a favor de la representación correcta de los llamados documentos compatibles con HTML XHTML 1.0).

Esto es, por lo tanto, válida en los lugares donde se puede tener una &gt; como en cualquier lugar que se les permite un <img> pero no en otros lugares (como un <hr> que es un elemento secundario de la <body> (en estricto)).

La interacción con las reglas para las etiquetas de inicio y final opcional añade más complicaciones. En un documento de transición, esto es válido:

<link …/> 
<h1>Hello, world</h1> 

y significa:

<link> 
</head> 
<body> 
&gt; 
<h1>Hello, world</h1> 

Esta sintaxis abreviada podría ser útil, o al menos un ahorro de tiempo, para cosas como:

<title/The quick brown fox/ 

en lugar de la más detallada:

<title>The quick brown fox</title> 

... pero the syntax has never been well supported y la especificación dice que debe evitarse.

+0

¿Sabe si Emacs-W3 admite la sintaxis de NET en su totalidad? – Alohci

+0

@Alohci - No tengo idea, acabo de recibir un impacto cuando llenaba '>' caracteres en mis documentos XHTML en el año 2000 (lo que me llevó a aprender mucho sobre cómo NET "funcionaba" en HTML) – Quentin

+0

Lynx admite la sintaxis abreviada para este día. – grawity

2

Resuelto realidad ... de acuerdo con W3C HTML 4 validador que es mejor no utilizar este estilo de escritura de nombres de elementos en HTML 4:

NET-enabling start-tag requires SHORTTAG YES 
<br /> 
The sequence <FOO /> can be interpreted in at least two different ways, 
depending on the DOCTYPE of the document. For HTML 4.01 Strict, the '/' terminates 
the tag <FOO (with an implied '>'). However, since many browsers don't interpret it 
this way, even in the presence of an HTML 4.01 Strict DOCTYPE, it is best to avoid 
it completely in pure HTML documents and reserve its use solely for those written in XHTML. 
+1

Sí, como notó Rowland Shaw, ** es aceptable, pero no válido **. – fmark

+2

@fmark: lo tiene al revés, es válido (a veces) pero no es aceptable. El mensaje del validador citado arriba es una advertencia, no un error. – Quentin

+0

@DavidDorward - Parece que tiene razón, según las especificaciones de HTML. ¡Estoy corregido! – fmark

-1

Desde el HTML Compatibility Guidelines:

Incluya un espacio antes del Atrás / y > de elementos vacíos, por ejemplo <br />, <hr /> y <img src="karen.jpg" alt="Karen" />. Además, use la sintaxis de etiqueta minimizada para elementos vacíos, p. <br />, como la sintaxis alternativa <br></br> permitida por XML da resultados inciertos en muchos agentes de usuario existentes.

+0

Las pautas para hacer que los navegadores manejen XHTML como HTML no tienen mucho que ver con lo que es válido en HTML (dado que se ocupan de lo que hacen los navegadores, no de lo que deberían hacer) – Quentin

+0

De acuerdo. Mi respuesta fue más un comentario interesante sobre un tema relacionado que una respuesta definitiva. Creo que debería hacer un comentario la próxima vez. – Sjoerd

Cuestiones relacionadas