Korzystając z tej witryny, wyrażasz zgodę na Politykę prywatności.
Akceptuję
Magazyn T3Magazyn T3Magazyn T3
  • Newsy
  • Testy
  • Gaming
  • Moto
  • Kultura
  • Publikacje
  • Magazyn
  • Kontakt i współpraca
Czytasz: HTML czy XHTML? cz.2
Podziel się
Powiadomienie Pokaż więcej
Aa
Magazyn T3Magazyn T3
Aa
  • Newsy
  • Testy
  • Gaming
  • Moto
  • Kultura
  • Publikacje
  • Magazyn
  • Kontakt i współpraca
Szukaj
  • Newsy
  • Testy
  • Gaming
  • Moto
  • Kultura
  • Publikacje
  • Magazyn
  • Kontakt i współpraca
Zaobserwuj
  • Advertise
© 2007-2023
Magazyn T3 > Wszystkie > Internet Maker > HTML czy XHTML? cz.2
Internet Maker

HTML czy XHTML? cz.2

Włodzimierz Gajda
Włodzimierz Gajda Opublikowany 25/04/2007
Podziel się
11 minut(y) czytania

Obecnie w internecie zobowiązują dwa języki: starzejący się już HTML oraz niestepujący go XHTML. Którego z nich używać? Jak przygotowywać strony WWW zgodne ze standardami?

Dokumenty HTML/XHTML w sieci WWW

Zawartość pliku {stala}.html{/stala} to tylko jeden z etapów przygotowania strony XHTML zgodnej ze standardami. Strony WWW wysyłane przez serwer do przeglądarki są opatrzone dodatkowymi informacjami, nazywanymi nagłówkiem HTTP. Nagłówek ten w normalnych okolicznościach nie jest widoczny. Możemy go podejrzeć za pomocą opcji Narzędzia | Informacje o stronie w Firefoksie lub skorzystać z wtyczek LiveHTTPHeaders (dla Firefoksa) lub ieHTTPHeaders (dla Internet Explorera).

Content-type

Typy plików na dysku oznaczamy rozszerzeniem. Na podstawie końcówki .txt system wie, że plik dane.txt jest plikiem tekstowym. Natomiast plik o nazwie piosenka.html jest traktowany (na podstawie rozszerzenia) jako dokument w języku HTML.

Podobną rolę w odniesieniu do dokumentów dostępnych w sieci WWW (dokładniej: dokumentów przekazywanych protokołem HTTP) pełni nagłówek Content-type. Nagłówek ten jest wysyłany wraz z każdym plikiem pobieranym z serwera WWW. Jeśli odwiedzamy stronę {stala}http://www.example.com/piosenka.html{/stala}, to serwer wyśle wraz z kodem HTML strony nagłówek, który może być następujący:

- Reklama -
Content-type: text/html;charset=iso-8859-2

Nagłówek ten oznacza, że dane powinny być traktowane jako dokument HTML (mówi o tym napis text/html), w którym znaki zakodowano w standardzie ISO-8859-2. Obrazy PNG są oznaczane jako:

Content-type: image/png

zaś style CSS:

Content-type: text/css

I tak dalej. To na podstawie takiego właśnie nagłówka przeglądarka wie, z jakim rodzajem danych ma do czynienia.

- Reklama -

I tutaj docieramy do zasadniczej sprawy na temat języka XHTML. Dokumenty przygotowywane w języku XHTML należy oznaczyć jednym z trzech typów przeznaczonych dla języka XML:

application/xhtml+xml
application/xhtml
application/xml

Zalecany jest pierwszy z nich: application/xhtml+xml. Dokumenty w języku HTML wysyłamy zawsze wyłącznie jako text/html.

Czy to HTML, czy XHTML?

Po czym rozpoznajemy język, w jakim przygotowano dokument? Do tego służy deklaracja DOCTYPE. Zawartość dokumentu powinna być zgodna z podanym typem. Jeżeli ograniczymy się do wersji strict języków (X)HTML, to pozostają trzy dostępne typy dokumentów:



Najlepiej wykorzystywać deklaracje DOCTYPE w identycznej postaci, gdyż odstępstwa mogą niekiedy powodować przejście przeglądarki w tryb pracy określany terminem \”quirks mode\”. Gdy brakuje deklaracji DOCTYPE, wówczas dokument jest zazwyczaj traktowany jako HTML 4.01 transitional.

Jak przeglądarka traktuje dokument HTML, a jak XHTML?

Znana zasada interpretacji HTML-a za wszelką cenę przestaje obowiązywać. Do niedawna przeglądarka po pobraniu dokumentu starała się za wszelką cenę wyświetlić wszystko, co potrafi, a ignorowała nieznane jej znaczniki. Strony zgodne ze standardami stosują zupełnie odmienne reguły. Kod (X)HTML nowoczesnej strony WWW powinien być w pełni zgodny ze stosowanym językiem. Nie tylko nie wolno używać znaczników, które nie występują w definicji języka, ale trzeba je poprawnie zagnieżdżać.

Czy jest to ważne dla przeglądarki? Tak. Współczesne przeglądarki inaczej traktują strony przygotowane w języku HTML, a inaczej strony XHTML. Dokumenty HTML są przez przeglądarki traktowane \”z przymrużeniem oka\”. Przeglądarka stara się poprawnie wyświetlić stronę, nawet jeśli jest ona pełna błędów i nieznanych znaczników.

Natomiast dokument XHTML musi być poprawny, w przeciwnym razie nie zostanie w ogóle wyświetlony. Przypomina to proces kompilacji programu komputerowego: najmniejszy błąd składniowy (np. użycie znaku & zamiast encji {stala}&{/stala}, czy brak zamykającego znacznika {html}

{/html}) spowoduje, że przeglądarka wyświetli wyłącznie komunikat o błędzie!



  
    Wierszyk
  

Hello & Goodbye!

Po czym przeglądarka rozpoznaje język dokumentu?

Język w jakim przygotowano dokument możemy rozpoznać po deklaracji DOCTYPE. Jednak dla przeglądarki najważniejszy jest nagłówek odpowiedzi HTTP. Jeżeli w nagłówku tym znajduje się typ:

Content-type: text/html

to strona taka jest traktowana jako HTML bez względu na deklarację DOCTYPE.

Dokumenty, które mają być traktowane jako XHTML muszą być oznaczone typem:

Content-type: application/xhtml+xml

Nagłówek Content-type dokumentu HTML oraz XHTML

Specyfikacje dostępne na stronach konsorcjum W3C jasno określają jakimi nagłówkami należy opatrzyć strony WWW. Jeżeli strona jest wykonana w języku HTML, to jedynym poprawnym typem jest text/html. W przypadku języka XHTML 1.0 zalecanym typem jest application/xhtml+xml.

Jednak dopuszczalne jest (w niektórych sytuacjach) wysyłanie takiego dokumentu jako text/html. Tak wysyłany dokument powinien być maksymalnie zgodny z HTML-em. W internecie można znaleźć wypowiedzi mówiące, że wysyłanie dokumentu XHTML 1.0 wyłącznie jako text/html jest szkodliwe. Natomiast dokumenty XHTML w wersji od 1.1 wzwyż należy wysyłać wyłącznie jako application/xhtml+xml.

Problemy z Internet Explorerem

Głównym argumentem przeciwko całkowitemu przejściu na język XHTML jest fakt, że Internet Explorer nie interpretuje poprawnie dokumentów wysyłanych jako application/xhtml+xml. Jeśli w nagłówku HTTP wystąpi typ:

Content-type: application/xhtml+xml

to na taki dokument Internet Explorer zareaguje wyświetlając okno dialogowe.

Jeżeli nie chcemy utracić wizyt internautów korzystających z IE, musimy – przynajmniej w odniesieniu do wizyt z IE – stosować nagłówek text/html. A to oznacza, że w myśl standardów nie możemy stosować XHTML 1.1 (XHTML 1.1 ma być bezwarunkowo wysyłany jako application/xhtml+xml, bez względu na przeglądarkę).

Strona XHTML wysyłana jako application/xhtml+xml

Zmiana nagłówków wysyłanych przez serwer Apache

Do bezwarunkowej zmiany typu dokumentów o rozszerzeniu {stala}.html{/stala} wysyłanych przez serwer Apache można wykorzystać plik {stala}.htaccess{/stala}. Umieszczamy w nim wpis:

AddType application/xhtml+xml;charset=utf-8 .html

Wysyłanie nagłówka HTTP w PHP

Nagłówek transakcji HTTP możemy w języku PHP ustalić, wywołując funkcję {stala}header(){/stala}:

header(\'Content-Type: application/xhtml+xml; charset=utf-8\');

Style CSS

Style dokumentu XHTML wysyłanego jako application/xhtml+xml ustalamy deklaracją XML:

W przypadku stylów wewnętrznych należy użyć deklaracji XML oraz elementu style:




  
    Strona...
    
  

Warunkowa modyfikacja typu dokumentu

Jeśli chcemy stosować język XHTML 1.0 zgodnie z zaleceniami W3C, to musimy wysyłać do przeglądarek interpretujących XML (czyli np. do Firefoksa) nagłówek:

Content-type: application/xhtml+xml

zaś do Internet Explorera:

Content-type: text/xhtml+xml

Jest to możliwe dzięki tzw. negocjowaniu zawartości. Weźmy jednak pod uwagę, że nie da się tego zrobić w \”gołym\” (X)HTML-em (tj. bez PHP, ASP czy innych sztuczek po stronie serwera). Jeśli zatem robimy strony wyłącznie w języku (X)HTML, nie stosując skryptów działających na serwerze (czyli PHP czy ASP) czy innych technik warunkowej zmiany nagłówka HTTP, to tak przygotowywane dokumenty opatrzone deklaracją DOCTYPE języka XHTML nie będą zgodne z zaleceniami W3C.

Otrzymamy w ten sposób dokument XHTML, który jest zawsze wysyłany jako text/html (naruszenie zaleceń podanych w dokumencie \”XHTML Media Types\”) lub zawsze wysyłany jako application/xhtml+xml, a zatem niedostępny dla osób korzystających z Internet Explorera.

Negocjacja zawartości

Protokół HTTP pozwala przeglądarce na tak zwaną negocjację zawartości. Polega to na tym, że przeglądarka przekazując zapytanie do serwera zaznacza jaki rodzaj danych chce otrzymać. Na przykład Firefox wysyła następujący nagłówek HTTP ACCEPT (odczytany w skrypcie PHP ze zmiennej {stala}$_SERVER[‘HTTP_ACCEPT\’]){/stala}:

text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

W nagłówku tym przecinek pełni rolę separatora, zaś poszczególne wpisy mają postać:
{stala}typ{/stala}lub {stala}typ;q=0.3{/stala}

Ogólnie, nagłówek ten ma więc postać:

typ,typ;q=x.y,typ,typ,typ;q=x.y,typ;q=x.y,typ,...

Liczba podana po znaku równości jest z zakresu od 0 do 1 i określa preferencje przeglądarki. Brak liczby jest równoważny maksymalnej wartości 1. Nagłówek wysyłany przez Firefoksa oznacza, że przeglądarka preferuje typy:

text/xml               domyślnie: q=1
application/xml        domyślnie: q=1
application/xhtml+xml  domyślnie: q=1

(brak części q=x.y oznacza, że q wynosi 1) przed:

text/html;q=0.9

W ten sposób Firefox stosując technikę negocjacji zawartości zaznacza, że preferuje dokumenty XHTML (typ application/xhtml+xml posiada domyślną wagę q=1) przed dokumentami HTML (typ text/html posiada mniejszą wagę q=0.9).

Parsing nagłówka HTTP ACCEPT

Do analizy nagłówka HTTP ACCEPT możemy użyć funkcji explode() oraz wyrażeń regularnych. W pliku httpaccept.inc.php znajdziemy funkcję {stala}httpaccept_parse(){/stala}, która jest odpowiedzialna za przetworzenie nagłówka HTTP ACCEPT w tablicę asocjacyjną.

Warunkowe wysyłanie typów text/html i application/xhtml+xml

Jeśli w skrypcie PHP umieścimy kod:


to w zależności od przeglądarki wysłany zostanie nagłówek text/html lub application/xhtml+xml. Informacja o rodzaju wysłanego nagłówka zostaje zapisana w zmiennej {stala}$czy_xhtml{/stala}. Parametr funkcji {stala}httpaccept_send_header(){/stala} służy do ustalenia kodowania znaków zawartego w nagłówku HTTP.

Wymiana zawartości

Kłopot z deklaracją XML

Deklaracja XML występująca na początku dokumentów XHTML:

przysporzy dwóch kłopotów. Po pierwsze koliduje z krótkimi znacznikami PHP, po drugie przełącza Internet Explorera w \”quirks mode\”. Kolizję z krótkimi znacznikami PHP rozwiążemy zmieniając konfigurację PHP. W pliku PHP modyfikujemy wartość parametru {stala}short_open_tag{/stala}:

short_open_tag = Off

i stosujemy wyłącznie pełne znaczniki PHP:

Problem z Internet Explorerem jest trudniejszy. Chcąc uniknąć trybu \”quirks mode\”, należałoby zrezygnować z nagłówka XML. Ponieważ nagłówek ten jest opcjonalny, nie stanowi to problemu. Niestety, rozwiązanie nie jest takie proste. Dołączając style do dokumentu XHTML musimy przed deklaracją DOCTYPE umieścić deklarację XML:


Ta deklaracja również przestawia Internet Explorera z trybu standardów w tryb \”quirks mode\”.

Mamy dwa rozwiązania powyższego problemu: możemy zrezygnować ze stylów lub warunkowo zmienić nagłówek dokumentu:

if ($czy_xhtml) {
    echo \'\';
    echo \'\';
}

Niestety, warunkowa zmiana zawartości dokumentu, określana mianem \”cloakingu\”, pomimo że działa poprawnie, może być źle widziana przez wyszukiwarki.

Kłopot z kodowaniem znaków

Kodowanie znaków, podobnie jak i style, wymagają wymiany zawartości. Dokument XHTML nie wymaga elementu meta. Kodowanie znaków jest ustalone w nagłówku HTTP. Element meta ustalający kodowanie znaków dokumentu HTML nie może być zawarty w dokumencie wysyłanym jako application/xhtml+xml, gdyż pozwala na przetwarzanie dokumentu jako text/html:

Z drugiej strony, jeśli taki element usuniemy, wówczas dokument traktowany jako text/html nie będzie zawierał poprawnego kodowania (pomimo nagłówka HTTP!). Jedynym wyjściem jest podmiana zawartości dokumentu na podstawie negocjacji zawartości. Zatem kodowanie znaków należy wysyłać warunkowo, w zależności od wysłanego nagłówka:

if (!$czy_xhtml) {
echo \' \';
}

Kłopot z deklaracją stylów w XHTML jest ściśle praktyczny, gdyż wymusza na przeglądarce MSIE tryb \”quirks\”. Element meta dotyczący kodowania znaków nie stwarza realnych trudności. Wprawdzie zezwala aplikacjom na traktowanie dokumentu jako text/xhtml, jednak nie są mi znane przypadki, kiedy tak by się działo z dokumentem wysyłanym jako application/xhtml+xml.

Może cię także zainteresować

Pozycjonowanie strony internetowej a reklamy w Internecie – czym się różnią?

Jak szybko i łatwo stworzyć stronę mobilną

Strona na WordPressie? Grunt to dobry hosting

Jak zabezpieczyć swoje zdjęcia w chmurze

Jak usunąć historię swojej aktywności z Facebooka?

TAGI: HTML/XHTML
Włodzimierz Gajda 15/09/2011 25/04/2007
Podziel się tym artykułem
Facebook Twitter Whatsapp Whatsapp LinkedIn Reddit Telegram Email Skopiuj link Drukuj
Podziel się
Poprzedni artykuł Shell w praktyce
Następny artykuł Okiełznać style: Kompatybilność

Ostatnie newsy

Październikowa oferta PlayStation Plus, w tym The Callisto Protocol
Gaming Newsy 28/09/2023
Słuchawki Bowers & Wilkins Px8 w nowym, burgundowym wykończeniu
Newsy 28/09/2023
RIVACASE VA1075/VA1080 – mobilne zasilanie dla laptopów
Newsy 28/09/2023
Creative Stage SE mini – soundbar z Bluetooth i USB
Newsy 28/09/2023

Reklama

//

Stylowy, rzetelny, inteligentny – Magazyn T3. Jesteśmy wiodącym magazynem lifestyle’owym, dostępnym co miesiąc w druku i cały czas dla Was online, skupionym na nowych technologiach.

NASZE SERWISY

DOM, OGRÓD I WNĘTRZA BudujemyDom.pl | WybieramyDom.pl | CoZaIle.pl | Informator Budownictwa | ZielonyOgródek.pl | CzasNaWnetrze.pl | Ekobudowanie.pl

 

MUZYKA I DŹWIĘK Audio.com.pl | MagazynGitarzysta.pl | MagazynPerkusista.pl | EstradaiStudio.pl | LiveSound.pl

 

ELEKTRONIKA I AUTOMATYKA ElektronikaB2B.pl | AutomatykaB2B.pl | Elektronika Praktyczna | Elportal.pl | Świat Radio
FOTOGRAFIA, EDUKACJA I HI-TECH DigitalCameraPolska.pl | Fotopolis.pl | MagazynT3.pl | MlodyTechnik.pl
ZDROWIE I RODZINA KtoCieWyleczy.pl

Magazyn T3Magazyn T3
Zaobserwuj
© 2007-2023
Witaj z powrotem!

Zaloguj się

Zapomniałeś hasła?