В процессе написания плагинов для jQuery столкнулся с необходимостью добавлять расширенные атрибуты к некоторым известным тэгам для облегчения передачи параметров плагинам (получается красиво и просто), но так же хочется без проблем проходить валидацию страницы. Небольшой эксперимент поставил перед выбором: или валидный html или расширенные атрибуты…
Валидация верстки популярных сайтов
Не буду писать предисловий, перейду сразу к делу. Никто не задавался целью проверить валидность html кода нескольких жутко популярных сайтов?
С помощью полезного пункта меню в браузере Opera были проверены главные страницы вот этих сайтов:
1. google.com (английская версия)
2. yandex.ru
3. rambler.ru
4. bing.com
5. mail.ru
6. vkontakte.ru
7. facebook.com (русская версия)
8. twitter.com
9. wikipedia.org
10. artlebedev.ru
То есть 4 известных поисковика, 5 популярных сайтов и еще 1 просто хохмы ради.
С помощью полезного пункта меню в браузере Opera были проверены главные страницы вот этих сайтов:
1. google.com (английская версия)
2. yandex.ru
3. rambler.ru
4. bing.com
5. mail.ru
6. vkontakte.ru
7. facebook.com (русская версия)
8. twitter.com
9. wikipedia.org
10. artlebedev.ru
То есть 4 известных поисковика, 5 популярных сайтов и еще 1 просто хохмы ради.
Нужна ли HTML-валидация?!
Перевод
Что такое HTML-валидация?
HTML-валидатор производит несколько проверок Вашего кода. Основные из них:
- Валидация синтаксиса — проверка на наличие синтаксических ошибок. <foo bar="baz"> является корректным синтаксисом, несмотря на то, что <foo> не является допустимым HTML-тэгом, так что проверка синтаксиса является минимально полезной для написания хорошего HTML.
- Проверка вложенности тэгов — тэги должны быть закрыты в обратном порядке относительно их открытия. Например, эта проверка отлавливает ошибки с неправильно закрытыми <div>.
- Валидация DTD — проверка соответствия Вашего кода указанному Document Type Definition. Она включает проверку названий тэгов, атрибутов, и «встраивания» тэгов (тэги одного типа внутри тэгов другого типа)
- Проверка на посторонние элементы — проверка выявляет все, что есть в коде, но отсутствует в DTD. Например, пользовательские тэги и атрибуты.
Имейте ввиду, что это логические проверки, и не важно как реализован валидатор. Если хотя бы одна из проверок не проходит успешно, то HTML считается невалидным. И в этом заключается проблема.