Doctype i xmlns
Natknąłem się ostatnio na dwa błędy i niezrozumienia pewnych ważnych elementów języka (X)HTML. Od razu powiem, że przez (X)HTML, często przeze mnie używane, rozumiem po prostu zarówno HTML, jak i XHTML. Chodzi mianowicie o <!DOCTYPE> oraz atrybut xmlns w tagu <html>.
Na pewnej stronie , opisującej element <!DOCTYPE> w dokumentach HTML, znalazłem błąd, który jest przez wielu niestety powielany i powtarzany. Choć oczywiście nie mam pewności, czy to ta strona była pierwowozorem. Na niej znajduje się przykład, w którym element DOCTYPE jest zapisany małymi literami. I to jest tak cały wielki problem.
Dlaczego? Otóż akurat jest to element języka XML, w którym to wielkość znaków odgrywa istotne znaczenie. Zapis <!doctype html public … > jest niepoprawny. Nie jest to prawidłowa deklaracja typu dokumentu. Walidator pokaże błąd, a przeglądarki ustawią się w “tryb dziwactw” a nie standardów. Niestety jest to popularny błąd. Doctype zawsze piszemy wielkimi literami, warto też pamiętać o prawidłowym DTD.
Ach, jeszcze co do atrybutu xmlns w znaczniku <html>. Wyjaśnię kilka nieporozumień:
Nie rozumiem sensu i przeznaczenia większości zastosowanych atrybutów, przede wszystkim xmlns (…) (#)
To ja wyjaśnię. Atrybut xmlns jest przede wszystkim dostępny tylko i wyłącznie w dokumentach XHTML (tak, jeżeli stosujesz DOCTYPE dla HTML 4.01 i używasz tego atrybutu to jest to błąd!) i jest to nie tyle atrybut języka, a raczej jego “ojca”, tj. XML. Określa on nic innego, jak przestrzeń nazw (namespace). Dla wygody stosuje się ją w dokumentach XML w elemencie głównym - w przypadku XHTML będzie to właśnie element <html>. Ale jak najbardziej może być potrzebny w innych elementach, gdy zechcemy umieścić elementy języka MathML czy SVG. I to cała filozofia.
