2010-07-08 13 views
15

In base a http://www.w3.org/TR/html401/interact/forms.html#h-17.4, un elemento di input deve terminare con un singolo > e non uno />. Sebbene la maggior parte dei browser sia in grado di gestire un elemento di input che termina con />, tale elemento di input è valido in base alle regole di sintassi HTML? In altre parole, elementi come <input ... /> e <br /> validi in HTML 4?I tag di input a chiusura automatica sono validi in HTML 4?

(Questa domanda è di HTML e XHTML non !!!)

risposta

11

La sintassi è valida in alcuni posti ma non significa lo stesso che in XHTML, in modo da non usare loro.

In HTML 4 <foo /> (dove foo è il nome di un elemento definito come VUOTO) significa la stessa <foo>> che significa la stessa <foo>&gt; (anche se quasi nessun browser supporta correttamente la sintassi, Emacs-W3 usato a, ma ha rotto la compatibilità con lo standard in favore del rendering dei cosiddetti documenti XHTML 1.0 compatibili con HTML).

Questo è, dunque, valida in luoghi dove si può avere un &gt; come ovunque si è permesso un <img> ma non in altri luoghi (come ad esempio un <hr> che è un elemento secondario del <body> (in stretta)).

L'interazione con le regole per i tag di inizio e fine opzionali aggiunge ulteriori complicazioni. In un documento di transizione, questo è valido:

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

e significa:

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

Questa sintassi abbreviata potrebbe essere utile, o almeno un risparmio di tempo, per cose come:

<title/The quick brown fox/ 

anziché il più dettagliato:

<title>The quick brown fox</title> 

... ma the syntax has never been well supported e la specifica dice che dovrebbe essere evitato.

+0

Sapete se Emacs-W3 supporta la sintassi NET in modo completo? – Alohci

+0

@Alohci - Non ne ho idea, ho appena avuto uno shock quando ha nascosto i caratteri '>' su tutti i miei documenti XHTML nel 2000 (che mi ha portato a imparare molto su come NET "ha funzionato" in HTML) – Quentin

+0

Lynx supporta la sintassi abbreviata ad oggi. – grawity

2

Risolto in realtà ... secondo W3C HTML 4 validatore è meglio non usare questo stile di scrittura nomi di elementi in 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ì, come osservato da Rowland Shaw, ** è accettabile, ma non valido **. – fmark

+2

@fmark - si ha indietro, è valido (a volte) ma non accettabile. Il messaggio del validatore citato sopra è un avvertimento, non un errore. – Quentin

+0

@DavidDorward - Sembra che tu abbia ragione, secondo le specifiche HTML. Sono corretto! – fmark

-1

Dal HTML Compatibility Guidelines:

Includere uno spazio prima del trailing / e > di elementi vuoti, ad es. <br />, <hr /> e <img src="karen.jpg" alt="Karen" />. Inoltre, utilizza la sintassi dei tag minimizzata per gli elementi vuoti, ad es. <br />, poiché la sintassi alternativa <br></br> consentita da XML fornisce risultati incerti in molti agenti utente esistenti.

+0

Le linee guida per far sì che i browser gestiscano XHTML come HTML non hanno molto a che fare con ciò che è valido in HTML (dal momento che si occupano di cosa fanno i browser, non cosa dovrebbero fare) – Quentin

+0

concordato. La mia risposta è stata più intesa come un commento interessante su un argomento correlato che come una risposta definitiva. Credo che dovrei fare un commento la prossima volta. – Sjoerd

Problemi correlati