XHTMLa ciąg dalszy

8 sierpnia 2007

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.

Podobne notatki:

Może zainteresują Cię również następujące, pododbne notatki:

Nikt jeszcze nie skomentował tego wpisu.
Możesz być pierwszy.

Dodaj swój komentarz

Możesz użyć tych tagów XHTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Jeśli chcesz wstawić kilku linijkowy fragment kodu, użyj tagów <pre lang="x"></pre> (gdzie x język kodu np. cpp, perl, html). W ten sposób kod zostanie odpowiednio sformatowany i pokolorowany przez system.

Uwaga!

Na tym blogu działa system cache oraz filtr antyspamowy. Twój komentarz może być widoczny na stronie z pewnym opóźnieniem. Proszę o cierpliwość. Jeśli utraciłeś już wszystkie jej zasoby poinformuj mnie o tym, być może system uznał Cię za spamera ;)