Китегории

Исправление ошибок

19 апреля 2022

Большинство ошибок, возникающих при валидации кода можно свести к набору типовых вариантов, зная которые легко понять, на что «намекает» валидатор. В качестве образца возьмем расширение HTML Validator для браузера Firefox, предназначенное для проверки кода и рассмотрим список ошибок и замечаний по коду.

Посмотреть все возможные сообщения валидатора можно по адресу http://www.htmlpedia.org/wiki/HTML_Tidy, далее приведены основные ошибки с их описанием и решением. Зеленым цветом выделен корректный вариант, другой цвет используется для обозначения ошибки.

Notice: entity «…» doesn’t end in «;»

Это замечание возникает при использовании спецсимволов вроде < при отсутствии на конце точки с запятой.

 

&nbsp

Решение

Добавьте в конце спецсимвола точку с запятой.

Notice: numeric character reference «…» doesn’t end in ‘;’

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

™

&#8482

Решение

Добавьте в конце спецсимвола точку с запятой.

unescaped & or unknown entity «&…»

Символ амперсанда (&) часто применяется в адресах ссылок (атрибут href тега <a>), поскольку он разделяет несколько параметров. Однако амперсанд зарезервирован для спецсимволов вроде &nbsp; поэтому в ссылках необходимо указывать &amp; вместо &.

<a href=»http://www.htmlbook.ru/content/?id=30&amp;text=1″>Ссылка</a>

<a href=»http://www.htmlbook.ru/content/?id=30&text=1″>Ссылка</a>

Решение

Замените & на &amp;.

missing </…>

Отсутствует обязательный закрывающий тег.

<head><title>Заголовок</title></head>

<head><title>Заголовок</head>

Решение

Добавьте закрывающий тег.

missing </aaa> before <bbb>

Ошибка возникает при нарушении порядка тегов, когда блочный тег располагается внутри встроенного. В данном случае блочный тег <bbb> находится внутри встроенного тега <aaa>.

<p><span>Текст</span></p>

<span><p>Текст</p></span>

Решение

Поменяйте расположение тегов — перенесите встроенный тег внутрь блочного.

discarding unexpected <…>

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

<div><div>Текст</div></div>

<div>Текст</div></div>

<div><div>Текст</div>

Решение

В зависимости от ситуации добавьте или удалите открывающий или закрывающий тег.

Notice: nested emphasis …

Контейнер содержит аналогичный тег физического форматирования, который не должен повторяться.

<p><b>Текст</b></p>

<p><b><b>Текст</b></b></p>

Решение

Удалите один из тегов.

replacing unexpected … by </…>

Закрывающий тег не соответствует открывающему тегу.

<p><b>Текст</b></p>

<p><b>Текст</span></p>

Решение

Замените открывающий или закрывающий тег на парный.

… isn’t allowed in <…> elements

Обнаружены теги, которые запрещено размещать внутри указанных элементов.

<head><title>Заголовок</title></head>

<head><body>Текст</body></head>

Решение

Переместите HTML-элемент в правильный раздел.

missing <…>

Нет обязательного тега в структуре элементов. Ошибка, к примеру, может возникнуть при формировании таблицы, когда пропущен тег <tr> и сразу же после <table> следует <td>.

<ol><li>Список</li></ol>

<ol>Список</ol>

Решение

Проверить правильность вложения тегов в текущем элементе и наличие обязательных элементов.

Notice: inserting implicit <…>

Сообщение возникает из-за предыдущей ошибки на странице.

Решение

Исправьте предыдущие ошибки.

Insert missing <title> element

В коде не вставлен тег <title>.

<head><title>Заголовок</title></head>

<head></head>

Решение

Добавьте контейнер <title>.

Multiple <frameset> elements

Тег <frameset> используется в документе более одного раза без вложения. Допускается вставлять несколько элементов <frameset>, но вложенных один в другой.

<frameset …><frame …>
<frameset …><frame …></frameset>
</frameset>

<frameset …><frame …></frameset>
<frameset …><frame …></frameset>

Решение

Используйте вложенные теги <frameset>.

<…> is not approved by W3C

Указанный тег не входит в спецификацию HTML.

<span style=»white-space: nowrap;»>текст без переносов</span>

<nobr>текст без переносов</nobr>

Решение

Удалите тег или замените его подходящим эквивалентом.

Error: <…> is not recognized!

Тег не распознан и не входит в спецификацию HTML.

Правильно: <p>Текст</p>

Неверно: <p><adres>Текст</adres></p>

Решение

Удалите неизвестный тег.

Trimming Empty Tag

Контейнер пустой или содержит только пробел.

<p>Текст</p>

<p>&nbsp;</p>

<p></p>

Решение

Удалите тег или добавьте внутрь контейнера текст.

<a> is probably intended as </a>

В закрывающем теге <a> отсутствует слэш.

<a href=»http://htmlbook.ru»>Ссылка на сайт</a>

<a href=»http://htmlbook.ru»>Ссылка на сайт<a>

Решение

Добавьте слэш к закрывающему тегу.

… shouldn’t be nested

Некоторые теги вроде <form> не могут содержать сами себя. Это сообщение также возникает из-за предыдущей ошибки.

<form action=»gb.php» name=»guestbook»></form>
<form action=»gb2.php» name=»guestbook2″></form>

<form action=»gb.php» name=»guestbook»>
<form action=»gb2.php» name=»guestbook2″></form>
</form>

Решение

Удалите вложенные теги или исправьте предыдущую ошибку.

Text found after closing </body>-tag

Теги или текст добавляется после закрывающего тега </body>.

<html>
<head><title>Заголовок</title></head>
<body><p>Основной текст</p></body>
</html>

<html>
<head><title>Заголовок</title></head>
<body><p>Основной текст</p></body>
<b>Привет!</b>
</html>

Решение

Удалите текст после тега </body> или перенесите этот тег в конец текста.

Adjacent hyphens within comment

Комментарии в коде HTML определяются конструкцией вида <!— комментарий —>. Если в тексте комментария подряд идет два и более дефиса, возникает ошибка.

<!— Комментарий — заголовок —>

<!— комментарий —>

<!— Комментарий — тело документа —>

Решение

Удалите лишние дефисы.

SYSTEM, PUBLIC, W3C, DTD, EN must be upper case

Элемент <!DOCTYPE> указан неверно, в частности следующие атрибуты необходимо писать в верхнем регистре: SYSTEMPUBLICW3CDTDEN.

<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4.01 Transitional//EN» «http://www.w3.org/TR/html4/loose.dtd»>

<!doctype html public «-//w3c//dtd html 4.01 Transitional//en» «http://www.w3.org/TR/html4/loose.dtd»>

Решение

Пишите <!DOCTYPE> корректно.

Warning: missing <!DOCTYPE> declaration

Не указан элемент <!DOCTYPE>.

<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4.01//EN» «http://www.w3.org/TR/html4/strict.dtd»>
<html>
<head>
<title>Заголовок</title>
</head>
<body>
<p>Основной текст</p>
</body>
</html>

<html>
<head>
<title>Untitled Document</title>
</head>
<body>
</body>
</html>

Решение

Поместите элемент <!DOCTYPE> в самую первую строку кода документа.

Too much <…>-elements

Повторяется тег, который в коде должен быть только один. К таким тегам относится <html><head><title> и <body>.

<head>
<title>Заголовок</title>
</head>

<head>
<title>Заголовок</title>
<title>Название статьи</title>
</head>

Решение

Удалите повторяющийся тег.

<…> inserting «…» attribute

Не указан обязательный атрибут для данного тега.

<style type=»text/css»>

<style>

Решение

Проверьте тег и добавьте недостающие атрибуты.

… attribute … lacks value

Атрибут тега не содержит обязательное значение или оно написано с синтаксической ошибкой.

<a href=»link.html»>Ссылка</a>

<a href>Ссылка</a>

Решение

Проверьте атрибуты тега и добавьте недостающие значения.

… attribute «…» has invalid value «…»

Атрибут содержит некорректное значение. Ошибка проявляется в тех случаях, когда в значении вместо текста пишется число и наоборот. Так, атрибуты id и name должны начинаться с символа ([A-Za-z]) и могут содержать цифры ([0-9]), дефис (-), подчеркивание (_), двоеточие (:) и точку (.). Значение ширины и высоты в атрибутах тегов не должно содержать ничего, кроме цифр ([0-9]) и процентов (%).

<div id=»layer1″>Слой 1</div>

<img src=»images/pic.gif» width=»200″ height=»120″>

<div id=»2layer»>Слой 2</div>

<img src=»images/pic.gif» width=»200px» height=»120px»>

Решение

Проверьте атрибут тега и измените его значение.

<…> missing > for end of tag

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

<p>Пример текста</p>

<p>Для случая 0&lt;p рассмотрим следующий пример.</p>

<p Пример текста</p>

<p>Для случая 0<p рассмотрим следующий пример.</p>

Решение

Вставьте отсутствующую закрывающую скобку.
Замените < на &lt;.

<…> proprietary attribute «…»

Тег содержит атрибут, специфичный только для браузера Internet Explorer или другого и не входящий в спецификацию. Примером является атрибут height тега <table>.

Список всех атрибутов, входящих в спецификацию HTML приведен по адресу http://www.w3.org/TR/html4/index/attributes.html

<table style=»height: 100%»>

<table height=»100%»>

Решение

Список наиболее характерных атрибутов тегов приведен в табл. 14.1.

Табл. 14.1. Замена нестандартных атрибутов тегов
Тег Устаревший атрибут Стандартный атрибут
<body> marginwidth=0, marginheight=0, leftmargin=0, topmargin=0 style=»margin: 0″
<table> height=100% style=»height: 100%»
<table> nowrap style=»white-space: nowrap» или
<td nowrap>
<td> background=»abc.gif» style=»background-image:url(abc.gif)»

… proprietary attribute value «…»

Значение атрибута не входит в спецификацию HTML и является специфичным для браузера Internet Explorer или другого. Например, значение align=»absmiddle» тега <img> недопустимо.

<p><img src=»hello.gif» alt=»Привет» align=»middle»></p>

<p><img src=»hello.gif» alt=»Привет» style=»vertical-align: middle»></p>

<p><img src=»hello.gif» alt=»Привет» align=»absmiddle»></p>

Решение

Используйте стандартные значения атрибутов тегов или используйте стилевой эквивалент.

… dropping value «…» for repeated attribute «…»

Атрибут применяется в теге больше одного раза.

<img src=»image.jpg»>

<img src=»image.jpg» src=»image.jpg»>

Решение

Удалите повторяющийся атрибут.

… unexpected or duplicate quote mark

Отсутствует открывающая или закрывающая кавычка в атрибуте тега.

<img src=»image.jpg»>

<img src=image.jpg»>

Решение

Добавьте парную кавычку к значению атрибута.

… attribute with missing trailing quote mark

Тег содержит атрибут, в котором задано неверное количество кавычек.

<p id=»my_id»>

<p id=»my_id»»>

Решение

Добавьте или удалите одну из кавычек.

… id and name attribute value mismatch

Ошибка возникает, когда значения атрибутов id и name не совпадают между собой, что приводит к конфликту при обращении к свойствам элемента через скрипты.

<a name=»elm» id=»elm»>

<a id=»elm»>

<a name=»abcdef» id=»db1″>

Решение

Удалите один из атрибутов или сделайте значения атрибутов name и id одинаковыми.

Notice: replacing <…> by <…>

Ошибка возникает в следующих случаях:

  • неверный порядок тегов;
  • добавлен лишний закрывающий тег;
  • имеется открывающий тег без наличия обязательного закрывающего.

<p>Текст</p><br>

<p>Текст</p></p>

<p>abc<br><table>…</table></p>

Решение

Измените порядок тегов или удалите один из открывающих или закрывающих тегов.

… anchor «…» already defined

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

<form name=»my_form1″ action=»test1.php»></form>
<form name=»my_form2″ action=»test2.php»></form>

<form name=»my_form» action=»test1.php»></form>
<form name=»my_form» action=»test2.php»></form>

Решение

Выберите другое имя или измените предыдущие имена таким образом, чтобы они не совпадали.

<…> is probably intended as </…>

Тег повторяется дважды в коде HTML, тогда как подобный тег не должен содержать сам себя.

<em>Привет, мир!</em>

<em>Привет<em>, мир!</em></em>

Решение

Удалите один из тегов.

<…> lacks «…» attribute

Требуется обязательный атрибут тега, который, тем не менее, отсутствует.

<form action=»my_action.php»>

<form>

Решение

Добавьте недостающий атрибут к тегу.


Добавить комментарий

Ваш адрес email не будет опубликован.