|
Простой HTML-валидаторЭтот Perl-скрипт проверяет корректность HTML-блоков. Результат выдаётся в удобочитаемой форме с номерами строк и отступами, показывающими глубину вложения конструкций. Внимание, это очень старый скрипт. Но был написан лет десять назад. С тех пор появилось множество качественных средств проверки 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> стали не парными. Спасибо всем пользователям за комментарии! Прежде, чем писать об обнаруженной ошибке, убедитесь, что вы пользуетесь последней версией скрипта. Последнее время 90% жалоб относятся к давно исправленным ошибкам. Коллеги из Уфы, Киева, Минска, Москвы и прочие товарищи, которые присылают только HTML-код. Обращаюсь персонально к вам. Я больше не буду рассматривать подобные послания. Практика показывает, что 99% этих сообщений абсолютно не информативны. (За последние сутки: 178.125.115.238 — ваш HTML нормально разбирается, обновите скрипт; 195.239.220.99 — мой скрипт не разбирает атрибуты тегов, пользуйтесь более мощными средствами; 195.230.73.2 — что вас не устраивает? обновите скрипт; 91.200.225.174 — почитайте сообщения скрипта и закройте теги td.) Если вы хотите получить ответ, дополняйте ваше сообщение комментариями. Вы можете связаться со мной по e-mail a.michurin@gmail.com.
|