Validator ciągle się czepia!

Autor: Kornel Lesiński, dodano: 10-10-2004
Kategoria: Publicystyka

Artykuł traktuje Validatorze. Głównym wątkiem jest próba odpowiedzi na pytanie "Jak poprawić błędy wskazywane przez Validator W3C?".

Wstęp

Wszystkie informacje o błędach validatora są opisane na stronie Explanation of the error messages for the W3C Markup Validator.

Użycie

Strony testuje się on-line pod adresem validator.w3.org.

 

Validate by URL
Sprawdzi stronę pod wskazanym adresem. Należy pamiętać o podaniu http:// w adresie.
Validate by File Upload
Sprawdzi wskazany plik wgrany z lokalnego dysku. W ten sposób nie można sprawdzić plików PHP.


Błędy znajduje także i dodatkowo próbuje naprawić HTML Tidy.

W Operze można automatycznie wysłać do Validatora każdą aktualnie otworzoną stronę skrótem klawiszowym Ctrl+Alt+V. Są dostępne dodatkowe przyciski dla Opery umożliwiające sprawdzenie HTML i CSS.

 

Błędy

Brak DOCTYPE

Obecnie jest wiele odmian i wersji języka HTML. Zarówno przeglądarka jak i validator, aby poprawnie zinterpretować stronę, muszą wiedzieć, z jaką odmianą języka mają do czynienia. Należy wybrać i umieścić w kodzie odpowiedni DOCTYPE (lista doctype'ów na w3c). Najbardziej tolerancyjny i najczęściej stosowany jest HTML4.01 Transistional. Zaleca się używanie XHTML/1.0 Strict, znacznie nowszego i kompatybilnego z XML, ale jego użycie często przerasta umiejętności webmasterów.

there is no attribute "TOPMARGIN", "BACKGROUND", "HEIGHT"

To są niestandardowe atrybuty. Zamiast nich z powodzeniem można użyć ich odpowiedników w CSS.

Zamiast TOPMARGIN="20" wystarczy w arkuszu styli podać:

body {margin-top: 20px; padding-top: 20px;}

Padding jest teoretycznie poprawniejszy, ale tylko Opera go respektuje. Pozostałe przeglądarki używają margin, dlatego najlepiej jest podać obie wartości naraz. Ta różnica dotyczy wyłącznie tagu body.

Zamiast <td background="tlo.jpg" bgcolor="#112233"> najlepiej użyć kodu HTML:

<td class="przyklad">

oraz CSS:
przyklad {background: #123 url('tlo.jpg');}

missing attribute TYPE

Zamiast <script language="javascript"> należy użyć

<script type="text/javascript">

. VisualBasic nie powinien znaleźć się na WWW.

missing attribute ALT

Wszystkie obrazki muszą mieć atrybut ALT krótko je opisujący. Jeśli obrazek jest elementem dekoracyjnym, to zamiast zbłędnego opisu typu "zielona kropka" należy podać pusty ALT.

<img src="przyklad.jpg" alt="przykladowa opisana grafika">
<img src="kropka.gif" alt=" ">

HTML i skrypty

Mało kto zdaje sobie sprawę, że ciąg "</" nie ma prawa wystąpić w skrypcie (aby przeglądarki nierozumiejące treści skryptu mogły łatwo go ominąć). Są 2 rozwiązania:

  • Każde wystąpienie "</" zamienić na "<\/". np. document.write('<h1>hello<\/h1>');
  • Otoczyć cały skrypt blokiem CDATA:
    <script type="text/javascript">//<![CDATA[
    treść skryptu
    //]]> </script>

    Można zamiast bloku CDATA użyć komentarza HTML, ale wtedy w kodzie nie może wystąpić "--", np. var--;. Trzeba także pamiętać, że komentarz otwarty wewnątrz <script> musi być zamknięty - inaczej nie spełni swojego zadania, a wręcz spowoduje zignorowanie reszty strony przez niektóre przeglądarki.
SGML entities

Wszystkie znaki "&" w adresach muszą być zamienione na "&". Linki są także treścią HTML i jako takie muszą być w nim napisane. Jest to konieczne, aby uniknąć mylenia się parametrów w linkach ze znakami specjalnymi (encjami) HTML (np. gdyby link miał zawierać parametry nazwane nbsp, amp, pound, itp.).

Poprawianie "&" w linkach faktycznie może być uciążliwe. Na statycznych stronach można je automatycznie poprawić za pomocą HTML Tidy. W PHP należy użyć funkcji htmlspecialchars(), np.
echo '<a href=".htmlspecialchars($url).'">link</a>';

Jeśli problem dotyczy twojej strony, najwygodniej zmienić system linków, używając mod_rewrite w Apache. Zamiast strona/index.php?id=bla&bla, używać prostego strona.com/bla/bla.

Autor jest współtwórcą osiolki.net, web developer ideadesigners.co.uk

Ocena 2.64/5 (52.75%) (240 głosów)

Komentarze:



    Dodaj komentarz:


    Temat:
    Twój nick:
    Komentarz:
     

    Prosimy o kulturę wypowiedzi. Komentarze zawierające niecenzuralne zwroty, bądź obrażające inne osoby będą usuwane. Kod HTML w wypowiedziach jest niedozwolony. Wydawca nie odpowiada za treść komentarzy.