Hateemelowe dziwadełka #11
Dawno tego nie było. Ale znalazłem pewną stronę pewnej firemki, która ma “za sobą duże doświadczenie w dziedzinie webdesignu”, tworzy strony “tableless” i w ogóle jest według ich strony super. No, ale każda pliszka swój ogonek chwali :-)
Dziś, zgodnie z nową formułą, pokażę kilka rzeczy, których nie należy robić.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=windows-1250” />
(…)
Kodowania Windows-1250 nie należy stosować. O tym wiadomo już od dawna. Jest to wymysł tylko jednej firmy, Microsoftu, nie jest uznanym standardem, użytkownicy innych systemów operacyjnych czy przeglądarek nie muszą zobaczyć tej strony z prawidłowymi ogonkami - bo producent mógł nie zaimplementować obsługi tego kodowania. W dodatku jest to dokument XHTML 1.1 - jest to aplikacja XML, której kodowanie powinno być ze zbioru kodowań ISO (w przypadku naszego regionu i alfabetu należy stosować kodowanie ISO-8829-2, które jest także Polską Normą) bądź kodowaniem Unicode. Do zamiany kodowania znaków Win-1250 na ISO czy UTF można użyć róznych programów - wiele edytorów posiada tą funkcję wbudowaną.
Ach, jeszcze jeden szczegół odnośnie XHTML 1.1 - dokumenty tego standardu powinny być wysyłane jako typ MIME application/xml+xhtml, a nie jako zwykły text/html. Jednak ten prawidłowy typ MIME nie jest poprawnie rozpoznawany przez najpopularniejszą przeglądarkę internetową świata, Internet Explorer, także w wersji 7 beta - należy więc uciekać się do technik w rodzaju Accept-Type sniffing. O tym można poczytać w Internecie, są gotowe skrypty PHP.
Dalej na stronie był ładny, beztabelkowy kod, ale dwa szczegóły. Pierwszym było zastosowanie dużej ilości klas, z których części na pewno dało by się pozbyć. Poza tym były one nazywane nie zawsze rozsądnie (style1, style2, … style10) - co sprawia, że można się pogubić. Ale ja bym chciał powiedzieć o czymś innym, o tym drugim szczególe. O braku semantyki kodu.
<span class="naglowek">Webdesign </span>
Taki kod jest nic nie wart. Nagłowki powinny być nagłówkami, tabele tabelami, akapity akapitami i tak dalej. Jasne, można wszystko włożyć w znaczniki Div oraz Span, tylko co to da? Ważne jest, by kod był semantyczny, by znaczniki odpowiadały typowi zawartości - stąd mamy te wszystkie dziwne rzeczy jak Abbr, Acronym, Q, Cite czy Address. Do nagłowków winny być stosowane znaczniki H1, H2, … H6. Czy 6 poziomów nagłowków to za mało (no dobrze - czasami tak)? Przede wszystkim, gdy nie mamy dostępu do arkusza stylów to strona ta wygląda jako tako - widać gdzie akapit, gdzie lista, gdzie obrazek. Po drugie - tekst znajdujący się w znacznikach nagłówków ma wyższy priorytet dla wyszukiwarek internetowych niż w jakiś spanach czy czymś takim.
Strona tej firmy, mimo iż całkiem przyjemna, nie ustrzegła się błędów. A szkoda, bo dobrze się zapowiadała na pierwszy mój rzut oka.
Liczba komentarzy: 7
»Wątek RSS dla komentarzy tego wpisu · Adres trackback
marzec 19, 2006 godzina 11:49
To są informacje sprzed 5-6 lat.
Pokaż mi zrzut ekranowy ze współczesnej przeglądarki, która nie wyświetla poprawnie strony w kodowaniu Windows-1250.
Zrobiłem sobie taką stronę testową: http://vroobelek.iq.pl/temp/windows1250.html
Działa:
- pod Mac’em: na Safari (http://www.snugtech.com/safaritest/)
- pod linuksem: lynx, links, firefox, konqueror, epiphany.
Jasne, standardami są UTF-8 lub ISO, tych należy używać, ale JEŚLI ktoś z jakiś powodów użyje Windows-1250, to dla użytkowników nie ma to żadnego znaczenia.
marzec 19, 2006 godzina 16:49
A potrafisz mi wytłumaczyć po co end-userowi semantyka kodu, po co MIME application/xml+xhtml, jeśli to zwykłe www zrobione przez firmę na jej własne potrzeby? Jeśli im to pasuje, to co to obchodzi Ciebie?? Bezsens…
marzec 19, 2006 godzina 17:36
Co do klasy nazywanej ‘naglowek’ to chyba zbyt się emocjonujesz: każdy może sobie nazywać własne selektory etc. jak chce, prawda? :)
Gorzej, gdy obejmuje coś, co powinno być ujęte w H* — ale tego akurat nie wiemy, bo o tym nie piszesz. ;]
marzec 19, 2006 godzina 17:48
m: Mnie obchodzi to o tyle, że w ramach hobby zdarza mi się próbować ludziom tłumaczyć czym są standardy i jak należy je stosować. I czego nie robić - na konkretnych przykładach z róznych stron. Stąd cały “cykl” dziwnych fragmentów kodu.
Semantyka kodu end-userowi przydaje się tylko w wypadku, gdy nie ma dostępu do arkusza stylów CSS. Innego zastosowania nie widzę szczerze mówiąc. Ale czy to argument, aby wszystko oprzeć o znaczniki Span i Div?
Robert: Masz punkt. Argument źle dobrany. Choć oczywiście prawdą jest, że twórcy przeglądarek nie muszą implementować standardów Windows-xxxx. Ale chyba wszyscy to zrobili.
Ale w przypadku XML-a - a XHTML 1.1 jest aplikacją XML - dla XML dostępne standardy kodowania to EUC-JP, ISO 8859-1 do ISO-8859-9, ISO-10646-UCS-2, ISO-10646-UCS-4 oraz Unicode. Nic ponadto. To jest tylko dobra wola autorów implementacji.
PS. Kodowania te zostały wzięte z książki “XML. Vademecum.” wydawnictwa Microsoft Press ;-)
Choć widzę, że pierwsza próba “nowych” dziwadełek, wraz z głębszymi komentarzami dotyczącymi znalezionych problemów, to ujawnienie mojego niedostatecznego przygotowania do tematu. No cóz, spróbujemy poprawy wraz z następnym odcinkiem który kiedyś się pojawi :-)
[added]
krzychu: Tja. Widzę. Źle się chyba wyraziłem. No trudno. Następnym razem pomyślę zanim coś uznam za “dziwadełko”. I spróbuję to lepiej opisać o co mi chodzi. Bo oczywiście, że nazwa nie ma nic do rzeczy - ale to akurat był nagłówek :-)
marzec 19, 2006 godzina 17:56
A tak, windows-1250 nie jest oczywiście dostępnym kodowaniem dla xml.
Zresztą dodałem sobie na początku deklarację:
<?xml version=1.0 encoding=windows-1250 ?>
no i już firefox takiej strony nie pokazał. :)
marzec 19, 2006 godzina 18:50
Poprawiłem te komentarze. Na przyszłość - nie $ a & ;-)
Akurat parser XML-a wudowany w Gecko, tak samo jak MSXML obsługują Win-1250. Ale nie muszą. Z dobrej woli twórców jednak umieją :-)
Chyba ta dyskusja się robi jałowa. Nie mam wystarczających dowodów do poparcia moich tez, będę się musiał przyłożyć lepiej następnym razem ;-)
maj 19, 2006 godzina 07:57
To ztrarzne rze ta rosmofa jest jauowa i rze wielu łepmazteruf nie wie o czym piszeż więc napisauem ten komentaż aby dodadź ć argumentuf.
Myślę, że wszyscy zrozumieli treść powyższego wstępu (producent zaimplementował obsługę błędów) pomimo fatalnego stylu. HTML można traktować tak samo jak zwykłe języki służące do komunikacji między ludźmi a wtedy łatwiej jest zrozumieć potrzebę schludnego i semantycznego kodu. Pozdrawiam ktos trzymaj tak dalej i nie przejmuj się ludźmi małej wiary ;-) .