PrawoCorpsa - ilość wykonanej pracy jest odwrotnie proporcjonalna do czasu spędzonego w biurze.
XHTML

Co to jest XHTML

XHTML (ang. Extensible HyperText Markup Language, rozszerzalny język znaczników hipertekstowych) to język służący do tworzenia stron WWW. Specyfikacje XHTML przygotowuje organizacja W3C.

XHTML/1.0 nie jest następcą HTML, a jedynie przedstawieniem HTML 4.01 w postaci XML. XHTML/2.0 miał być następcą HTML, niekompatybilnym wstecz, ale ze względu na niekompatybilność Internet Explorera, a co za tym idzie niechęć użytkowników, W3C zadecydowało o kontynuowaniu linii XHTML/1.0 i HTML 4 jako XHTML 1.1 i HTML 5.

W odróżnieniu od HTML-a, dokumenty pisane w XHTML są zgodne z oficjalną specyfikacją XML (to znaczy, że dokumenty w XHTML są poprawnymi dokumentami XML) i dzięki temu można je łatwo generować z innych dokumentów XML, a także automatycznie przekształcać w inne formy XML-a. Dzięki temu dokumenty te posiadają większe możliwości, jak choćby wstawianie innych dokumentów za pomocą jednej metody (element <object/>), zagnieżdżanie wzorów matematycznych (język MathML), czy grafik o nieograniczonej jakości (język SVG).

Obecnie nowe przeglądarki, takie jak Firefox czy Opera, praktycznie w pełni obsługują XHTML, lecz program mający ciągle największy udział w rynku - Internet Explorer - w ogóle nie obsługuje XHTML-owego typu zawartości. W praktyce zmusza to webmasterów do stosowania dla dokumentów XHTML starego HTML-owego typu zawartości - dzięki temu, że XHTML w wersji 1.0 "symuluje" HTML 4 (tzn. posiada praktycznie taki sam zestaw elementów i atrybutów), wyświetlanie XHTML jako HTML nie sprawia większych problemów w żadnej przeglądarce, o ile dokument nie wykorzystuje dodatkowych możliwości XHTML, których nie ma w HTML (przedrostków nazw elementów, innych przestrzeni nazw, XML DOM), zachowanie to uznawane jest za nieprawidłowe, choć dopuszczalne, ze względu na niezgodność Internet Explorer.

Podstawowe reguły XHTML:

  • Jeśli strona XHTML zawiera błędy, nie może zostać wyświetlona
     
  • Strony XHTML muszą mieć typ zawartości application/xhtml+xml (lub inny XML)
     
  • Dzięki użyciu XHTML można stosować inne aplikacje XML (jak MathML czy SVG) bezpośrednio w dokumencie, czego nie da się w HTML
     
  • Dokument powinien rozpoczynać się od deklaracji XML (np. <?xml version="1.0" encoding="utf-8"?>); nie jest ona wymagana, gdy dokument ma kodowanie znaków UTF-8 lub UTF-16, albo gdy odpowiednie kodowanie zostało określone w nagłówkach HTTP (jednak nawet wtedy warto dołączać deklarację XML, gdyż pozwala ona ustalić kodowanie np. w przypadku zapisania strony na dysku)
     
  • Element główny (html) musi zawierać atrybut xmlns określający przestrzeń nazw XHTML:
    http://www.w3.org/1999/xhtml
     
  • Znacznikowi otwierającemu każdego niepustego elementu powinien odpowiadać znacznik zamykający
    (np. <li> ... </li>)
     
  • Puste elementy muszą także być zamykane (np. zamiast <br> musi być <br/>, albo <br></br>)
     
  • Elementy muszą być zagnieżdżane w odpowiedni sposób (np. zamiast <p>Tekst z <em>wyróżnieniem</p></em> - <p>Tekst z <em>wyróżnieniem</em></p>); wprawdzie w HTML także istniał taki wymóg, lecz nie był egzekwowany przez przeglądarki
     
  • Nazwy elementów i atrybutów XHTML muszą być pisane małymi literami
     
  • Wszystkie wartości atrybutów muszą być ujęte w cudzysłów (podwójny, np. <td rowspan="3"> albo apostrof, np. <td rowspan='3'>)
     
  • Niedozwolona jest minimalizacja atrybutów (np. zamiast <textarea readonly> musi być <textarea readonly="readonly">)
     
  • Wewnątrz elementów script i style komentarze XML (<!-- -->) zamiast ukrywać przed starszymi przeglądarkami (które i tak nie obsługują XHTML), powoduje ignorowanie stylów lub skryptów. W sekcji CDATA zaś komentarze są traktowane jako element stylów/skryptu
     
  • Jeśli zawarte wewnątrz dokumentu arkusze stylów lub skrypty zawierają znaki & lub <, zawartość elementów style i script należy umieścić w sekcji CDATA (np.: <style type="text/css"><![CDATA[ arkusz stylów ]]></style>); alternatywnie można użyć encji lub zewnętrznego arkusza stylów/skryptu
     
  • Ze względu na trudności z parsowaniem, nie powinno się używać w XHTML-u javascriptowej metody document.write() i właściwości innerHTML; jednak niektóre przeglądarki już obsługują te konstrukcje także w dokumentach XML. Zamiast nich należy używać metod DOM.
     

Kompatybilność z HTML

Ponieważ nadal są używane nieobsługujące XHTML przeglądarki internetowe, jeżeli chcemy wysyłać dokument zarówno jako XHTML, jak i HTML (dla starszych przeglądarek), możemy się zastosować do kilku reguł. Jednak niektórzy uważają, że XHTML zgodny z HTML pozbawia całkowicie sensu ideę HTML-a jako XML (patrz: http://www.hixie.ch/advocacy/xhtml).

  • Znaczniki pustych elementów powinny zawierać dodatkową spację przed ukośnikiem,
    np. zamiast <br/> powinno być <br />
     
  • Należy unikać używania zminimalizowanej formy (np. <p/>) w przypadku pustych elementów, które mogą mieć zawartość; np. stosowanie znacznika <script type="text/javascript" src="skrypt.js"/> w dokumencie przesyłanym jako HTML prowadzi zwykle do niewyświetlenia reszty dokumentu; należy w tym wypadku używać <script type="..." src="..."></script>
     
  • Obok lub zamiast instrukcji xml-stylesheet należy odwoływać się do zewnętrznych arkuszy stylów przy pomocy obsługiwanego w HTML-u znacznika <link rel="stylesheet" ... />
     
  • Objęcie wewnętrznych skryptów i stylów sekcją CDATA może powodować ich błędne działanie; należy w związku z tym zakomentować znaczniki początku i końca sekcji CDATA,
    np.: <style type="text/css">/* <![CDATA[ */ arkusz stylów /* ]]> */</style>
     
  • Oprócz typowej dla XML deklaracji języka za pomocą atrybutu xml:lang, należy też używać zgodnego z HTML atrybutu lang.
     
  • Dla kompatybilności z IE6 należy pomijać deklarację XML - powoduje to w nim przejście w tryb wstecznej zgodności.
     
  • Nie ma sensu jednak dodawać jej dla innych przeglądarek (skryptami po stronie serwera), gdyż i tak jest ona nieobowiązkowa.
     
  • Strona musi być zakodowana jako UTF-8/USC-*, a jeżeli jest zakodowana inaczej, musimy odpowiednią informację dodać do nagłówka Content-Type (np. kodem PHP: header('Content-Type: '.$mime.'; charset=iso-8859-2');, gdzie $mime to ustalony w wyniku negocjacji zawartości typ pliku).
     
  • W DOM należy używać createElementNS zamiast createElement i trzeba uważać na wielkość liter (DOM HTML podaje nazwy elementów wielkimi literami, DOM XML zachowuje wielkość liter i w XHTML dopuszcza tylko małe litery).
     

Wersje XHTML

  • XHTML 1.0 Strict - odmiana ścisła, zalecana przez W3C, przeznaczona do tworzenia dokumentów z oddzieloną warstwą semantyki od prezentacji; nie zawiera prawie żadnych elementów prezentacyjnych.
     
  • XHTML 1.0 Transitional - odmiana przejściowa, obok elementów odmiany ścisłej zawiera wiele elementów prezentacyjnych.
     
  • XHTML 1.0 Frameset - zawiera wszystkie elementy wersji przejściowej, a dodatkowo także elementy przeznaczone do wyświetlania ramek.
     
  • XHTML 1.1. W3C zaleca jej używanie do wszystkich nowo powstających stron WWW, jednak ze względu na niemożliwość obsłużenia typu application/xhtml+xml w Internet Explorerze, standard ten nie jest jak dotąd powszechnie stosowany.
     

Struktura dokumentów XHTML

XHTML 1.1
	<?xml version="1.0" encoding="utf-8"?>
	<?xml-stylesheet type="text/css" href="style.css"?>
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
			"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
	<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">    
	<head>
	  <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
	</head>
	<body>
	  <p>Treść dokumentu...</p>
	</body>
	</html>
	
XHTML 1.0 Strict kompatybilny z HTML
	<!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" xml:lang="pl" lang="pl">
	<head>
	  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	  <link rel="stylesheet" type="text/css" href="style.css" />
	</head>
	<body>
	  <p>Treść dokumentu...</p>
	</body>
	</html>
	
XHTML 1.0 Transitional kompatybilny z HTML
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
			"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
	<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
	<head>
	  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	  <link rel="stylesheet" type="text/css" href="style.css" />
	</head>
	<body>
	  <p>Treść dokumentu...</p>
	</body>
	</html>
	
XHTML 1.0 Frameset kompatybilny z HTML
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
			"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
	<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
	<head>
	  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	  <link rel="stylesheet" type="text/css" href="style.css" />
	</head>
	<body>
	  <p>Treść dokumentu...</p>
	</body>
	</html>
	
« wstecz   dalej »