Zgodność ponad wszystko

Zanim powstał język HTML (HyperText Markup Language), dane dostępne w Sieci były przechowywane w systemach hierarchicznych opartych na słowach kluczowych. Oznaczało to, że wszystkie informacje miały ściśle określony, sztywny kontekst i nie można ich było wiązać ze sobą w inny sposób (tworzyć nowych powiązań, wpisów do katalogu w innej kategorii itd.). Utrudniało to dostęp do dokumentów i ich wyszukiwanie. Problemy te rozwiązał jednak Tim Berners-Lee, przedstawiając protokół HTTP, system identyfikacji zasobów URL oraz język dokumentów sieciowych – HTML, który powstał po to, by ułatwić wymianę i wiązanie ze sobą zasobów internetowych.

Rodowód “iksa”

Za rozwój HTML-a odpowiedzialna jest organizacja W3C (World Wide Web Consortium), która ustanawia normy dotyczące języków opisu strony, ich interakcji oraz bezpieczeństwa i dostępności. Pierwsza formalna definicja tego języka – HTML-a 2.0 – powstała w 1995 roku i oparta została na SGML-u (Standard Generalized Markup Language), który w owym czasie był jedyną dostatecznie dopracowaną i szeroką platformą dla tzw. dokumentów przenaszalnych (portable documents) i mógł być stosunkowo szybko rozwijany. Mimo kolejnych edycji HTML-a, zawierających liczne i istotne zmiany (np. wersja 3.2 obsługiwała tabele, edycja 4.0 ramki itd.), rozwój tego standardu w praktyce wyglądał zupełnie inaczej, niż zakładali jego twórcy. Autorzy stron skoncentrowali się bowiem głównie na kwestiach związanych z prezentacją, a nie opisem treści, i zaczęli pomijać bądź błędnie stosować pewne znaczniki kodu. Dla przykładu: i wizualnie dają ten sam efekt pogrubienia czcionki, ale tylko ten pierwszy dodatkowo klasyfikuje ujętą w nim treść jako ważną.

W obliczu takiej “degeneracji” HTML-a organizacja W3C zajęła się nowym projektem nazwanym XML (eXtensible Markup Language), który w założeniu miał posłużyć do opisu różnego typu dokumentów, być wy-dajny w przetwarzaniu, obsługiwany przez różne platformy (np. systemy operacyjne, programy komputerowe itd.) oraz wymusić na programistach pisanie zgodnie z pewnymi zasadami. Niestety, wraz z usztywnieniem składni pozbyto się z tego języka wszystkich tych elementów, które czyniły SGML-a elastycznym. Stał się on jednak doskonałą bazą dla dalszego rozwoju języka stron WWW. W3C postanowiło rozwijać HTML w kierunku strukturalizacji i modularyzacji oraz oprzeć kolejne wersje nie na SGML-u, ale właśnie na XML-u, co doprowadziło do powstania standardu XHTML.

Historia XHTML-a

Pierwsza wersja XHTML-a powstała w 2000 roku i nie była niczym innym jak językiem HTML 4.01 poddanym rygorom standardu XML, dotyczącym głównie sposobu oznakowania (patrz: tabela Różnice pomiędzy HTML-em 4.01 a XHTML-em 1.0 poniżej). Miało to umożliwić łagodne przejście do języka nowej generacji oraz przetwarzanie treści witryny nie tylko pod kątem jej wizualizacji w przeglądarce. Dokumenty XHTML 1.0 stanowią o tyle ciekawy typ danych, że mogą być traktowane i tym samym przesyłane przez Sieć jako dokumenty typu HTML (text/html) albo XML (application/xhtml+xml).

Kolejnym etapem rozwoju tego języka był XHTML 1.1, który zerwał z kompatybilnością z jego wcześniejszymi wersjami. Pozwalał na łączenie w jednym dokumencie różnych fragmentów kodu opartych na XML-u, co pozwoliło prezentować bardziej zróżnicowane treści. Dodatkowo XHTML 1.1 umożliwił grupowanie elementów kodu w moduły, co sprawiło, że dokumenty stały się bardziej elastyczne. Dzięki temu strony WWW mogły być interpretowane przez różne urządzenia odbiorcze (komputery, telefony komórkowe, palmtopy), charakteryzujące się często skrajnie odmiennymi możliwościami w tym względzie.

Obecna edycja – XHTML 2 – powstała w 2004 roku i ułatwia tworzenie dokumentów, które będą poprawnie interpretowane przez każdą przeglądarkę (nie tylko komputerową). Ograniczono w niej także potrzebę korzystania z języków skryptowych i usunięto kilka znaczników (np. ), sprawiających w HTML-u wiele kłopotów. Trzeba też zwrócić uwagę na fakt, że niektóre nowe elementy składni, jak np. formularze XForms, nie są jeszcze obsługiwane przez obecne wersje browserów.

Wojna przeglądarek

W ostateczności do powstania XHTML-a doprowadziła – jak już to zostało wspomniane – swobodna interpretacja standardu języka HTML. Główną przyczyną degeneracji HTML-a była wojna przeglądarek, która trwała niemal od początku istnienia WWW. Objawiała się ona między innymi tym, że producenci tych narzędzi skupiali się na rozwoju swoich przeglądarek bez zwracania uwagi na normy. W efekcie takich działań standard określony dla języka HTML nie był obsługiwany w pełni przez żadną przeglądarkę. Każda na swój sposób interpretowała kaskadowe arkusze stylów (CSS) i języki skryptowe czy inaczej prezentowała tabele.

Programiści i projektanci stron WWW mieli w takiej sytuacji tylko dwie możliwości: tworzenie kilku wersji strony (czy wręcz całej witryny), tak aby była ona zgodna z większością przeglądarek, lub założenie z góry, że ich witryna będzie obsługiwana poprawnie tylko przez jedną z nich. Większość wybierała pierwsze podejście (tzw. rozwidlanie kodu), gdyż gwarantowało ono dotarcie do najszerszej liczby użytkowników. Dodatkowo każda utworzona w ten sposób strona musiała zawierać skrypty wykrywające rodzaj i wersję przeglądarki.

Inną przyczyną degeneracji HTML-a i powstawania witryn o coraz gorszej jakości kodu było ignorowanie przez przeglądarki błędów i niejasności oznakowania dokumentów. Względy “przyjazności” produktu spowodowały, że nie było mowy o sprawdzaniu poprawności stron (tzw. walidacji) przed ich interpretacją. Co więcej, mimo iż HTML jest językiem strukturalnym i nie można w nim krzyżować elementów, np.:

ala ma kota, a kot ma alę

to większość przeglądarek zinterpretuje powyższy ciąg jako kolejne włączenia i wyłączenia odpowiedniego sposobu wyświetlania i pokaże napis w postaci:

ala ma

kota, a kot

ma alę

Takie interpretowanie dokumentów HTML przez przeglądarki oraz ignorowanie przez nie błędów składni pozwoliło programistom na niechlujne i niedokładne kodowanie (np. niedomykanie znaczników).

Różnice pomiędzy HTML-em 4.01 a XHTML-em 1.0
kod HTML 4.01kod XHTML 1.0
w XHTML-u nie wolno krzyżować znaczników
<b> ala <i> ma </b> kota </i><b> ala <i> ma </i></b><i> kota </i>
w XHTML-u nazwy znaczników i atrybutów muszą być pisane małymi literami
<TD ALIGN=”left”> paragraf z lewej </td><td align=”left”> paragraf z lewej </td>
w XHTML-u wymagane są znaczniki zamykające dla elementów niepustych
<P> pierwszy paragraf
<p> drugi paragraf
<p> pierwszy paragraf </p>
<p> drugi paragraf </p>
w XHTML-u wartości atrybutów muszą być zawsze podane w cudzysłowie
<P align=justify><p align=”justify”>
w XHTML-u niedozwolony jest skrócony zapis atrybutów
<option selected><option selected=”selected”>
w XHTML-u wymagane są końcowe znaczniki elementów pustych, ale można je zapisać w formie skróconej (tzw. XML-owej)
nie dotyczy<p>
w XHTML-u dane innego typu niż text/html (np. skrypty) muszą być zawarte w specjalnej deklaracji
<script type=”text/javascript”></script><script type=”text/javascript”><![CDATA[…zawartość skryptu..]]></script>
w XHTML-u w elementach: a, applet, form, frame, iframe, img i map identyfikatorem jest atrybut id, zatem powinien być on stosowany zamiast lub równolegle z atrybutem name
<a name=”top”><a id=”top”>
w XHTML-u niektóre elementy nie mogą być zagnieżdżone (a nie może zawierać a; pre nie może zawierać: img, object, big, small, sub, sup; button nie może zawierać: input, select, textarea, label, button, form, fieldset, iframe, isindex; label nie może zawierać innych label; form nie może zawierać innych form)
<a href=”index.html”> moja <a name=top>
</a> strona </a>
<a href=”index.html”> moja strona </a>
<a name=”top”> </a>
znaki specjalne (encje zapisywane szestnastkowo) i atrybuty o predefiniowanej wartości muszą być pisane małymi literami
& #X14& #x14
Więcej:bezcatnews