LOGO.css HyperText Markup Language

Kategoryzacja podziałów języka HTML


Od samego początku HTML zdobywał uznanie w relatywnie szybkim tempie. Niestety nie istniały wtedy żadne standardy stojące na straży czystości kodu. Pomimo tego, że autorzy HTML-a stworzyli go jako język semantyczny, praktyczne użycie wtłoczyło do niego wiele elementów i atrybutów prezentacyjnych, głównie z powodu producentów przeglądarek. Ostatnie standardy związane z HTML-em odzwierciedlają wysiłki zmierzające do uporządkowania z czasem chaotycznego rozwoju języka oraz utworzenia racjonalnych fundamentów pod budowę sensownych i dobrze prezentujących się dokumentów. Aby skierować rozwój coraz mniej semantycznego języka na właściwe tory, konsorcjum W3C ustanowiło standard kaskadowych arkuszy stylów CSS oraz rozszerzalny język arkuszy stylów XSL, przenosząc na nie ciężar warstwy prezentacji. Dzięki nim język HTML powoli zaczął wyzbywać się znaczników prezentacyjnych.

Aktualnie wyróżniamy dwie kategorie podziałów standardu HTML:

  1. HTML bazowany na języku SGML versus HTML bazowany na języku XML (XHTML)
  2. wersja Strict versus wersja Transitional versus wersja Frameset

Oparty na SGML i oparty na XML

W celu odróżnienia od tradycyjnej wersji bazowanej na SGML-u, specyfikacja HTML-a oparta na XML-u nosi nazwę XHTML. Pomimo tego element główny wykorzystywany w składni języka nadal nazywa się 'html'. Organizacja W3C chciała, aby XHTML 1.0 był identyczny z HTML 4.01, poza pewnymi obejściami wynikającymi z ograniczeń wynikających ze specyfikacji samego XML-a w stosunku do bardziej złożonego SGML-a. Czasem w wyniku tak ścisłego pokrewieństwa, autorzy dokumentacji scalają obie nazwy jako (X)HTML lub X(HTML).

Podobnie jak HTML 4.01, XHTML 1.0 posiada trzy wersje: strict, transitional i frameset.

Poza deklaracją otwierającą różnice pomiędzy HTML-em 4.01 i XHTML-em 1.0 są w większości syntaktyczne. Składnia HTML-a pozwala na więcej swobody podczas pisania kodu niż XHTML. Są to elementy z opcjonalnymi znacznikami otwierającymi lub zamykającymi, a nawet elementy puste, które nie mają znacznika zamykającego. W przeciwieństwie do HTML-a XHTML wymaga, aby wszystkie elementy posiadały znaczniki otwierające i zamykające. W konsekwencji XHTML wprowadza znaczniki, które mogą być otwarte i zamknięte tylko w znaczniku otwierającym, wstawiając znak "/" (ukośnik) przed końcem znacznika otwierającego, np. <br/>. Wdrożenie tego skrótu może stwarzać problemy dla starszego oprogramowania, któremu ta konwencja jest obca.

W celu zrozumienia subtelnych różnic pomiędzy HTML-em i XHTML-em przedstawione poniżej kroki prezentują transformację dokumentu XHTML 1.0 do dokumentu HTML 4.01:

  1. Język elementu powinien być zapisany przy użyciu atrybutu lang zamiast XHTML-owego xml:lang.
  2. Usuń XML-ową przestrzeń nazw (xmlns=URI). HTML nie obsługuje przestrzeni nazw.
  3. Zmień deklarację typu dokumentu z XHTML 1.0 na HTML 4.01.
  4. Jeśli istnieje, usuń deklarację XML (np. <?xml version="1.0" encoding="utf-8"?>).
  5. Upewnij się, że typ MIME dokumentu jest ustawiony na text/html; zarówno dla HTML-a jak i XHTML-a, informacja ta pochodzi z nagłówka HTTP Content-Type, przesyłanego przez serwer
  6. Zmień składnię XML elementów pustych na odpowiednią składnię HTML (<br/> na <br>)

Stosując się do wytycznych związanych z kompatybilnością (compatibility guidelines) organizacji W3C, przeglądarka powinna poprawnie zinterpretować typ dokumentu jako HTML lub XHTML. W3C zezwala na serwowanie dokumentów XHTML 1.0 jako HTML (MIME text/html) lub jako XHTML (MIME application/xhtml+xml lub application/xml). Jeśli dokument serwowany jest jako XHTML, przeglądarka używa parsera XML, stosującego się do specyfikacji XML.

Transitional versus Strict

Ostatnia specyfikacja HTML 4.01, a także wczesna specyfikacja XHTML posiadają trzy wersje: Strict, Transitional (nazwaną też Loose) i Frameset. Strict reprezentuje poprawną wersję standardu, podczas gdy warianty Transitional i Frameset zostały wprowadzone w celu płynnego przejścia ze starszych wersji HTML. Transitional i Frameset, w opozycji do Strict, pozwalają na używanie znaczników prezentacyjnych.

Zasadnicze różnice pomiędzy wersjami Transitional i Strict, pokazują, że Transitional jest bardziej tolerancyjny dla koderów. Obejmują one:

Frameset versus Transitional

W odniesieniu do powyższych różnic, wersja Frameset posiada inny model treści (content model):

<html>
 <head>
 Wartości elementu head.
 </head>
 
 <frameset>
 <frame></frame>
 
 <noframes></noframes>
 </frameset>
</html>


Projekt oraz wykonanie - Szymon Jasiński
html_logo html_logo html_logo