XHTMLa ciąg dalszy

Kontynuacja tematyki XHTMLa w odniesieniu do ostatniej notki o poprawnym serwowaniu tego formatu.

Uznałem, a raczej obecnie uznaję tylko XHTML 1.0 Strict i XHTML 1.1, innymi specyfikacjami się bawił już nie będę :P

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 doszedłem do wniosku, że będę unikał pakowania XHTMLa (1.1) w pliki .html/htm. oraz wykorzytywał odpowiednie pliki wedle ich przeznaczenia ;)

Mógłbym, wiec zapomnieć o problemie mime type w statycznych stronach.
Mógłbym, gdyby nie IE i inne przeglądarki nieznające i nieakceptujące XHTML.

Dlatego dalej muszę się "bawić" w "content negotation", ale tym razem na plikach .xhtml.

Czemu akurat na tych plikach?
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, wygramy ta wojnę :P
Wracając do teraźniejszości, muszę chociaż zadbać o to, żeby IE nie próbował pobierać mojej strony XHTML, ale próbował ja jakoś wyświetlić, choćby jako text/html.

Wiem, ze XHTML 1.1 powinien być serwowany tylko i wyłącznie jako application/xhtml+xml, ale moim zdaniem lepiej, aby inne nie akceptujące go przeglądarki wyświetliły go chociaż jako HTML, 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 z specyfikacja XHTMLa, nie zawiera nie zgodnych, przestarzałych tagów meta.

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

Tymi prostymi zabiegami, mamy w pełni zgodny XHTML, który dodatkowo nie jest odrzucany przez przestarzale i nieakceptujące tego standardu przeglądarki i programy kliencie.

Jedynym mankamentem jest to, że nie możemy używać xmlowego dołączania CSS, tylko pozostać przy <link ...> w nagłówku head. Coś za coś ;)

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *