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)