Klucz dostępu n przeskakuje w nawigacji strony. Przejdź do początku.

Ten dokument jest tłumaczeniem. W przypadku rozbieżności i błędów aktualna wersja angielska powinna być uznana za autorytatywną. Pierwotne prawa autorskie należą do W3C jak wykazano poniżej.

Tłumacz: Andrew Osobka, Natalia Fabisz, Angielski Team.

s_gotoW3cHome Internacjonalizacja
 

Wysyłanie XHTML 1.0

Potencjalni odbiorcy: Programiści XHTML/HTML (używający edytorów lub skryptów), deweloperzy skryptów (PHP, JSP, itp.), kierownicy projektów sieciowych oraz każdy kto potrzebuje wprowadzenia do trybów "quirks" i "standards" jak również informacji na temat jaką rolę spełniają deklaracje DOCTYPE i XML. Artykuł ten może również zaciekawić tych, którzy chcą wiedzieć jak deklarować kodowanie znaków dokumentu.

Uwaga: Wprowadzono zmiany do oryginalnej wersji angielskiej od czasu wykonania tłumaczenia. Dostępna lista zmian.

Poniższy artykuł po krótce opisuje niektóre aspekty, często zaskakujące, tego jak serwery wysyłają XHTML do aplikacji użytkownika (np.: przeglądarek) i jak radzą sobie one z otrzymanymi znacznikami. Artykuł opisuje problemy związane z implementacją, a nie standardy W3C.

Poniższe materiały zostały zaczerpnięte z tutorialu pod tytułem "Jak deklarować kodowanie znaków dokumentów HTML i XHTML". Tematy te mają poważny wpływ na podejmowanie odpowiednich decyzji. Zawarte tu informacje są również pomocne w wyjaśnieniu dlaczego niektóre aspekty arkuszy stylów nie wyświetlają sie w sposób oczekiwany lub inaczej w poszczególnych aplikacjach.

XHTML & MIME types

Kiedy serwer wysyła dokument do oprogramowania użytkownika (np.: przeglądarki), to wysyła on również pewne informacje w polu Content-Type w nagłówku HTTP dotyczące formatu dokumentu. Informacje te są wyrażone przy użyciu etykiety MIME type. Oto przykład nagłówka HTTP dla dokumentu HTML przy użyciu MIME type 'text/html'. Proszę zauważyć, że informacja w Content-Type może również wyrazić kodowanie znaków dokumentu.

HTTP/1.1 200 OK
Date: Wed, 05 Nov 2003 10:46:04 GMT
Server: Apache/1.3.28 (Unix) PHP/4.2.3
Content-Location: CSS2-REC.en.html
Vary: negotiate,accept-language,accept-charset
TCN: choice
P3P: policyref=http://www.w3.org/2001/05/P3P/p3p.xml
Cache-Control: max-age=21600
Expires: Wed, 05 Nov 2003 16:46:04 GMT
Last-Modified: Tue, 12 May 1998 22:18:49 GMT
ETag: "3558cac9;36f99e2b"
Accept-Ranges: bytes
Content-Length: 10734
Connection: close
Content-Type: text/html; charset=utf-8
Content-Language: en

Serwer wysyła pliki HTML 4.01 z text/html jako MIME type. HTML jest aplikacją SGML.

Jets to bardziej skomplikowane w przypadku XHTML 1.0, który jest oparty na XML.

Wielu woli używać XHTML z powodu korzyści jakie XML wnosi w edytowanie lub przetwarzanie dokumentów. Jednak w większości przeglądarek brakuje wsparcia dla plików XML, wiele plików XHTML 1.0 jest wysyłanych z text/html MIME type. W takim przypadku, aplikacje użytkownika traktują plik jako HTML.

Aby niewielka różnica pomiędzy XML i HTML nie przyczyniła się do błędów w starszych aplikacjach podczas wysyłania dokumentów XHTML jako HTML, powinno się zawsze przestrzegać wytycznych zawartych w załączniku C specyfikacji XHTML. Wytyczne te zalecają między innymi zostawienie jednej spacji przed znakiem '/>' znaczników (takich jak img, hr lub br) i stosownaie atrybutów " id" oraz " name" dla identyfikatorów cząstkowych, itp.

XHTML 1.0 można również wysyłać jako XML, a XHTML 1.1 jest zawsze wysyłane jako XML. Aby wysłać XHTML jako XML należy zastosować MIME types application/xhtml+xml, application/xml lub text/xml. W3C zaleca aby wysyłać XHTML jako XML stosując tylko pierwszy z typów MIME - mianowicie application/xhtml+xml.

Fakt, że XHTML może być wysyłany jako HTML lub XML, robi różnicę w sposobie w jakim informacja o kodowaniu jest deklarowana.

Tryby 'Standards' i 'Quirks'

Obecne przeglądarki mogą wyświetlać pliki HTML w trybie standardowym lub "quirks". Oznacza to, że stosowane są inne reguły do wyświetlaniu pliku, jedna zgodna ze spodziewanym stadardowym zachowaniem, a druga zgodna z oczekiwaniami opartymi na niestandardowym zachowaniu starszych przeglądarek.

Poniższe zdjęcia ilustrują te różnice.

Dokument wyświetlony w trybie standardowym. Ten sam dokument wyświetlony w trybie quirks.
Zdjęcie pliku wyświetlonego w trybie standardowym. djęcie pliku wyświetlonego w trybie quirks.

Powyższe różnice są następujące:

Dwa zdjęcia pokazują tą samą stronę z takimi samymi znacznikami i takim samym arkuszem stylów. Jedyną różnicą jest to, że pierwszy plik ma deklarację DOCTYPE a drugi nie. Brak DOCTYPE powoduje tryb "quirks".

Przeglądarki, które przełączają tryby w ten sposób często określa się jako 'doctype switching'.

Poniższy kod źródłowy przedstawia deklarację DOCTYPE na samej górze (w kolorze czerwonym i kursywie).

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en" xml‎ns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <title>xhtml document</title> 
    <style type="text/css">
    body { background: white; color: black; font-family: arial, sans-serif; font-size: 25px; }
    p { font-size: 50%; }
    h1 { font-size: 16px; }
    div { margin: 20px; width: 170px; padding: 50px; border: 6px solid teal; }
    </style> 
    </head> 
<body> 
    <h1>Test file for Standards Mode</h1> 
    <div>
        <p> Here is some text in a p in a div. </p>
        </div> 
    <table border="1"> 
        <tr><td><p>Text in p tag.</p></td>
              <td><p>Text in p tag.</p></td> 
              </tr> 
        <tr><td>No p tag.</td>
              <td>No p tag.</td> 
              </tr>
        </table>
    </body> 
</html> 

Najlepej zawsze wysyłać dokumenty w trybie standardowym - tzn. z deklaracją DOCTYPE.

Deklaracja XML

Ponieważ XHTML 1.0 jest oparty na XML, często dodaje się deklarację XML na samym początku kodu, nawet jeśli dokument wysyła się jako HTML. Zmieni to wygląd powyzszego kodu na następujący (deklaracje XML jest zaznaczona na czerwono i napisana kursywą):

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en" xml‎ns="http://www.w3.org/1999/xhtml">
<head>
...

W przeglądarkach takich jak Internet Explorer 7, Firefox, Mozilla, Netscape, Opera i innych, z deklaracją XML lub bez, strona z deklaracją DOCTYPE będzie wyświetlana w trybie standardowym.

W Internet Explorer 6, jeśli cokolwiek pojawia się przed deklaracją DOCTYPE, strona zostaje wyświetlana w trybie quirks.

Ponieważ użytkownicy Internet Explorer 6 stanowią dużą liczbę wszystkich użytkownikow internetu, jest to prawdziwym problemem. Jeśli chce się zapewnić aby strony wyświetlane były w ten sam sposób we wszystkich przeglądarkach, należy dokładnie przemyśleć.jak uporać się z tym problemem.

Oto inne opcje. Naturalnie, jeśli dokument nie zawiera elementów, na które tryb nie oddziaływuje, nie stanowi to problemu. Jeśli natomiast ma to miejsce, należy zastosować pewne obejścia w arkuszu CSS, aby uporać sie z tymi problemami i pominąć deklarację XML.

Specyfikacja XHTML również ostrzega, że instrukcje przetwarzania są wyświetlane z niektórymi aplikacjami. Niektóre aplikacje interpretują deklaracje XML jako nierozpoznane XML, a nie jako HTML i dlatego mogą nie wyświetlić dokumentu we właściwy sposób. Powinno się dokument przetestować na różnego typu aplikacjach, aby sprawdzić czy zaistniał jakiś problem.

Zauważ, że jeśli pominie sie deklaracje XML, to powinno się zastosować UTF-8 lub UTF-16 jako kodowanie strony. (Zobacz Character sets & encodings in XHTML, HTML and CSS po więcej informacji na temat deklaracji kodowania.)

Streszczenie

XHTML 1.0 można wysyłać jako HTML lub XML. Jeśli wysyła sie go jako XML, należy użyć MIME type application/xhtml+xml.

Zazwyczaj należy stosować deklarację DOCTYPE na samej górze dokumentów HTML lub XHTML, aby były one wyświetlane w trybie standardowym.

Obecność deklaracji XML w plikach XHTML 1.0 podawanych jako HTML spowoduje, że strona będzie wyświetlać się w trybie quirks w Internet Explorer 6 (potencjalnie wielu użytkowników twojego serwisu).

Po więcej informacji, zobacz tematy pokrewne i sprawdź strony przez nie wskazane.

Powiedz nam co myślisz (po angielsku).

Prenumeruj kanał RSS.

Nowe źródła

Wiadomość ze strony głównej

Twitter (Wiadomość ze strony głównej)

‎@webi18n

Warto przeczytać

Autor: Richard Ishida, W3C. Tłumacz: Andrew Osobka, Natalia Fabisz, Angielski Team..

Ważny XHTML 1.0!
Ważne CSS!
Zakodowano w UTF-8!

Angielska wersja dokumentu z dnia 2007-07-16. Tłumaczenie wykonano dnia 2010-08-20 9:24 GMT

Historia zmian dokumentu article-serving-xhtml w blogu i18n.