Specyfikacja#

Wstęp#

Ostatni uzupełniający rozdział zostanie całkowicie poświęcony specyfikacji HTML 4.01 (z 1999 roku). Zamieszczę tu wszystkie ciekawe zagadnienia, które ciężko jednoznacznie przyporządkować do poprzednich działów. Oczywiście przy tworzeniu stron aż tak szczegółowa wiedza niezbędna nie jest, aczkolwiek warto poświęcić jeden wieczór i przeczytać całość. Pozwoli to zrozumieć pewne założenia i mechanizmy, które rządzą przy tworzeniu i opisie języków znacznikowych (takich jak HTML czy XHTML).

Pisząc samo słowo "specyfikacja" będę zawsze miał na myśli wersję dokumentu 4.01, chyba że będzie inaczej, to podam bardziej precyzyjny numer.

Status dokumentu#

Specyfikacja definiuje język HTML (HyperText Markup Language), który jest podstawowym językiem publikowania treści w ogólnoświatowej sieci WWW (World Wide Web). Opisywaną wersją języka jest HTML 4.01, będący poprawioną wersją HTML 4.0. Oprócz tekstu, multimediów i funkcji hiperłączy z poprzednich wersji HTML (HTML 3.2 i HTML 2.0 [RFC1866]), HTML 4 obsługuje więcej multimedialnych opcji, języków skryptowych, arkusze stylów, lepsze możliwości druku oraz pomaga tworzyć dokumenty, które są bardziej dostępne dla użytkowników niepełnosprawnych.

HTML 4 jest aplikacją SGML (Standard Generalized Markup Language). SGML jest nadrzędnym językiem (tzw. metajęzyk, międzynarodowa norma ISO 8879) służącym do definiowania dowolnych znaczników i ustalania zasad ich poprawnego użytkowania.

Różnice między HTML 4.01 a HTML 4 umieszczono na specjalnej stronie (Dodatek A: Zmiany).

Specyfikacja jako całość stanowi tylko zalecenia (recommendations) organizacji W3C, nie ma żadnej mocy prawnej. Rolą W3C jest przyciągnięcie uwagi do specyfikacji oraz promowanie jej w różnych zastosowaniach. To, w jakim stopniu zalecenia zostaną zaimplementowane zależy od twórców oprogramowania.

Lista bieżących rekomendacji W3C oraz innych dokumentów technicznych znajduje się na specjalnej stronie "All Standards and Drafts".

Budowa specyfikacji#

Specyfikację podzielono na kilka podstawowych sekcji:

Sekcja 2 i 3: Wprowadzenie do HTML 4
Wprowadzenie opisujące miejsce i przeznaczenie HTML-a w światowej sieci World Wide Web. Zawiera krótką historię języka, jego przeznaczenie oraz wskazówki dla autorów.

Zawiera także krótki poradnik SGML-a w celu wyjaśnienia relacji między HTML-em a SGML-em, oraz prezentuje podstawowe informacje na temat sposobu czytania definicji typu dokumentu HTML (DTD).

Sekcja 4 - 24: manualna referencja HTML 4
Większa część dokumentu zawierająca opisy zagadnień języka HTML 4 (definicje wszystkich elementów oraz atrybutów).

Dokument został odpowiednio zorganizowany ze względu na składnię HTML-a. Tematy zgrupowano w trzech głównych kategoriach: struktura, prezentacja oraz interaktywność.

Referencja języka zawiera następujące informacje:

Formalna definicja HTML-a za pomocą SGML-a:

Załączniki
Pierwszy zawiera listę zmian między aktualnym (HTML 4.01) a ostatnimi wydaniami języka (HTML 3.2 oraz HTML4). Drugi zawiera wiele uwag i wskazówek dla twórców oprogramowania zdolnego do przetwarzania dokumentów HTML.
Referencje
Odwołania do różnych dokumentów (normatywnych - kolor czerwony oraz nienormatywnych - kolor zielony).
Indeksy
Trzy wykazy dające czytelnikom szybki dostęp do podstawowych pojęć, elementów i atrybutów.

Nazwy elementów zostały zapisane wielkimi literami (np. BODY). Nazwy atrybutów wyrażono za pomocą małych liter (np. lang, onsubmit). W języku HTML nazwy elementów i atrybutów nie są czułe na wielkość znaków, ale przyjęta konwencja zapewnia lepszą czytelność specyfikacji.

Każda definicja atrybutu określa typ jego wartości. Jeśli typ pozwala na niewielki zestaw możliwych wartości, definicja zawiera listę wartości rozdzielonych znakiem ("|").

Po określeniu typu wartości, każda definicja atrybutu zawiera informację na temat wielkości znaków dla wartości ("[]"). Można zobaczyć szczegóły dla kilku przypadków.

Wszystkie uwagi zostały odpowiednio wyszczególnione, by mogły wyróżniać się na tle otaczającego je tekstu.

Wszystkie przykłady ilustrujące użycie przestarzałych poleceń zostały oznaczone przez ""DEPRECATED EXAMPLE". Każdy przestarzały przykład zawiera także alternatywne rozwiązanie, uważane za poprawne. Wszystkie przykłady, które prezentują niepoprawne stosowanie zostały oznaczone przez "ILLEGAL EXAMPLE".

Podstawowe zagadnienia#

Z językiem HTML wiąże się kilka ważnych terminologii, z którymi należy się zapoznać.

WWW (World Wide Web lub Web) to sieć zasobów informacyjnych. Web opiera się na trzech mechanizmach, aby uczynić te zasoby dostępnymi dla jak największego grona odbiorców:

Więzi między powyższymi trzema mechanizmami zostały opisane w specyfikacji.

Każdy zasób dostępny w sieci Web - dokument HTML, obraz, klip wideo, program itp. - ma adres, który można wyrazić za pomocą URI (Universal Resource Identifier). URI zwykle składa się z trzech części:

Niektóre URI odnoszą się do konkretnego miejsca w danym zasobie. Ten rodzaj URI kończy się symbolem ("#"), po którym występuje identyfikator kotwicy (zwany identyfikatorem cząstkowym lub etykietą).

Względne URI nie zawierają żadnej nazwy schematu. Ich ścieżka dostępu generalnie odnosi się do zasobu na tej samej maszynie, co bieżący dokument. Adresy względne można budować na wiele ciekawych sposobów (przemieszczanie między poziomami ścieżki), mogą także zawierać etykiety. Względne URI zostaną automatycznie rozwinięte do pełnej postaci za pomocą bazowego URI (który można zmieniać).

W HTML-u adresy URI stosujemy przy:

Przy tworzeniu HTML-a dużo uwagi poświęcono dostępności. Język został tak zaprojektowany, aby uczynić strony internetowe bardziej dostępnymi dla osób z fizycznymi ograniczeniami. Osiągnięto to poprzez:

Dokumenty HTML są wysyłane w obrębie Internetu jako sekwencje bajtów, którym towarzyszy informacja o kodowaniu. Rodzaj danego zasobu określony zostaje przez typ MIME. Dla dokumentów HTML właściwym typem MIME jest text/html.

Podstawowe definicje#

W specyfikacji określono kilka definicji, które często pojawiają się w całym dokumencie.

Dokument HTML (HTML document)
Dokument HTML jest dokumentem SGML, który spełnia ograniczenia dotyczącej tej specyfikacji.
Autor (Author)
Autorem jest osoba lub program, który zapisuje lub generuje dokumenty HTML. Narzędzie autorskie (authoring tool) jest szczególnym przypadkiem autora - jest to program do generowania HTML-a.
Użytkownik (User)
Użytkownikiem jest osoba, która korzysta z aplikacji klienckiej, aby zobaczyć, usłyszeć, lub w inny sposób wykorzystać dokument HTML.
Aplikacja kliencka HTML (HTML user agent)
Klientem HTML jest każde urządzenie zdolne do interpretacji dokumentów HTML. Aplikacje klienckie obejmują wizualne przeglądarki (tekstowe lub graficzne), niewizualne przeglądarki (audio, braila), roboty przeszukujące, proxy itd.
Obsługa błędów (Error conditions)
Specyfikacja nie definiuje sposobu obsługi ogólnych błędów przez aplikacje klienckie, włączając w to zachowanie przy napotkaniu elementów, atrybutów, wartości atrybutów oraz encji, które nie zostały opisane w tym dokumencie. Jednakże, dla spójnego zachowania między różnymi programami i wersjami języka HTML, umieszczono kilka uwag dotyczących błędnych dokumentów (są to tylko zalecenia).
Przestarzały (Deprecated)
Przestarzały element lub atrybut to ten, który został uznany za zbędny i zastąpiony innym, równoważnym rozwiązaniem. Przestarzałe elementy i atrybuty opisano w odpowiednich miejscach specyfikacji, ale zostały wyraźnie oznaczone jako przestarzałe. Mogą zostać całkowicie zarzucone w kolejnych wersjach HTML.

Aplikacje klienckie powinny wspierać przestarzałe elementy ze względu na kompatybilność wsteczną.

Specyfikacja zawiera wiele przykładów, które ilustrują, jak unikać używania przestarzałych elementów. W większości przypadków zależą one od obsługi stylów CSS przez aplikację kliencką. Ogólnie rzecz biorąc, autorzy powinni stosować arkusze stylów w celu osiągnięcia efektów stylistycznych i formatujących, zamiast przestarzałych elementów i atrybutów HTML.

Zarzucony (Obsolete)
Zarzucony element lub atrybut to taki, dla którego nie ma gwarancji wsparcia przez aplikacje klienckie. Zarzucone elementy (np. listing, plaintext czy xmp) nie zostały zdefiniowane w specyfikacji, ale ze względów historycznych są wymienione w sekcji zmian.

Standardy#

W specyfikacji pojawia się wiele odwołań do plików/specyfikacji/standardów, wypadałoby napisać małą wzmiankę na temat różnych standardów.

W branży informatycznej przetacza się cała masa różnych standardów. Dobrą rzeczą w standardach jest to, że można sobie zawsze wybrać taki, który nam pasuje. Oczywiście, ironia polega na tym, że standard powinien ograniczyć wybór, a nie zwiększać go. Przykładowo, do zapisywania dokumentów mamy HTML, RTF, PDF oraz wiele innych (różne wersje Worda).

Będąc programistami WWW mamy to szczęście, że przy tworzeniu treści internetowej właściwie nie ma konkurujących ze sobą standardów. Mogą jedynie mieć nowe wersje (np. HTML 3.2, HTML 4), co przyprawia o ból głowy, ale na ogól nie mamy dwóch lub więcej standardów dotyczących tej samej rzeczy. To znaczy, że nie ma większego podziału w społeczności programistów sieciowych.

Tworząc strony internetowe faktycznie mamy do czynienia z ogromną liczbą standardów z różnych dziedzin - przypomina to istne zoo. Gdy mówimy o standardach, musimy pamiętać, że mamy do czynienia z wieloma ich typami.

Standardem nieformalnym staje się ten, który jest popularny. Standardem formalnym jest standard ustalony na spotkaniu. Prawa nadane przez rząd są standardem formalnym. RTF jest standardem formalnym. Sam język HTML był początkowo standardem nieformalnym, dopiero od wersji 4.0 stał się formalny. Innym przykładem formalnym może być ESMAScript (standard dla JavaScript).

Standardy w dokumentach RFC (Request for Comments) są standardami internetowymi stworzonymi przez IETF (Internet Engineering Task Force). Grupa zainteresowanych osób sprawdza standard w poszukiwaniu błędów i jeśli po jakimś czasie staje się popularny, zostaje standardem nieformalnym. Proces RFC może być również formalny, więc może też zmierzać w kierunku prawnego standardu.

Istnieją także drapieżne standardy, które powstają z powodów politycznych. Przykładowo, na przyjęciach takim standardem jest kosztowne ubranie. XSL (Extensible Stylesheet Language) był początkowo podobnym standardem, stworzonym (przez Microsoft) po to, by programiści WWW odeszli od prostszego i mniej zależnego od poszczególnych producentów CSS. Dziś XSL jest rozwijany przez W3C, stał się ogólnym językiem transformacji XML-a.

Standardy naprawdę nie mają końca. Możemy znaleźć również rekomendacje dotyczące standardowych rozmiarów bannerów reklamowych. Bardzo dobrze, że takie standardy powstają, ponieważ możemy skorzystać z tej informacji i napisać standardowy arkusz stylów CSS, który będzie wyłączać reklamy.

Niezależnie od tego ile się nauczymy, jakie technologie (formalne i nieformalne) będziemy stosować, należy pamiętać o jednej najważniejszej rzeczy - użytkownicy nie są standardowi. Stworzenie czegoś idealnego, działającego i wyglądającego identycznie u wszystkich użytkowników Internetu jest w praktyce niemożliwe.

Narzucanie standardów#

Skąd czerpać pewność, że standardy, na których opieramy się przy tworzeniu stron są należycie zaimplementowane w przeglądarce?

Jedyny nacisk, jaki możemy wywrzeć, ma charakter społeczny. Jeśli nie można wierzyć w idealizm lub dobrze pojęty własny interes producenta trzeba go publicznie ośmieszyć albo w ostateczność zrezygnować z danego oprogramowania. Aby przekonać się, że nawet najbardziej idealistyczny projekt wymaga nacisku ze strony opinii publicznej lub konsumentów, zajrzyj na stronę bugzilla.mozilla.org - jest to baza danych o błędach znalezionych w Mozilli. Jeśli wyszukasz wszystkie błędy w obsłudze HTML-a, które czekają na usunięcie, zobaczysz długą listę, mimo że program jest prawie doskonały. Tak jest z każdym programem. Opinia publiczna widocznie ma nadzieję, że programiści uporają się z tą listą zanim stracą zapał albo możliwości pracy na obecnych zasadach.

Oczywiście inną kwestią jest używanie lub nieużywanie standardów przez nas samych. Nasz kod powinien być napisany przejrzyście i przechodzić przez przynajmniej jeden rodzaj sprawdzania składni. Jeśli zależy nam na stosowaniu się do standardów, powinniśmy oprzeć się pokusie używania niestandardowych własności czy funkcji, promowanych przez różnych producentów.

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

Specyfikacja (H1) Wstęp (H2) Status dokumentu (H3) Budowa specyfikacji (H3) Podstawowe zagadnienia (H3) Podstawowe definicje (H3) Standardy (H3) Narzucanie standardów (H4)