padding-right:3px></span>/></code></td></tr>
></table>Zatem koncepcja, że XHTML jest od divów, a HTML od tabelek, jest bujdÄ
na resorach. To wÅaÅnie Transitional (obydwu odmian (X)HTML) jest od Åmiecenia w kodzie przez <font>
i spóÅkÄ, a wersja Strict (obu odmian (X)HTML) jest zalecanÄ
, nowoczeÅniejszÄ
wersjÄ
do użytku wraz z CSS. Ponieważ XHTML 1.0 miaÅ byÄ jak najdokÅadniejszÄ
kopiÄ
HTML, powieliŠrównież jego niezalecane wersje.
Strict vs Transitional
W Strict nie ma elementów i atrybutów prezentacyjnych. Nie dawaÅy one wiele możliwoÅci, wiÄc nawet niekompletny CSS1 w IE6 z powodzeniem je zastÄpuje. Nie ma za czym tÄskniÄ.
W Strict usuniÄto atrybut target
. Autorzy HTML doszli do sÅusznego wniosku, że ramki to zÅo tak samo jak nachalne otwieranie nowych okien.
Strict kÅadzie wiÄkszy nacisk na rozdzielenie elementów blokowych i liniowych. W szczególnoÅci <blockquote>
i <form>
nie mogÄ
zawieraÄ samego tekstu “ot tak”, tylko muszÄ
mieÄ go otoczonego elementami blokowymi jak <p>
lub <div>
(prawdopodobnie motywacjÄ
byÅo zwrócenie autorom uwagi, że <p>
to nie sÄ
dwa <br>
y, tylko element otaczajÄ
cy tekst). CSS pozwala kontrolowaÄ marginesy tworzone przez <p>
, wiÄc nic strasznego siÄ nie dzieje (poza zbÄdnym upychaniem gdzieÅ <input type=hidden>
).
Jednak Transitional ma kilka rzeczy, których lepiej byÅo nie wyrzucaÄ z HTML Strict (i które powróciÅy w HTML5):
<ol start>
. Numery elementów mogÄ
mieÄ znaczenie dla treÅci, a CSS2 nie potrafi pogodziÄ list-style
i wÅasnych liczników.
<menu>
. Element miaÅ byÄ prezentacyjny, ale nie doczekaÅ siÄ porzÄ
dnej implementacji w przeglÄ
darkach. SkoÅczyÅo siÄ na tym, że byÅ synonimem dla <ul>
, wiÄc go usuniÄto, żeby nie dublowaÄ funkcjonalnoÅci. Jednak z punktu widzenia semantyki przydatne byÅoby odróżnienie bylejakiej listy od menu nawigacyjnego.
JeÅli potrzebujesz <ol start>
albo preferujesz <menu>
, to użycie Transitional zostanie ci wybaczone ;)
Po co jest DOCTYPE?
DOCTYPE jest pozostaÅoÅciÄ
po jÄzyku SGML, z którego HTML (i w konsekwencji XML) zostaÅ zgapiony. Wskazuje ÅcieżkÄ do pliku DTD, który z grubsza opisuje strukturÄ dokumentu (dozwolone i wymagane tagi, atrybuty oraz encje).
Teoretycznie DTD jest potrzebny przeglÄ
darkom, aby wiedziaÅy jak traktowaÄ tagi (np. że nie zamyka siÄ <br>
i <img>
) oraz mogÅy rozpoznaÄ nazwane encje w dokumencie (np. że
to to samo co  
), ale w praktyce wszystkie przeglÄ
darki majÄ
na staÅe zakodowane reguÅy wczytywania HTML, które nawet nie sÄ
zupeÅnie zgodne z DTD (choÄ niektóre można zmusiÄ do peÅnej interpretacji DTD, jeÅli ktoÅ chce mieÄ wolniej ÅadujÄ
cÄ
siÄ stronÄ i dodatkowy kÅopot ;)
Plik DTD jest czÄsto używany przez walidatory (w szczególnoÅci ten z W3C) do sprawdzenia poprawnoÅci dokumentu, ale w tej roli wypada kiepsko â DTD nie jest w stanie wyraziÄ peÅnej specyfikacji HTML. Jest sporo konstrukcji, które siÄ walidujÄ
, ale sÄ
niepoprawnym HTML/XHTML, np. <a><b><a></a></b></a>
jest nielegalne wg. specyfikacji, a dopuszczane przez DTD). PowstaÅy dużo lepsze schematy opisu dokumentów (Schema, RelaxNG) i bazujÄ
ce na nich lepsze walidatory.
Praktycznie jest tylko do wÅÄ
czenia trybu zgodnoÅci ze standardami. DOCTYPE Strict powoduje, że przeglÄ
darki dziaÅajÄ
w trybie zgodnoÅci ze standardami. DOCTYPE Transitional też, ale tylko wtedy, gdy ma URL do DTD. SzczegóÅy. Dokumenty HTML bez DOCTYPE interpretowane sÄ
w trybie emulacji IE5 i dostajÄ
mizernÄ
obsÅugÄ CSS.
Zalecany DOCTYPE
HTML 4: Strict
Ze wzglÄdu na niewielkie zalety i trudnoÅÄ poprawnego użycia XHTML, polecam rozważyÄ HTML, zamiast najnowszej/najmodniejszej wersji XHTML. PamiÄtaj, że skÅadnia HTML też pozwala na peÅne wykorzystanie CSS i pisanie eleganckiego kodu (nawet maÅymi literamiâ¦).
<!DOCTYPE HTML PUBLIC \“\â//W3C//DTD HTML 4.01//EN\” \“http://www.w3.org/TR/html4/strict.dtd\">”
XHTML 1: Strict lub brak
Poprawne użycie XHTML wymaga przede wszystkim dwóch rzeczy:
- Ustawienia
Content-Type
na application/xhtml+xml
- Użycia przestrzeni nazw
http://www.w3.org/1999/xhtml
dla wszystkich elementów XHTML
Natomiast deklaracja XML jest zbÄdna, a DOCTYPE ma tylko marginalne znaczenie â w przeciwieÅstwie do HTML nie okreÅla, które tagi sÄ
opcjonalnie zamykane. Jego rolÄ
pozostaje tylko okreÅlenie encji nazwanych, ale je można zastÄ
piÄ encjami numerycznymi albo znakami UTF\â8.
W trybie XHTML, nawet gdy brak DOCTYPE, przeglÄ
darki zawsze używajÄ
trybu zgodnoÅci ze standardami.
To siÄ nie tyczy IE z tego prostego powodu, że żadna z wersji IE (do 8 wÅÄ
cznie) nie obsÅuguje XHTML w ogóle.
Mimo wszystko, dla 100% zgodnoÅci ze specyfikacjÄ
XHTML, potrzeba wstawiÄ odpowiedni DOCTYPE (i lepiej nie pomijaÄ deklaracji przestrzeni nazw):
<!DOCTYPE html PUBLIC \“\â//W3C//DTD XHTML 1.0 Strict//EN\”
\“http://www.w3.org/TR/xhtml1/DTD/xhtml1âstrict.dtd\">
<html xmlns=\«http://www.w3.org/1999/xhtml\">»”
XHTML 5: brak, HTML 5: prawie brak
Dla (X)HTML5 nie powstaÅo i nie powstanie żadne oficjalne DTD. W trybie XML nie należy wstawiaÄ Å¼adnego DOCTYPE. W trybie HTML wystarczy wrzuciÄ króciutki:
<!DOCTYPE html>
aby wymusiÄ w przeglÄ
darkach tryb zgodnoÅci ze standardami.