2011-07-08 14 views
5

Zauważyłem, że wiele stron internetowych jest projektowanych w XHTML Transitional, mimo że są one zgodne z najnowocześniejszymi praktykami projektowania stron internetowych. Uważam, że przejściowe oznaczało tymczasowe rozwiązanie do przenoszenia starych znaczników, co może wymagać zbyt wiele wysiłku, aby przeprojektować.Czy warto napisać XHTML Strict markup?

Wiele witryn nie sprawdza się nawet poprawnie w trybie przejściowym. Bardzo staram się przestrzegać ścisłych standardów, uważając, że niewłaściwe oznaczanie prowadzi do poważnych problemów przy debugowaniu, gdy coś nie działa. Jednak dużo pracy wymaga napisania 100% poprawnego kodu.

Ciekawi mnie, czy warto wkładać wysiłek w naukę i pisanie ścisłej zgodności XHTML.

EDYCJA: A jeśli tak, dlaczego więcej osób tego nie robi? Rzadko zdarza mi się natknąć na odpowiednią stronę stricte XHTML.

Odpowiedz

4

Krótka odpowiedź: nie.

Nigdy nie stwierdziłem, że Strict XHTML jest wart wysiłku.

Pierwszy problem polegał na tym, że wycofał wiele użytecznych funkcji HTML, a dla których nie było dobrych alternatywnych rozwiązań. Był to szczególny problem, jeśli potrzebna była kompatybilność wsteczna ze starszymi przeglądarkami (co oczywiście każdy robi). Specyfikacja Transisional nie wycofała tych funkcji, dlatego ludzie używają go raczej niż Strict.

Funkcje, które zostały wycofane zawarte tag <center> (alternatywy CSS nie były kompatybilne z różnymi przeglądarkami w tym czasie) i atrybut target dla <a> tag (który pozwala otworzyć link w nowym oknie, na karcie lub ramy; nadal nie ma innego sposobu, aby to zrobić, nikt nie przestał go używać, a HTML5 ponownie go wprowadził). Na tych samych liniach było sporo innych funkcji, ale minęło dużo czasu i nie pamiętam ich wszystkich.

Po drugie, został zaprojektowany, aby spowodować awarię przeglądarki, jeśli twój znacznik ma najmniejszy błąd. Brzmi świetnie w teorii, ale zawsze był skazany na niepowodzenie. Był to zasadniczo reakcyjny krok podejmowany przez twórców specyfikacji przeciwko rozprzestrzenianiu złej jakości kodu HTML, który był (i do pewnego stopnia nadal jest) poważnym problemem dla sieci. Ale zapomnieli o kluczowej zasadzie projektowania protokołów typu klient-serwer, czyli o tym, że serwer powinien być ściśle związany z tym, co wysyła, ale klient powinien być łagodny. Wszystkie udane protokoły klient-serwer są zgodne z tą zasadą.

Warto zadbać o to, aby Twój znacznik był ważny - w rzeczywistości jest bardzo ważny, niezależnie od tego, jaki (x) dialekt HTML, który piszesz - ale powinieneś sprawdzić, czy w fazie rozwoju, nie pozwalając przeglądarce użytkownika końcowego wykonać Twoją walidację. Jeśli jesteś dobrym programistą, powinieneś wiedzieć, że twój kod jest dobry, zanim znajdzie się w pobliżu użytkownika. I faktycznie, jeśli to spowoduje, że Twoja strona całkowicie złamie się przed użytkownikiem końcowym, to jest to katastrofa. W przypadku złamanego kodu HTML, nawet jeśli jest on bardzo poważnie uszkodzony, użytkownik może na ogół nawigować i czytać witrynę w stopniu wystarczającym do znalezienia danych kontaktowych umożliwiających zgłoszenie błędu. W przypadku przeglądarki, która respektuje ścisły typ dokumentu XHTML, niewielki błąd znaczników może spowodować, że witryna nie wyświetli niczego oprócz standardowego komunikatu o błędzie przeglądarki. Jest to bardzo kiepskie doświadczenie dla użytkownika.

Wreszcie nie dostarczył żadnych nowych funkcji. Jedyną rzeczą, której nie zrobiły starsze wersje HTML, było umożliwienie parsowania dokumentu jako dokumentu XML. To było dobre dla potwierdzenia, że ​​dokument nie zawiera błędów, ale tak naprawdę nie osiągnął zbyt wiele. Można również osadzić inne formaty XML w dokumencie za pomocą przestrzeni nazw, ale to było skomplikowane i nie osiągnęło zbyt wiele nowych.

XHTML zawsze był idealistycznym marzeniem i na szczęście znika teraz, gdy HTML5 przejął rolę nowej i ekscytującej rzeczy.

+0

Czy możesz podać kilka przykładów przydatnych przestarzałych funkcji? Wydawało mi się, że wszystkie funkcje mają dobre rozwiązanie zgodne z XHTML. – tskuzzy

+1

@tskuzzy - ok, zredagowałem odpowiedź, aby uwzględnić dwie funkcje, które uniemożliwiły mi przejście na XHTML Strict w ciągu dnia. – Spudley

1

nr

Pisałem ścisłego znaczników na kilka lat i nie ma żadnych zauważalnych korzyści, które widzę.

Wolałbym używać HTML5 <!DOCTYPE html> po prostu dlatego, że jest czystszy i pogarsza się w IE.

4

Kiedyś pisałem wszystkie XHTML strict, ale to dlatego, że dbałem o to, by mój znacznik był semantycznie poprawny. Niestety większość twórców stron internetowych (a) nie dba o semantycznie poprawny kod lub (b) nie zdaje sobie sprawy, że jest nawet problem.

Naprawdę, jeśli chcesz pisać w trybie ścisłym, po prostu napisz swoją stronę, a następnie uruchom ją za pomocą walidatora. Powie Ci, co jest nie tak i co musisz naprawić. Nauczysz się, jak postępujesz według tego, co powinieneś lub czego nie powinieneś robić. Patrząc na official spec może pomóc ogromnie.

W innej notatce polecam również przejście do HTML5. HTML5 nie ma typów takich jak "ścisły" i "przejściowy". Jeśli chcesz pisać według bardziej rygorystycznych zasad, możesz. Jeśli chcesz pisać według przegranych reguł, możesz. Czuję też, że jest czystszy dookoła i lubię pisać HTML5 o wiele bardziej niż XHTML. Ponownie, uruchomienie witryny za pomocą walidatora da ci wgląd w rzeczy, które robisz, które są nieprawidłowe.

Jeśli chodzi o to, co więcej osób zaczyna robić, powiedziałbym, że jest duży nacisk na HTML5. I nie tylko dlatego, że jest to nowe i fajne, ale ponieważ rozwiązuje wiele uciążliwości i irytacji, które istniały w XHTML i HTML4.

Tak więc, moim zaleceniem byłoby pójść w tym kierunku.

+0

Absolutnie zgadzam się, że ważne jest, aby pisać prawidłowy znacznik, ale XHTML Strict nigdy nie był rozwiązaniem tego problemu, ponieważ wprowadził walidację przed użytkownikiem, z okropnymi komunikatami o błędach, jeśli jest nawet trochę nie tak: takie testy powinny być zrobione na długo, zanim dotrze do użytkownika. – Spudley

0

Powiedziałbym, że tak (ish).

Zazwyczaj wybór ścisłej wersji wskazywałby, jakie standardy należy stosować w przyszłości. tj. przestarzałe atrybuty w xhtml strict (ale dozwolone w przejściowym), nie pojawią się w nowszej wersji standardu.

Teraz moja zasada jest trochę zepsuta, z ruchem od xhmtl do html5. Ponieważ html5 nie ma ścisłej wersji, ale powiedziałbym, idź do html5 (lub nawet xhtml5) zamiast do html strict.

Ale ogólnie rzecz biorąc, staram się trzymać najściślejszej wersji czegokolwiek, co pozwala ci skupić się na najlepszej praktyce, gotowej do następnej wersji, tzn. Rzeczy nie idą wstecz (teoretycznie).