Исправление html и css c помощью валидатора W3C. Нужна ли HTML-валидация

В этой статье я познакомлю с понятием «валидность» кода сайта (html & css). Надеюсь все помнят, html — это структура сайта. Css — правила и стили для тегов, которые описаны в html.

Будем разбираться с самых низов: теория, а далее перейдем к практике. Так же вы найдете ответы на следующие вопросы: что такое валидность html и css кода, зачем она нужна, почему поисковые системы любят чистый / валидный код. А самое то главное покажу на примерах как проводить проверку валидности кода сайта.

Зачем нужна проверка валидности html и css кода

Валидность — по-другому чистый код (без ошибок)

Константа № 1 . Валидность кода сайта позволяет правильно отображать сайт в разных браузерах т.е. вся визуальная и функциональная составляющая сайта отображается и работает правильно. Чаще всего получается, что браузер обрабатывает и отображает корректно все элементы сайта, но это не говорит о том, что код чист и гладок как попка младенца.

Константа № 2. Чистый код (html и css) поощряют поисковые машины (Yandex, Google). Говоря по-русски, когда робот поисковой машины приходит на ваш ресурс и видит что валидность соблюдена, то соответственно поисковой робот будет знать, что этот ресурс без ошибок, а значит к отношение к сайту в лучшую сторону.

Из личного опыта: В моей практике была ситуация, когда новые статьи на блоге ни в какую не хотели залетать в поисковую выдачу. Вроде делаешь то все правильно, а в выдаче Яндекса нет и все! Вот что делать, куда копать? Кто-то подумает фильтры — фильтры, но ничего такого нет.

Проверил сайт на валидность html кода, и как я был удивлен и понял где была собака зарыта. Оказалось что в коде отсутствовал закрывающий тег , а это тег специальный который закрывает участки кода или ссылки от поисковой машины Яндекса. И что же получается у меня было? Вся статья закрыта от индексации. Вот и ответ на вопрос: «Почему в поисковой выдаче нет». Потом естественно я эту ошибку устранил.

Перейдем от голого текста с теорией к практике, и научимся проводить проверку валидации онлайн

Здравствуйте, дорогие друзья! Рад видеть вас на моём блоге! Сегодня речь пойдет про валидность HTML на сайте в целом и его отдельных страницах. Валидность — это соответствие кода определённым стандартам. Над разработкой веб-стандартов работает Консорциум World Wide Web (W3C) — это международное сообщество, в котором состоят организации, штатные сотрудники и общественность.

Миссия консорциума заключается в том, чтобы раскрыть весь потенциал всемирной паутины, разрабатывая и внедряя протоколы и руководящие принципы, обеспечивающие долгосрочный рост сети Интернет.

На официальном сайте W3C предоставлены очень полезные онлайн-инструменты для вебмастеров, одним из них является валидатор — это бесплатный сервис, позволяющий проверить приверженность сайта современным веб-стандартам.

К сожалению, сервис полностью на английском языке, но если вы чуточку разбираетесь в разработке и вёрстке, то непременно поймёте его суть и посыл 😉

Итак, на главной странице расположены три вкладки:

  • Validate by URI — проверка указанного URL-адреса;
  • Validate by File Upload — проверка загруженного файла;
  • Validate by Direct Input — проверка путем прямого ввода исходного кода.
  • Для запуска анализатора нужно переключиться на требуемую вкладку, в качестве примера я буду рассматривать проверку по URL-адресу. Под ссылкой More Options скрываются дополнительные опции, нажмите на нее, чтобы получит доступ к настройкам:

    • Character Encoding — кодировка символов. WordPress использует UTF-8, но можно оставить стандартное значение «Detect automatically» для автоматического определения кодировки.
    • Document Type — тип документа (HTML, XHTML, SVG и др.). Поставьте флажок Only if missing, если тип документа не задан на странице и его нужно задать вручную для проверки.
    • List Messages Sequentially — выводить ошибки и предупреждения последовательным списком;
    • Group Error Messages by Type — группировать ошибки и предупреждения по типу;
    • Show Source — показать исходный код;
    • Show Outline — показать структуру документа;
    • Clean up Markup with HTML Tidy — очистка разметки с помощью HTML-Tidy;
    • Validate error pages — проверять страницы с ошибками, например, с 404 ошибкой;
    • Verbose Output — подробный вывод. Если честно, я не заметил разницы при включении этой опции, если знаете за что она отвечает — поделитесь в комментариях, буду очень признателен.

    Когда все настройки выставлены, нажимайте кнопку Check для старта HTML валидатора. Если документ не имеет ошибок, появится надпись:

    Document checking completed. No errors or warnings to show.

    В переводе на русский язык это означает: «Проверка документа завершена. Ошибки или предупреждения не найдены». Отлично!

    В том случае, если документ не пройдёт проверку, увидим простую надпись об её завершении:

    И конечно же список сообщений, которые содержат сведения об ошибках и предупреждениях с пояснениями, а также ссылки на конкретные строки документов, но только в том случае, если была включена опция Show Source.

    На скриншоте ниже представлен фрагмент проверки главной страницы Яндекса. Странно это видеть, даже не ожидал, ведь Яндекс сам принимает участие в разработке стандартов W3C… Ну да ладно, соблюдать абсолютно все стандарты действительно сложно, тем более для такого крупного портала.

    В начале своего пути Блог Свободного Вебмастера содержал очень много ошибок и предупреждений. По мере изучения мне удалось снизить их количество, а со временем и вовсе избавиться. Впредь буду придерживаться стандартов W3C, хотя некоторые плагины добавляют ложку дёгтя в бочку мёда… Время покажет!

    Так зачем же нам валидный код ? Валидация веб-документов — важный шаг, который может значительно помочь улучшить и обеспечить их качество, а также сэкономить много времени и денег. Некоторые специалисты уверяют, что правильный код может благоприятно повлиять на в поисковой выдаче! Проверьте свой сайт и расскажите о результатах!

    Производит несколько проверок Вашего кода. Основные из них:

  • Валидация синтаксиса - проверка на наличие синтаксических ошибок. является корректным синтаксисом, несмотря на то, что не является допустимым HTML-тэгом, так что проверка синтаксиса является минимально полезной для написания хорошего HTML.
  • Проверка вложенности тэгов - тэги должны быть закрыты в обратном порядке относительно их открытия. Например, эта проверка отлавливает ошибки с неправильно закрытыми .
  • Валидация DTD - проверка соответствия Вашего кода указанному Document Type Definition. Она включает проверку названий тэгов, атрибутов, и «встраивания» тэгов (тэги одного типа внутри тэгов другого типа)
  • Проверка на посторонние элементы - проверка выявляет все, что есть в коде, но отсутствует в DTD. Например, пользовательские тэги и атрибуты.
  • Имейте ввиду, что это логические проверки, и не важно как реализован валидатор. Если хотя бы одна из проверок не проходит успешно, то HTML считается невалидным. И в этом заключается проблема.Аргументы Основным аргументом за валидацию HTML является обеспечение кроссбраузерности. Каждый браузер имеет свой парсер и «скармливать» ему то, что понимают все браузеры - это единственный путь быть уверенным, что Ваш код будет работать правильно во всех браузерах. Поскольку каждый браузер имеет свой механизм коррекции ошибок HTML Вы не можете полагаться на невалидный код.

    Основным аргументом против валидации является то, что она слишком строгая и не соответствует тому, как на самом деле работают браузеры. Да, HTML может быть невалидным, но все браузеры могут обрабатывать некоторый невалидный код одинаково. Если я готов взять на себя ответственность за неправильный код, который я пишу, то я не должен беспокоиться о проверке. Единственное, о чем я должен заботиться - это чтобы оно работало.

    Моя позиция Это один из немногих случаев, когда я публично говорю о своей позиции по отношению к чему-нибудь. Я всегда был среди противников валидации, основываясь на том, что валидатор слишком строг, чтобы быть практичным в реальных приложениях. Есть вещи, которые поддерживаются большинством браузеров ( в , после ), которые являются невалидными, но иногда очень необходимы для правильной работы.

    Вообще, моей наибольшей проблемой валидации является проверка #4 (на посторонние элементы). Я сторонник использования пользовательских атрибутов в HTML тэгах для хранения дополнительных мета-данных, относящихся к определенному элементу. В моем понимании, это, например, добавить атрибут foo, когда у меня есть данные (bar), которые мне надо ассоциировать с определенным элементом. Иногда люди перегружают существующие атрибуты для этих целей только для того, чтобы пройти валидацию, несмотря на то, что атрибут будет использовать не по назначению. Для меня это бессмысленно.

    Секрет браузеров заключается в том, что они никогда не проверяют соответствие HTML-кода указанному DTD. Doctype, который Вы указали в документе, переключает парсер браузера в определенный режим, но это не приводит к загрузке doctype и проверке кода на соответствие ему. То есть, парсер браузеров обрабатывает HTML с некоторыми допущениями невалидности, вроде самозакрывающихся тэгов и блочных элементов внутри строковых (я уверен, что есть и другие).

    В случае пользовательских атрибутов, все браузеры парсят и распознают синтаксически корректные атрибуты как допустимые. Это делает возможным получить доступ к таким атрибутам через DOM с помощью Javascript. Так почему я должен беспокоиться о валидности? Я буду продолжать использовать свои атрибуты и я очень рад, что HTML5 формализует их.

    Лучший пример технологии, которая приводит к невалидному HTML, но имеет огромное значение, - это ARIA . ARIA работает с помощью добавления новых атрибутов в HTML 4. Эти атрибуты предоставляют дополнительное семантическое значение HTML-элементам и браузер способен передать эту семантику вспомогательным устройствам для помощи людям с ограниченными физическими возможностями. Все основные браузеры сейчас поддерживают разметку ARIA. Однако, если Вы будете использовать эти атрибуты, у Вас будет невалидный HTML.

    Насчет пользовательских тэгов - я думаю, что в добавлении на страницу синтаксически корректных новых тэгов нет ничего плохого, но я не вижу особого практического смысла в этом.

    Чтобы прояснить мою позицию: я считаю, что проверки #1 и #2 являются очень важными и должны проводиться всегда. Проверку #3 я тоже считаю важной, но не столь, как первые две. Проверка #4 очень сомнительна для меня, так как она задевает пользовательские атрибуты. Я считаю, что, как максимум, пользовательские атрибуты должны быть помечены как предупреждения (а не ошибки) в результатах проверки, чтобы была возможность проверить, не ошибся ли я при вводе названия атрибута. Отметка пользовательских тэгов как ошибок, возможно, хорошая идея, но тоже имеет некоторые проблемы, например, при встраивании содержимого в другой разметке - SVG или MathML.

    Валидация ради валидации? Я считаю, что валидация ради валидации - это крайне глупо. Валидный HTML означает только лишь то, что все 4 проверки прошли без ошибок. Есть несколько важных вещей, которых не гарантирует валидный HTML:
    • валидный HTML не гарантирует accessibility;
    • валидный HTML не гарантирует хороший UX (user experience);
    • валидный HTML не гарантирует функционирующий сайт;
    • валидный HTML не гарантирует корректное отображение сайта.
    Валидный HTML может служить поводом гордиться самим собой, но само по себе это не является показателем мастерства. Ваш валидный код не всегда лучше выполняет свои функции чем мой невалидный.Валидация HTML5 Валидация HTML5 исправит некоторые проблемы, которые были с валидацией HTML 4. Она явно позволяет употребление пользовательских атрибутов (они должны начинаться с data-). Это позволит моему коду пройти проверку на валидность для HTML5. Конечно, есть некоторые моменты в валидаторе HTML5, с которыми я не согласен, но я считаю, что он намного больше соответствует практическим потребностям чем валидатор HTML 4. Заключение Я считаю, что некоторые составляющие HTML-валидации крайне важны и полезны, но я не хочу быть ее заложником, потому что я использую свои атрибуты. Я горжусь тем, что я использую ARIA в моей работе и мне безразлично то, что это считается невалидным кодом. Опять же, из четырех проверок валидатора у меня есть проблемы только с одной. И HTML5 валидатор избавит меня от большинства этих проблем.

    Я знаю, что для многих это спорная тема, поэтому, пожалуйста, воздержитесь от чисто эмоциональных высказываний в комментариях.

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

    Проверка веб-кода на валидность - это проверка его на соответствие стандартам и сертификатам W3C.
    W3C (Консорциум Всемирной паутины) - это технические законодатели Сети, которые разрабатывают стандарты и правила для написания кода. Сертификаты и стандарты W3C обязательны к исполнению для всех, кто работает в Сети. Единые стандарты в правописании кода нужны для того, чтобы все Сетевые приложения общались в едином языковом пространстве, на стандартных языках, и понимали друг друга во время работы с веб-документами.
    W3C не только создает Сетевые стандарты, но и активно способствует в их соблюдении.
    W3C имеет онлайн-сервисы для проверки кода HTML/XHTML и CSS на валидность.
    Проверить код на соответствие стандартам W3C при помощи валидаторов W3C - лучший выход.

    Бесплатные онлайн-сервисы от W3C для проверки кода на валидность.
    Валидаторы от W3C имеют интуитивно понятный интерфейс. Работать с ними легко и просто.
    Сервисы дают возможность проводить проверку в трех режимах и имеют, соответственно, всего три кнопки:
    Проверить URL
    (для проверки нужно указать адрес любой страницы сайта, доступного в Сети)
    Проверить загруженный файл
    (для проверки нужно указать путь к проверяемому файлу)
    Проверить набранный текст
    (для проверки нужно скопировать и вставить в окно валидатора проверяемый код)

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

    Как пользоваться онлайн-валидаторами от W3C .
    обращаемся к валидатору, по адресу:
    (http://validator.w3.org/ - для проверки HTML или XHTML
    http://jigsaw.w3.org/css-validator/ - для проверки CSS)
    в открывшемся окне валидатора выбираем один из трех способов проверки
    (url-адрес страницы сайта, локальный файл или набранный текст)
    переходим на соответствующую вкладку
    указываем объект проверки
    (вводим url-адрес проверяемой веб-страницы,
    либо путь к файлу на локальном компьютере,
    либо вставляем проверяемый код, соответственно)
    жмем кнопку «Проверить» и смотрим на результат проверки

    Сервисы от W3C проверяют код на валидность и сразу указывают на ошибки, буде таковы имеются. Каждая ошибка будет прокомментирована. Комментарии, к сожалению, на инглиш. Так что, Google-переводчик - в помощь.Остается только, при необходимости, исправить код и снова проверить его на соответствие.
    Валидаторы от W3C полностью бесплатны и автоматизированы. Поэтому, долбить их своей работой над ошибками можно долго и безнаказанно. Для этого, эти сервисы и созданы.

    Нормальная альтернатива валидаторам W3C.
    Кроме онлайновых серваков W3C по проверке веб-кода, очень хороший результат дает расширение HTML Validator для браузера Mozilla Firefox. Наличие такого дополнения в браузере облегчает работу веб-мастера и лишний раз доказывает, что Mozilla Firefox - «рульный» браузер.
    Скачать расширение для мазилки можно здесь: http://users.skynet.be/mgueury/mozilla/

    Установить расширение можно так:
    - Запускаем Firefox.
    Дальше: Меню - Инструменты - Дополнения - Расширения.
    И, просто перетаскиваем мышью загруженный файл (расширение xpi) в открывшееся окно.
    После этого, расширение установится автоматически.

    или (второй способ):
    - Запускаем Firefox.
    Дальше: Меню - Файл - Открыть файл - указать путь к скачанному файлу.
    После этого, расширение, опять-таки, установится автоматически.

    После завершения установки - нужно будет перезапустить браузер.
    При перезапуске - появится окно с выбором способа проверки веб-страниц:
    "HTML Tidy", или "SGML Parser", или "Serial"
    Выбираем способ "SGML Parser", как наиболее удобный и приемлемый вариант. Жмем соответствующую кнопочку.Теперь, в окне браузера, будет отображаться ярлык-значок дополнения, а рядом с ним - кнопка меню настройки дополнения.
    У меня - вверху и справа:

    HTML Validator для браузера Mozilla Firefox работает полностью в автоматическом режиме. Ему не нужно показывать, что проверять. Он проверяет все документы, которые будут открыты в Mozilla Firefox. Это очень удобно. Достаточно взглянуть на цвет ярлычка программы, чтобы понять, есть или нет проблемы в открытом документе.
    В зависимости от результатов проверки, цвет значка может быть зеленый, желтый или красный, что обозначает следующее:
    зеленый - «нет ошибок», все «ОК»
    желтый - «нет ошибок, но есть предупреждения»
    красный - «есть ошибки»

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

    Проверка валидности HTML кода сайта обязательно входит в мой . Но не нужно переоценивать значимость ошибок валидации на SEO продвижение — она очень мала. По любой тематике в ТОП будут сайты с большим количеством таких ошибок и прекрасно себе живут.

    НО! Отсутствие технических ошибок на сайте является фактором ранжирования, и поэтому пренебрегать такой возможностью не стоит. Лучше исправить, хуже точно не будет. Поисковики увидят ваши старания и дадут маленький плюсик в карму.

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

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

    • Error: Duplicate ID min_value_62222

    И за этой ошибкой такое предупреждение.

    • Warning: The first occurrence of ID min_value_62222 was here

    Это значит, что дублируется стилевой идентификатор ID, который по правилам валидности html должен быть уникальным. Вместо ID для повторяющихся объектов можно использовать CLASS.

    Исправлять это желательно, но не очень критично. Если очень много таких ошибок, то лучше исправить.

    Аналогично могут быть еще такие варианты:

    • Error: Duplicate ID placeWorkTimes
    • Error: Duplicate ID callbackCss-css
    • Error: Duplicate ID Capa_1

    Следующее очень распространенное предупреждение.

    • Warning: The type attribute is unnecessary for JavaScript resources

    Это очень частая ошибка при проверке валидации сайта. По правилам HTML5 атрибут type для тега script не нужен, это устаревший элемент.

    Аналогично такое предупреждение для стилей:

    • Warning: The type attribute for the style element is not needed and should be omitted

    Исправлять эти предупреждения желательно, но не критично. При большом количестве лучше исправить.

    • Warning: Consider avoiding viewport values that prevent users from resizing documents

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

    Я считаю это предупреждение очень нежелательным, для пользователя неудобно, это минус к поведенческим. Устраняется удалением этих элементов — maximum-scale=1.0 и user-scalable=no.

    • Error: The itemprop attribute was specified, but the element is not a property of any item

    Это микроразметка, атрибут itemprop должен находиться внутри элемента с itemscope. Я считаю эту ошибку не критичной и можно оставлять как есть.

    • Warning: Documents should not use about:legacy-compat, except if generated by legacy systems that can’t output the standard doctype

    Строка about:legacy-compat нужна только для html-генераторов. Здесь нужно просто сделать но ошибка совсем не критичная.

    • Error: Stray end tag source

    Если посмотреть в коде самого сайта и найти этот элемент, видно, что одиночный тег прописан как парный — это не верно.

    Соответственно, нужно убрать из кода закрывающий тег . Аналогично этой ошибке могут встречаться теги

    • Error: An img element must have an alt attribute, except under certain conditions. For details, consult guidance on providing text alternatives for images

    Все картинки должны иметь атрибут alt, я считаю эту ошибку критичной, ее нужно исправлять.

    • Error: Element ol not allowed as child of element ul in this context. (Suppressing further errors from this subtree.)

    Здесь не верно прописана вложенность тегов. В

      должны быть только
    • . В данном примере эти элементы вообще не нужны.

      Аналогично могут быть еще такие ошибки:

      • Element h2 not allowed as child of element ul in this context.
      • Element a not allowed as child of element ul in this context.
      • Element noindex not allowed as child of element li in this context.
      • Element div not allowed as child of element ul in this context.

      Это все нужно исправлять.

      • Error: Attribute http-equiv not allowed on element meta at this point

      Атрибут http-equiv не предназначен для элемента meta, нужно убрать его или заменить.

      Аналогичные ошибки:

      • Error: Attribute n2-lightbox not allowed on element a at this point.
      • Error: Attribute asyncsrc not allowed on element script at this point.
      • Error: Attribute price not allowed on element option at this point.
      • Error: Attribute hashstring not allowed on element span at this point.

      Здесь также нужно или убрать атрибуты n2-lightbox, asyncsrc, price, hashstring или заменить их на другие варианты.

      • Error: Bad start tag in img in head

      Или вот так:

      • Error: Bad start tag in div in head

      Тегов img и div не должно быть в . Эту ошибку нужно исправлять.

      • Error: CSS: Parse Error

      В данном случае здесь не должно быть точки с запятой после скобки в стилях.

      Ну такая ошибка, мелочь, но не приятно) Смотрите сами, нужно убирать это или нет, на продвижение сайта никакой совершенно роли не окажет.

      • Warning: The charset attribute on the script element is obsolete

      В скриптах уже не нужно прописывать кодировку, это устаревший элемент. Предупреждение не критичное, на ваше усмотрение.

      • Error: Element script must not have attribute charset unless attribute src is also specified

      В этой ошибке нужно убрать из скрипта атрибут charset=»uft-8″, так как он показывает кодировку вне скрипта. Я считаю, эту ошибку нужно исправлять.

      • Warning: Empty heading

      Здесь пустой заголовок h1. Нужно удалить теги или поместить между ними заголовок. Ошибка критичная.

      • Error: End tag br

      Тег br одиночный, а сделан как будто закрывающий парный. Нужно убрать / из тега.

      • Error: Named character reference was not terminated by a semicolon. (Or & should have been escaped as &.)

      Это спецсимволы HTML, правильно нужно писать или ©. Лучше эту ошибку исправить.

      • Fatal Error: Cannot recover after last error. Any further errors will be ignored

      Это серьезная ошибка:

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

      • Error: CSS: right: only 0 can be a unit. You must put a unit after your number

      Нужно значение в px написать:

      Вот аналогичная ошибка:

      • Error: CSS: margin-top: only 0 can be a unit. You must put a unit after your number
      • Error: Unclosed element a