Wysyłanie XHTML jako XHTML

Jeżeli dokument napisany zgodnie ze specyfikacją XHTMLa wysyłany jest do przeglądarki jako text/html niczym wtedy nie różni się od zwykłego HTML, bo interpretowany jest przez przeglądarkę jako HTML, który zawiera błędy składniowe (HTML nie należy do rodziny XML).

Zawartość pliku (np. DOCTYPE) nie definiuje sposobu interpretacji dokumentu przez przeglądarkę, bo przeglądarka przed rozpoczęciem czytania pliku musi już wiedzieć w jaki sposób go czytać.

Poprawną interpretację można zapewnić jedynie poprzez wysyłanie XHTML z odpowiednim MIME Typeapplication/xhtml+xml. Typ przesyłany jest w nagłówkach HTTP, które są niewidoczne dla użytkownika i ich ustawienie wymaga specjalnej konfiguracji serwera.

Można zmienić rozszerzenie pliku na *.xhtml, a w konfiguracji serwera wpisać AddType application/xhtml+xml .xhtml

Kompatybilność wstecz Bug w IE

Nie wszystkie przeglądarki i roboty wyszukiwarek potrafią obsługiwać XHTML. Im, dla kompatybilności, można wysyłać XHTML jako HTML (co jednak pozbawia XHTML wszelkich przewag nad HTML). Możesz wysłać typ MIME obsługiwany przez przeglądarkę za pomocą poniższego skryptu:
Skrypt PHP serwujący XHTML. Niestety, ten skrypt nie zadziała w walidatorze i przeglądarkach Chrome i Safari. Aby poradzić sobie z tym, dokumenty XHTML buduj w poniższy sposób:

 <?php
 define("XHTML", strisstr("application/xhtml+xml", strtolower($_SERVER["HTTP_ACCEPT"])) || strisstr("W3C_Validator", $_SERVER["HTTP_USER_AGENT"]) || strisstr("WebKit", $_SERVER["HTTP_USER_AGENT"])));
 header('Content-Type: '.(XHTML)?'application/xhtml+x':'text/ht'.'ml'.(!XHTML)?';charset="utf-8"':'');
 if (XHTML):
 ?>
 <?xml version="1.0" encoding="UTF-8"?>
 <!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>
 <?
 else:
 ?>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html lang="pl">
 <head>
 <? endif; ?>
 <title>Tytuł strony</title>
 </head><body>
 <!-- TUTAJ ZAWARTOŚĆ STRONY -->
 </body></html>

Powrót do wprowadzenia.


Zmodyfikowano: 11.03.2012, 15:51
submit