Qual è la differenza tra e in HTML?

Possibile duplicato:
Usando la barra di chiusura XHTML (/) sui tag normali?
I tag a chiusura automatica sono validi in HTML5?

Sto rivedendo un sacco di codice HTML e anche JavaScript che sintetizza HTML e ho notato che se c’è qualche tag senza contenuto all’interno del tag, ci sono due modi per specificarlo. In questo modo:

o in questo modo:

 

C’è qualche differenza tra i due?

I browser normalizzano il markup non valido nel modulo valido:

è un markup tecnicamente non valido (HTML 5), poiché div non è un tag a chiusura automatica.

Un browser lo normalizzerà a

.

Si noti che questo è diverso da come XML gestirà un tag a chiusura automatica rispetto a un tag chiuso.

Un tag che si chiude automaticamente non ha figli e nessun valore per il testo interno (null):

  

Un tag chiuso non ha figli né testo interno (stringa vuota):

  

è il modo corretto XHTML di scrivere tag che non contengano contenuti. In genere questi sono ,
e simili.

è inteso per avere contenuto al suo interno, così dicendo

, mentre accettabile, sembra meno leggibile.

Il primo esempio è HTML rigoroso mentre il secondo è rigoroso xHTML.

Pre HTML5, quando dovevi specificare se stavi usando HTML o xHTML, l’uso della syntax sbagliata causava errori di validazione e talvolta problemi di rendering. L’utilizzo del doctype HTML5 rende la differenza discutibile.

In secondo luogo, il secondo esempio è uno di un tag a chiusura automatica, in questo caso un div vuoto, ma molti tag nelle specifiche xHTML supportano, inclusi img , link , meta e qualsiasi altro tag che sarebbe altrimenti vuoto.