Что такое валидация html кода?

Html, как известно, язык разметки, который является основой для подавляющего большинства страниц в интернете. Как у любого другого языка, у html есть правила написания - синтаксис. Валидный html-код это код, который соответствует всем рекомендациям написания кода - спецификации.

Спецификации. Что это?

Как у любого другого языка, у HTML существуют свои правила написания - синтаксис. Эти правила пишет команда профессионалов, заинтересованных в развитии html и занимающихся разработкой новых элементов, отвечающих параметрам современных устройств, актуальных современным технологиям и, самое главное, отвечающих современным требованиям безопасности. Именно правила написания элементов html, установленные разработчиками языка, называются спецификацией.

После разработки основной части нового релиза html, разработчики языка выкладывают спецификацию к нему в публичный доступ на обсуждение всех желающих вебмастеров мира, внимательно читают комментарии и, если потребуется, вносят правки. После завершения всеобщего обсуждения, новый релиз языка выходит в мир и им можно пользоваться.

Каждый документ, использующий html код, должен следовать правилам языка. Последняя опубликованная версия HTML - пятая и стала относительно сложная, так что вебмастера, не прочитавшие последнюю версию спецификации, легко могут сделать ошибки в коде.

Cколько спецификаций существует.

Начиная с HTML5, разработчики и производители браузеров могут выбирать между двумя разновидностями одного и того же языка разметки: спецификациями, разработанными консорциумом W3C, и тех, что разработаны WHATWG.

В принципе эти спецификации очень похожи, однако, с годами, между ними все больше и больше отличий. Большинству вебмастеров не стоит сильно беспокоиться по этому поводу: или эти отличия спецификаций не скажутся на их проектах, или разработчики браузеров будут поддерживать оба стандарта языка.

Однако при использовании в своих проектах только что появившихся нововведениях в одной из спецификаций, у вебмастеров могут возникнуть проблемы. Например Дэвид Бэрон из Mozilla заявил:

Если HTML-спецификации W3C и WHATWG различаются, то мы стараемся следовать спецификации WHATWG.

Зачем нужна валидация?

Поисковые роботы сканируют страницы вашего сайта для поиска релевантного контента. Поисковые роботы подчиняются стандартам HTML. Если в вашем HTML коде есть грубые ошибки, то роботы могут запутаться и не найти контенте на вашей странице. Не закрытый тег или кривая верстка сильно ударят по изучению вашего сайте роботами. Наличие битых ссылок существенно замедлит индексацию вашего ресурса. Валидный код в разы упрощает индексацию страниц вашего сайта и позволяет им быстрее оказаться в выдаче.

Разбор ошибок на примере главной страницы сайта Клондайка.

В данной части статьи разберем валидацию html5 по спецификации W3C на примере главной страницы сайта студии Клондайк.

Как проверить HTML код на валидность?

Для проверки валидации нашего HTML5 кода используем известный HTML Validator для проверки соответствия кода W3C стандартам. Не смотря на то, что не все HTML ошибки приведут к проблемам поискового ранжирования, некоторые из них могут затруднить поисковым системам успешно индексировать страницы и могут испортить все ваши SEO усилия.

Переходим на сайт валидатора от W3C, выбираем вкладку "Validate by URL", в поле "Address" вставляем адрес проверяемого сайта и жмем кнопку "Check".

Инструкция к валидатору W3C

Через пару секунд получаем результат проверки.

В нашем случае было обнаружено 36 ошибок.

Рассмотрим каждую ошибку по отдельности.

Как мы сразу видим, валидатор показывает что на нашей главной странице присутствует сразу 24 однотипных ошибки - у нас не проставлен атрибут alt у картинок.

Смотрим исходный код сайта:

Действительно, у картинок не прописан атрибут alt.

Зачем нужен этот атрибут? Когда загружается страница, вначале загружается текст из атрибута alt, а уже после идёт смена текста на изображение. Если в браузере отключена загрузка изображений, то на месте изображения будет альтернативный текст (из атрибута alt).

Что ж, приступим к исправлению. Для каждой картинки мы пропишем соответствующий ей атрибут alt.

Далее убираем лишний закрывающий тег </section>

Валидатор показывает нам, что на проверяемой странице сразу в 4 местах использован устаревший тег nobr.

Этот тег использован у слов которые пишутся через дефис. По правилам русского языка, такие слова не следует разрывать переносом на другую строку, если слово целиком не умещается на предыдущей строке. На мобильных устройствах очень большая вероятность что такие слова будут перенесены из-за небольших размеров экранов. Поэтому, ради соответствия правилам русского языка и грамотного отображения контента, мы пожертвуем 100% валидацией и оставим тег <nobr> в коде страницы.

Переходим к следующей ошибке

Смотрим исходный код и находим искомое место:

	<input type="submit" value="OK" name="OK" value="Подписаться">

Идем в шаблон компонента, находим:

	<input type="submit" value="OK" name="OK" value="<?=GetMessage("subscr_form_button")?>">

Удаляем лишнее value="<?=GetMessage("subscr_form_button")?>" и у нас остается:

	<input type="submit" value="OK" name="OK">

Далее смотрим — валидатор обращает наше внимание на том, что тегу <nav> не обязательно прописывать атрибут role.

Однако это не является ошибкой, поэтому не будем трогать.

Отсутствие заголовка внутри тега <section> тоже не является ошибкой, поэтому дабы не сломать шаблон, не станем лезть в него и править то, что валидатор W3C HTML5 не указал как Error.

В данном случае валидатору не понравился значок & и предлагает нам заменить его на &. Однако, если мы глянем исходный код:

	<link href='http://fonts.googleapis.com/css?family=PT+Sans:400,700&subset=latin,cyrillic' rel='stylesheet' type='text/css'>

то увидим что делать нам этого никак нельзя. Поэтому просто игнорим это и идем дальше.

В этому случае валидатор ругается на атрибуты width и height для тега <a>.

Смотрим исходный код:

и понимаем что это API Твиттра и ничего мы с ним поделать не можем. Так что пропускаем.

У нас остался один не исправленный, или хотя бы не разобранный пункт - не прописан alt у очередной картинки.

Лезем в исходный код и видим что это код Яндекс.Метрики.

Ок. Сюда нам тоже лезть не с руки, ибо такой код генерирует сам Яндекс.

Выводы

Вот мы и прошлись по всем ошибкам которые нам показал валидатор W3C HTML5. Что мной было уяснено в ходе написания этой статьи:

  • Верстка должна быть валидной уже на этапе написания шаблона сайта, ибо исправлять верстку в дальнейшем - выйдет себе дороже.
  • Иногда не получится выкрутиться и написать полностью валидный шаблон сайта. Некоторые теги устарели для спецификации, однако они выполняют очень важную роль для отображения элемента или контента. Или вставляя на сайт виджеты со сторонних ресурсов мы рискуем вставить код на который будет ругаться валидатор, т.к. внешний ресурс, в силу различный обстоятельств, не позаботился о том чтобы код виджета был валидным.
  • Для того чтобы код сайта был 100% валиден HTML5 по W3C разработчику сайта придется потратить в несколько раз больше времени, в то время как клиент не всегда готов оплачивать время затраченное на вылизывание шаблона.

Ну и на последок проверим на соответствие рекомендациям спецификации HTML5 по W3C несколько популярных сайтов:


Интересные статьи