2016-02-24 11 views
5

qualcuno può spiegarmi perché è valido questo codice?perché è valido questo codice html?

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> 
    <html<head> 
    <title// 
    <p ltr<span id=p></span</p> 
    </> 

Non vedo l'ora di ricevere la risposta. grazie per l'attenzione

+3

Perché non dovrebbe essere? (Hai un * lotto * di diverse caratteristiche HTML che non sono comunemente usate in esso, se tu avessi una domanda specifica su una di queste allora questa sarebbe probabilmente una domanda migliore) – Quentin

+0

Non sembra valido per me. –

+0

Genera 7 avvisi. Per me, questo non è valido. Se non si chiudono i tag, verrà visualizzato un avviso. –

risposta

5

Quel codice HTML è valido perché HTML 4.01 consente a tali elementi e al browser Internet che rispetta doctype di mostrarlo senza problemi.

Se si modifica il doctype in HTML 5, causerà sicuramente un errore, poiché HTML 5 è più rigido sulla scrittura del tag HTML corretto.

HTML 4.01 (nessun errore secondo il https://validator.w3.org/#validate_by_input):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> 
    <html<head> 
    <title// 
    <p ltr<span id=p></span</p> 
    </> 

HTML 5 (15 errori secondo il https://validator.w3.org/#validate_by_input):

<!DOCTYPE html> 
    <html<head> 
    <title// 
    <p ltr<span id=p></span</p> 
    </> 

Spiegazione:

Tale struttura HTML è valida perché secondo HTML 4.0.1 Specification (https://www.w3.org/TR/1999/REC-html401-19991224/):

B.3.7 Stenografia markup

Alcuni SGML SHORTTAG costruisce Salva digitando ma non aggiungere capacità espressive all'applicazione SGML. Sebbene questi costrutti non introducano tecnicamente alcuna ambiguità, riducono la robustezza dei documenti, specialmente quando la lingua viene migliorata per includere nuovi elementi. Pertanto, mentre i costrutti SHORTTAG di SGML relativi agli attributi sono ampiamente utilizzati e implementati, quelli relativi agli elementi non lo sono. I documenti che li utilizzano sono conformi ai documenti SGML, ma è improbabile che funzionino con molti strumenti HTML esistenti.

Lo SHORTTAG costruisce in questione sono i seguenti:

  • NET tags:
    <name/.../
  • chiusi Tag di inizio:
    <name1<name2>
  • Vuoto Tag di inizio:
    <>
  • vuoto End Etichetta:
    </>

Citato da https://www.w3.org/TR/1999/REC-html401-19991224/appendix/notes.html#h-B.3.7.


Così basato su quell'HTML 4.01 Specification, questo significa:

1  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> 
2  <html<head> 
3  <title// 
4  <p ltr<span id=p></span</p> 
5  </> 
  • linea 1 è DOCTYPE HTML valido per 4.0.1.
  • La riga 2 è valida <html> tag aperto, chiusura tag </html> non necessaria.
  • La riga 2 è valida anche <head> tag aperto, chiusura tag </head> non necessaria.
  • La riga 3 è un tag aperto <title> valido per il quale il browser Internet ha letto <title// <p ltr<span id=p> semplicemente come <title>, il tag di chiusura </title> non è necessario.
  • La riga 4-5 è il contenuto (HTML interno) del tag <title> che è </span</p> </> (questo è il browser Internet visualizzato come titolo della pagina).

Questa era la mia spiegazione aggiuntiva. Spero che sia in grado di aiutarti.

+5

"Quel codice HTML è valido perché HTML 4.01 consente queste cose" - In pratica stai dicendo che è valido perché è valido, il che non è davvero molto utile. – Quentin

+1

"e il browser Internet che rispetta il doctype, lo mostrerà senza problemi" - Non è così. Questo esempio di codice utilizza molte funzionalità di HTML che la maggior parte dei browser ha * mai * supportato. – Quentin

+1

@Quentin Ho aggiornato la mia spiegazione, spero che lo spieghi. –