Программирование
On-line приложения
Почитать
Web-сервер Apache
Печать и форматирование
MySQL
Разные рецепты
Сборка/установка
Редактор vi
Справки
Философия
Мой опыт
Скачать
Программы на Tcl/Tk (GUI)
Программы на Python/Tk (GUI)
Программы (CLI)
Help
Хобби
Фракталы
on-line
Язык для рисования фракталов
Гиперкуб
Теория относительности
Ампуллярии
Преподавание
Студенту/абитуриенту
Мой опыт
Автора!

Простой HTML-валидатор

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

Сейчас он настроен на очень строгую проверку. Закрывающий тег должен быть и у тега <p>, и у <td>, и у <li>, но это легко отрегулировать, чуть подправив код.

Никаких дополнительных модулей этот скрипт не требует.

Новая версия (август 2006) корректно пропускает PHP- и SSI-код. Но конечно этот код не выполняется. Чтобы проверить корректность любых динамических документов мой валидатор можно использовать совместно с программой wget (или любой подобной):

wget -qO- http://ya.ru/ | html

или, для более удобного просмотра результатов:

wget -qO- http://ya.ru/ | html | less

Из недостатков:

Атрибуты тегов не проверяются.

Никаких ключей программа не имеет. Проверяемый файл либо указывается в командной строке, либо подаётся на STDIN.

Программа проверяет очень строго не только парность тегов. Она указывает и на ошибочное использование символов <, >. Например, такой код считается ошибочным:

<script type="text/javascript">
if (a>b) {}
</script>

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

<script type="text/javascript"><!--
if (a>b) {}
// --></script>

или (на худой конец) квотировать запрещённые символы.

Этот чекер проверяет имено HTML, но не XML. Он не поддерживает "самозакрывающиеся" теги (такие как <br/>), он не поддерживает обработку <!ELEMENT ...>, он не поддерживает <![CDATA[...> и прочие XML-специфичные конструкции.

Пока я не планирую добавлять в этот валидатор XML-проверки. Мне представляется более разумным делать разные валидаторы для XML и HTML, но для XML и без меня существует множество достойных валидаторов.

Изменения:

Правка от февраля 2009 года — тег <map> стал парным и символы '\r' не ломают форматирование отчёта об ошибках.

Правка — август 2009 года — улучшена обработка пробелов в PHP-коде и HTML-комментариях.

Последняя от сентября 2009 года — улучшена обработка пробелов, включая табуляции и символ '\r'. Исправлена ошибка, приводившая к не правильному подсчёту номеров строк.

Правка от декабря 2009 года — теги <embed> и <param> стали не парными.

Спасибо всем пользователям за комментарии!

Эта страница набрала немалую популярность, её посещает множество людей, поэтому я решил провести небольшое исследование. Если у вас есть комментарий, если вы сочли полученную информацию полезной, не полной, или вообще бесполезной, вы можете высказать своё мнение, пожелания, дополнения.

Если вы ожидаете получить от меня ответ или разъяснение, пожалуйста укажите e-mail.
Ваше сообщение не появится на странице, а просто отправится мне.

© 1999 − 2010 Мичурин Алексей — http://www.michurin.com.ru/