XHTMLa ciąg dalszy

tech • 397 słów • 2 minuty czytania

Kontynuuję tematykę XHTML-a w odniesieniu do mojej ostatniej notki o poprawnym serwowaniu tego formatu.

Doszedłem do wniosku, że obecnie będę uznawał tylko XHTML 1.0 Strict i XHTML 1.1, innymi specyfikacjami się bawił już nie będę… Ale nie o tym miała być mowa, lecz znów o MIME Type.

Obecnie większość serwerów ma zdefiniowany odpowiedni typ dla plików z rozszerzeniem .xhtml, które serwowane są jako application/xhtml+xml. Dlatego będę unikał pakowania XHTML-a (1.1) w pliki .html/.htm i wykorzystywał do tego odpowiedni format pliku. Mógłbym więc zapomnieć o problemie mime type w statycznych stronach.

Mógłbym, gdyby nie IE i inne przeglądarki nieznające i nieakceptujące XHTML-a. Dlatego niestety dalej muszę się “bawić” w “content negotation”, ale tym razem na plikach .xhtml.

Czemu akurat na tych plikach? Bo w końcu, w niedalekiej przyszłości, standard XHTML przejmie władzę i wszystko będzie piękne i proste (chyba), a moje strony będę na ten dzień przygotowane (i wygram tę wojnę!).

Wracając do teraźniejszości… Muszę chociaż zadbać o to, żeby IE nie pobierał mojej strony XHTML, ale próbował ją jakoś wyświetlić, choćby jako text/html. Wiem, że XHTML 1.1 powinien być serwowany tylko i wyłącznie jako application/xhtml+xml, ale moim zdaniem lepiej, aby inne nieakceptujące go przeglądarki wyświetliły go w postaci HTML-a, niż żeby go olały sikiem prostym… Przynajmniej do czasu, gdy IE zacznie sobie z nim dobrze radzić.

Poniższy fragment pliku .htaccess załatwia sprawę serwowania statycznych stron .xhtml dla nie akceptujących go klientów jako text/html:

# aby serwowac dla nieobslugujacych jako text/html
AddType text/html xhtml

# defaultowe kodowanie
AddDefaultCharset utf-8

RewriteEngine on
RewriteCond %{HTTP_ACCEPT} application/xhtml\+xml
RewriteCond %{HTTP_ACCEPT} !application/xhtml\+xml\s*;\s*q=0
RewriteCond %{THE_REQUEST} HTTP/1\.1
RewriteRule \.xhtml$ - [T=application/xhtml+xml]

Ustawienie domyślnego kodowania na UTF-8 jest wymagane, aby zawartość text/html nie uraczyła nas krzaczkami, ponieważ nasz plik, zgodnie ze specyfikacją XHTML-a, nie zawiera niezgodnych, przestarzałych tagów meta.

Dodatkowo, lepiej, żeby to było UTF-8, bo wtedy można pominąć prolog XML w kodzie strony XHTML, który sprawiłby problem IE, zmuszając ją do przejścia w tryb quirks mode i wtedy nawet ładny XHTML renderowany jako HTML w ogóle nie trzymałby się standardów CSS.

Tymi prostymi zabiegami, mam w pełni zgodny XHTML, który dodatkowo nie jest odrzucany przez przestarzałe i nieakceptujące tego standardu przeglądarki i programy kliencie. Jedynym mankamentem jest to, że nie można używać XML-owego dołączania CSS, tylko pozostać przy <link ...> w nagłówku <head/>. Coś za coś ;)

Oczywiście przy dynamicznych stronach można zadbać o każdy szczegół, ale ta notka miała dotyczyć problemu w statycznych stronach.

Komentarze (0)

Dodaj komentarz

/dozwolony markdown/

/nie zostanie opublikowany/