|
|||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||
XHTML (ang. Extensible HyperText Markup Language, rozszerzalny hipertekstowy język znaczników) – język służący do tworzenia stron WWW ogólnego przeznaczenia. 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 słabe przyjęcie XHTML przez przeglądarki i narzędzia, W3C zadecydowało o kontynuowaniu linii XHTML/1.0 i HTML 4 jako XHTML 5 i HTML 5. W odróżnieniu od HTML-a (który jest aplikacją SGML), 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 przy pomocy np. transformacji XSLT, a także automatycznie przekształcać w inne formy XML-a. Jedną z największych zalet XHTML jest możliwość łączenia z innymi językami zgodnymi z XML, np. MathML czy SVG. Odbywa się to dzięki wykorzystaniu mechanizmu przestrzeni nazw XML. Obecnie nowe przeglądarki, takie jak Firefox czy Opera, praktycznie w pełni obsługują XHTML, lecz przeglądarka mająca 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). Jednak aby prawidłowo wyświetlać strony zarówno w nowoczesnych, jak i starszych przeglądarkach należy wykorzystać metodę negocjowania zawartości.
edytuj Podstawowe reguły XHTMLZasady konstruowania dokumentów XHTML – najważniejsze różnice w porównaniu z HTML:
edytuj Kompatybilność z HTMLPonieważ 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).
edytuj XHTML a PHPUżywając języka PHP w dokumentach XHTML często można się spotkać z błędem podczas parsowania deklaracji XML (konstrukcje typu Wyłączenie krótkich znaczników PHP można osiągnąć poprzez dokonanie następującego wpisu do pliku php.ini: short_open_tag = Off Ten sam efekt można osiągnąć poprzez wpis do pliku .htaccess (serwer Apache): php_flag short_open_tag Off Jeśli nie mamy możliwości wyłączenia krótkich znaczników, akceptowalnym obejściem problemu jest używanie PHP-owej konstrukcji <?php echo '<?xml version="1.0" encoding="utf-8"?'.">\n"; ?> lub: <<?php ?>?xml version="1.0" encoding="utf-8"?<?php ?>> (Znaki kończące deklarację XML – edytuj Walidacja XHTMLTak jak każdy dokument XML, dokument XHTML powinien spełniać dwa rodzaje poprawności:
Schematy określające definicję typu dokumentu w przypadku XHTML są zwykle wyrażone w DTD. Aby walidator wiedział wobec jakiej wersji i odmiany języka ma sprawdzać poprawność, konieczne jest umieszczenie w dokumencie deklaracji typu dokumentu (DOCTYPE). Deklaracja ta powinna być umieszczona po deklaracji XML (jeśli jest obecna); obie te deklaracje tworzą razem prolog XML. W XHTML 1.0 istnieją 3 różne DTD, każda z nich definiuje osobną odmianę tej wersji języka. W XHTML 1.1 jest już tylko jedna DTD, ale dzięki modularyzacji XHTML można łatwo na jej bazie tworzyć własne DTD. DTD (i bazujący na nim walidator W3C) ma jednak sporo ograniczeń i nie potrafi wyrazić wszystkich reguł języka XHTML. Możliwe więc, że dokument, który pozytywnie przeszedł walidację względem DTD wcale nie jest poprawny. Wielu ograniczeń DTD pozbawiony jest inny język schematów – XML Schema. W3C opublikowało specjalną notę zawierającą definicję XHTML 1.0 w XML Schema, przygotowywane jest też drugie wydanie XHTML 1.1, uzupełniające specyfikację o schematy w tym języku. XML Schema w porównaniu z DTD potrafi np. sprawdzić poprawność wartości atrybutu Innym językiem schematów mogącym służyć do walidacji XHTML jest RELAX NG. W porównaniu do XML Schema ma on bardziej intuicyjną składnię, lecz podobnie oferuje dużo więcej możliwości niż DTD (choć na tym polu nieco ustępuje językowi XML Schema). RELAX NG ma być kolejnym, obok DTD i XML Schema, językiem, w którym zostanie zdefiniowany schemat XHTML 2.0 (jednak odwoływanie się w dokumencie do tego schematu nie będzie potrzebne, w przeciwieństwie do dwóch pozostałych języków). edytuj Wersje XHTMLedytuj XHTML 1.0XHTML 1.0 został zatwierdzony jako rekomendacja W3C 26 stycznia 2000 roku. Rekomendacja ta jest po prostu odpowiednim przeformułowaniem języka HTML 4 – SGML jako język definiowania został zastąpiony przez XML. XHTML 1.0 dysponuje więc praktycznie tym samym zestawem elementów i atrybutów, co HTML 4; analogiczny jest też podział na 3 wersje DTD:
Warto pamiętać, że DTD XHTML 1.0 nie jest w pełni analogiczne do DTD HTML 4.01 (bardziej przypomina DTD HTML 4.0). W związku z tym niektóre atrybuty dozwolone w HTML 4.01 Strict są niedozwolone w XHTML 1.0 Strict (ale można je stosować w odmianach Transitional i Frameset). Na przykład w odmianie ścisłej XHTML 1.0 nie można używać atrybutu edytuj XHTML 1.1Najnowszą rekomendacją XHTML jest opublikowana 31 maja 2001 r. specyfikacja 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. XHTML 1.1 został opracowany zgodnie z regułami modularyzacji XHTML. Zawiera elementy i atrybuty takie, jak XHTML 1.0 Strict, usunięto tylko atrybut edytuj XHTML 2.0 (projekt)Obecnie przygotowywana jest specyfikacja XHTML 2.0, która ma wprowadzić wiele znaczących zmian do języka. Pierwsze projekty zakładały poważne ograniczenie kompatybilności w stosunku do poprzednich wersji XHTML, jednak z czasem zdecydowano o pozostawieniu w XHTML 2.0 takich elementów, jak Siódma wersja szkicu roboczego XHTML2 została opublikowana 27 maja 2005 r. Najważniejsze zmiany wprowadzone w projekcie specyfikacji:
Aktualna, ósma wersja szkicu roboczego XHTML2 została opublikowana 26 lipca 2006 r. edytuj HTML5 (projekt)Alternatywnie wobec XHTML2 jest rozwijany projekt HTML 5, przygotowywany przez W3C na podstawie projektu specyfikacji Web Applications WHATWG. Serializacja HTML 5 dla XML jest określana jako XHTML5. edytuj Modularyzacja XHTMLW 2001 r. dokonano podziału XHTML na moduły. Zdefiniowano jednocześnie reguły tworzenia nowych modułów, a także reguły, według których moduły mogą być łączone. Umożliwia to tworzenie nowych języków składających się z elementów XHTML, a mogących też zawierać elementy spoza XHTML; nazywa się je językami rodziny XHTML. Niektóre języki rodziny XHTML to:
W oparciu o modularyzację powstał również XHTML 1.1. Dzięki temu można bardzo łatwo dostosować ten język do swoich potrzeb. Na przykład rozszerzenie XHTML 1.1 o atrybut edytuj Typy zawartości XHTML
edytuj Negocjacja zawartościInternet Explorer nie potrafi odczytać stron XHTML podanych jako application/xhtml+xml – w domyślnej konfiguracji będzie wyświetlał okno dialogowe z prośbą o pobranie takiego pliku. Ogranicza to w znacznym stopniu możliwość korzystania z typu XHTML w sieci WWW. Problem ten można obejść poprzez serwowanie typu application/xhtml+xml przeglądarkom go obsługującym, natomiast pozostałym przesyłanie dokumentu z typem text/html. Można to osiągnąć stosując metodę negocjowania zawartości (content negotiation) po stronie serwera. Można wykorzystać do tego język skryptowy, np. PHP: $xhtml = preg_match('/application\/xhtml\+xml(?![+a-z])(;q=(0\.\d{1,3}|[01]))?/i', $_SERVER'HTTP_ACCEPT', $xhtml) && (isset($xhtml2)?$xhtml2:1) > 0 || strpos($_SERVER"HTTP_USER_AGENT", "W3C_Validator")!==false || strpos($_SERVER"HTTP_USER_AGENT", "WebKit")!==false; header('Content-Type: '.($xhtml?'application/xhtml+x':'text/ht').'ml; charset="utf-8"'); // ew. iso-8859-2 lub inne kodowanie Obejścia dla walidatora W3C i Safari (WebKit) są konieczne, gdyż obsługują one XHTML, ale nie wysyłają odpowiedniego nagłówka HTTP-Accept. Inne przykłady odpowiednich skryptów można znaleźć na tych stronach: [3], [4], [5]. edytuj Przykłady dokumentów XHTMLXHTML 1.1 Content-Type: application/xhtml+xml; charset="utf-8" <?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> <title>Przykład dokumentu zgodnego z XHTML 1.1</title> </head> <body> <p>To jest przykład.</p> </body> </html> XHTML5 Content-Type: application/xhtml+xml; charset=utf-8 <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/css" href="style.css"?> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl"> <head> <title>Przykład dokumentu zgodnego z XHTML5</title> </head> <body> <p>To jest przykład.</p> </body> </html> XHTML 1.0 Strict kompatybilny z HTML Content-Type: application/xhtml+xml; charset=iso-8859-2 <!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> <title>Przykład dokumentu zgodnego z XHTML 1.0 Strict</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" /> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <p>To jest przykład.</p> </body> </html> edytuj Zobacz teżedytuj Linki zewnętrzne
edytuj Walidatory
|
| All Right Reserved © 2007, Designed by Stylish Blog. |