Każda przeglądarka obsługująca XHTML (Firefox, Opera, Safari, IE9 ) obsługuje samozamykającą się składnię każdego elementu .
<div/>
, <script/>
, <br></br>
Wszystko powinno działać dobrze. Jeśli tak nie jest, masz HTML z nieprawidłowo dodanym XHTML DOCTYPE.
DOCTYPE nie zmienia sposobu interpretacji dokumentu. Tylko typ MIME tak .
Decyzja W3C o ignorowaniu DOCTYPE :
Grupa robocza ds. HTML omówiła ten problem: zamiarem było umożliwienie starym przeglądarkom (obsługującym tylko HTML) akceptowanie dokumentów XHTML 1.0 zgodnie z wytycznymi i udostępnianie ich jako tekst / html. Dlatego dokumenty podawane jako tekst / html powinny być traktowane jako HTML, a nie jako XHTML.
To bardzo powszechna pułapka, ponieważ W3C Validator w dużej mierze ignoruje tę zasadę, ale przeglądarki przestrzegają jej religijnie. Przeczytaj
artykuł Understanding HTML, XML i XHTML z bloga WebKit:
W rzeczywistości zdecydowana większość rzekomo XHTML dokumentów w Internecie jest obsługiwana jako text/html
. Co oznacza, że nie są w ogóle XHTML, ale w rzeczywistości nieprawidłowym HTML, który radzi sobie z obsługą błędów parserów HTML. Wszystkie te „Valid XHTML 1.0!” linki w sieci naprawdę mówią „Nieprawidłowy HTML 4.01!”.
Aby sprawdzić, czy masz prawdziwy XHTML lub nieprawidłowy HTML z DOCTYPE XHTML, umieść to w swoim dokumencie:
<span style="color:green"><span style="color:red"/>
If it's red, it's HTML. Green is XHTML.
</span>
Sprawdza, aw prawdziwym XHTML działa doskonale (zobacz: 1 vs 2 ). Jeśli nie możesz uwierzyć własnym oczom (lub nie wiesz, jak ustawić typy MIME), otwórz swoją stronę przez serwer proxy XHTML .
Innym sposobem sprawdzenia jest wyświetlenie źródła w przeglądarce Firefox. Podświetli ukośniki na czerwono, gdy są nieprawidłowe.
W HTML5 / XHTML5 to się nie zmieniło, a różnica jest jeszcze wyraźniejsza, ponieważ nie masz nawet dodatkowych DOCTYPE
. Content-Type
jest królem.
Dla przypomnienia, specyfikacja XHTML pozwala na samozamykanie dowolnego elementu poprzez uczynienie XHTML aplikacji XML : [wyróżnienie moje]
Znaczniki pustego elementu mogą być używane dla dowolnego elementu, który nie ma treści , niezależnie od tego, czy został zadeklarowany przy użyciu słowa kluczowego EMPTY.
Jest to również wyraźnie pokazane w specyfikacji XHTML :
Puste elementy muszą albo posiadać znacznik końcowy lub znacznik początkowy musi kończyć się />
. Na przykład <br/>
lub<hr></hr>