q XHTML to EXtensible HyperText Markup Language
q XHTML jest niemal identyczny z HTML 4.01
q XHTML ma czystszą formę niż HTML
q XHTML jest aplikacją XML
XHTML 1.0 jest od 26 stycznia 2000 oficjalnym standardem sieciowym. Rekomendacja W3C oznacza, że specyfikacja jest stabilna i przetestowana.
W sieci umieszczanych jest coraz więcej stron WWW, rośnie też liczba „złych” stron – stron, napisanych niepoprawnie. Taki kod HTML:
<html>
<head>
<title>Błędny kod HTML!</title>
<body>
<h1>TU JEST EWIDENTNY BŁĄD!
</body>
będzie wyświetlany poprawnie w większości przeglądarek, mimo, że zawiera błąd składni – brakuje w nim znacznika zamykającego </h1>.
XML nie dopuszcza takich wpadek. Dlatego połączenie języków XML i HTML daje nadzieję na stworzenie dobrego i stabilnego narzędzia. Dokumenty XHTML są interpretowane przez wszystkie urządzenia radzące sobie z językiem XML. XHTML pozwala tworzyć dokumenty o poprawnej strukturze, które działają we wszystkich przeglądarkach i są kompatybilne wstecznie.
XHTML to kolejna generacja języka HTML, ale niewątpliwie trochę czasu upłynie zanim ludzie i urządzenia do niej się dostosują. Trochę, lecz niezbyt wiele. Należy pamiętać, że między HTML 4.01 a XHTML nie ma wiele różnic, nie będzie więc to trudny proces.
Podstawowe wymagania to kod pisany małymi literami i zamykanie znaczników – chyba możesz je spełnić.
q Elementy XHTML muszą być poprawnie zagnieżdżane
q Dokumenty XHTML muszą mieć poprawną formę
q Nazwy znaczników muszą być pisane małymi literami
q Wszystkie elementy XHTML muszą być zamknięte
W języku HTML wymaganie prawidłowego zagnieżdżania nie musi być restrykcyjnie spełniane. Na przykład wyrażenie sformułowane w HTML tak:
<b><i>Tekst pogrubiony i pisany kursywą...</b></i>
będzie w XHTML absolutnie niepoprawne. W XHTML zagnieżdżenie musi być prawidłowe:
<b><i>Tekst pogrubiony i pisany kursywą... </i></b>
Na przykład częstym błędem w zagnieżdżonych listach jest zapominanie, że lista zagnieżdżona musi być umieszczona w obrębie elementu li. Oto zły zapis:
<ul>
<li>Punkt 1</li>
<li>Punkt 2
<li>Zagnieżdżony 1</li>
<li>Zagnieżdżony 2</li>
</ul>
<li>Punkt 3</li>
A tutaj poprawny odpowiednik błędnego kodu:
</li>
W poprawnym przykładzie znacznik </li> został wstawiony za znacznikiem </ul> listy zagnieżdżanej.
Oto wymagania, które określają poprawność formy. Wszystkie elementy XHTML muszą być zagnieżdżone w podstawowym elemencie html. Elementy podrzędne danych elementów stosowane są w parach i są prawidłowo zagnieżdżone w elemencie nadrzędnym. Podstawowa struktura dokumentu prezentuje się tak:
<head> ... </head>
<body> ... </body>
</html>
Konieczność stosowania małych liter wynika z tego, że dokumenty XHTML są aplikacjami XML, a XML to język czuły na wielkość znaku. Tak więc znaczniki <br> i <BR> zostaną zinterpretowane jako różne.
Zgodnie z tym, zapisz kodu w takiej formie:
<BODY>
<P>Tekst</P>
</BODY>
jest niepoprawny. Poprawna postać powinna wyglądać tak:
<p>Tekst</p>
Wszystkie elementy, które nie są puste, muszą mieć znaczniki zamykające.
<p>Tekst
<p>Kolejny akapit
<p>Kolejny akapit.</p>
Elementy puste muszą także zostać zaopatrzone w znacznik zamykający lub znacznik otwierający musi kończyć się znakami />.
Oto nieprawidłowa postać wyrażenia:
Tu dodamy łamanie wiersza<br>
A tu pojawi się linia pozioma<hr>
Poprawny zapis wygląda tak:
Tu dodamy łamanie wiersza<br />
A tu pojawi się linia pozioma<hr />
lub
Kolejna linia <hr></hr>
Dodatkowa spacja w zapisie znacznika zamykającego, <br /> , jest konieczna, aby zachować zgodność z obecnymi przeglądarkami.
XHTML nie dopuszcza dowolności. Nazwy znaczników i atrybutów muszą być pisane małymi literami, wartości atrybutów muszą być podawane w cudzysłowach, skracanie definicji atrybutu jest niedopuszczalne, atrybut id zastępuje nazwę atrybutu, a DTD definiuje w dokumentach XHTML elementy obowiązkowe.
Skoro tak, to zapis:
<table WIDTH=100%>
będzie nieprawidłowy z dwóch powodów: nazwa atrybutu pisana jest wielkimi literami, a wartość nie została ujęta w cudzysłowach. Oto zapis poprawny:
<table width=”100%”>
Rezygnacja z możliwości skróconego zapisu atrybutów oznacza, że nie wolno zapisać tak:
<input checked>
<input readonly>
<input disabled>
<option selected>
Należy zastosować pełną postać zapisu:
<input checked=”checked”>
<input readonly=”readonly”>
<input disabled=”disabled”>
<option selected=”selected”>
W HTML 4.01 stosowany jest atrybut name, który definiuje nazwy następujących elementów: a, frame, iframe, img i map. W XHTML jego rolę przejmuje atrybut id.
Taki zapis będzie w XHTML niepoprawny:
<img src="obraz.gif" name="obraz" />
A tu postać prawidłowa:
<img src="obraz.gif" id="obraz" />
W celu zachowania zgodności z obecnymi wersjami przeglądarek, na razie należy stosować oba atrybuty, name i id, z tymi samymi wartościami. Na przykład:
<img src="obraz.gif" id="obraz" name="obraz" />
Należy także pamiętać o dodatkowej spacji przed /> (patrz uwaga o znacznikach zamykających w XHTML).
Atrybut lang jest stosowany niemal z każdym elementem XHTML. Określa on język, w jakim zdefiniowana została zawartość:
<div lang="no" xml:lang="no">Kici kici!</div>
Wszystkie dokumenty XHTML muszą zawierać deklarację DOCTYPE. Obowiązkowe są także elementy html, head i body, a element title musi być zawarty w obrębie elementu head. Oto podstawowy szablon dokumentu XHTML:
<!DOCTYPE Doctype goes here>
<title>Tytuł dokumentu</title>
</head>
Zawartość dokumentu
Deklaracja DOCTYPE nie jest częścią samego dokumentu XHTML, nie jest też elementem XHTML i nie może mieć znacznika zamykającego. Deklaracja DOCTYPE jest zawsze umieszczana w pierwszym wierszu kodu dokumentu XHTML.
Oto przykład dokumentu XHTML:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<title>Dokument XHTML</title>
Deklaracja DOCTYPE określa typ dokumentu:
Reszta dokumentu wygląda jak zwykły dokument HTML:
Deklaracje typu dokumentu zostały zawarte w dodatku A.
mikomil