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.

Zostaw komentarz

Dozwolone są niektóre znaczniki XHTML, jak: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Na tym blogu stosowana jest wtyczka antyspamowa Spam Karma. Jeżeli Twój komentarz nie pojawia się, lub po jego dodaniu otrzymujesz pustą stronę - poczekaj, komentarz został dodany, ale albo oczekuje w kolejce, albo został mylnie zakwalifikowany jako spam - spokojnie, gdy zajrzę do panelu administracyjnego to uratuję go.