Исправление Errors
Большинство Errors, возникающих при валидации тегов можно свести к набору типовых наборов, зная которые легко понять, на что «намекает» валидатор. В качестве образца возьмем расширение ШТМЛ Tidy для браузера Файер фох, предназначенное для сканирование тегов и просмотрим список Errors и замечаний по коду.
Посмотреть все возможные сообщения валидатора можно по адресу http://www.ШТМЛpedia.org/wiki/ШТМЛ_Tidy, далее приведены основные ошибки с их описанием и решением.
Notice: entity "..." doesn't end in ";"
Это замечание возникает при использовании спецсимволов вроде < при отсутствии на конце точки с запятой.
Правильно: .
Неверно:  .
Решение
Добавьте в конце спецсимвола точку с запятой.
Notice: numeric character reference "..." doesn't end in ';'
Возникает при использовании числовых спецсимволов вроде — когда в конце забыли добавляем точку с запятой.
Правильно: ™
Неверно: ™
Решение
Добавьте в конце спецсимвола точку с запятой.
unescaped & or unknown entity "&..."
Символ амперсанда (&) часто применяется в адресах ссылок (аргумент href тега <A>), поскольку он разделяет несколько параметров. Однако амперсанд зарезервирован для спецсимволов вроде поэтому в ссылках необходимо указывать & вместо &.
Правильно: <a href="http://www-html.ru/content/-id=30&text=1.htm">Ссылка</a>
Неверно: <a href="http://www-html.ru/content/-id=30&text=1.htm">Ссылка</a>
Решение
Замените & на &
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>
Решение
Переместите ШТМЛ-элемент в правильный раздел.
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
Указанный тег не входит в спецификацию ШТМЛ.
Правильно: <span style="white-space: nowrap;">контент без переносов</span>
Неверно: <nobr>контент без переносов</nobr>
Решение
Удалите тег или замените его подходящим эквивалентом.
Error: <...> is not recognized!
Тег не распознан и не входит в спецификацию ШТМЛ.
Правильно: <p>контент</p>
Неверно: <p><adres>контент</adres></p>
Решение
Удалите неизвестный тег.
Trimming Empty Tag
Контейнер пустой или содержит только пробел.
Правильно: <p>контент</p>
Правильно: <p> </p>
Неверно: <p></p>
Решение
Удалите тег или добавьте внутрь контейнера контент.
<a> is probably intended as </a>
В закрывающем теге <A> отсутствует слэш.
Правильно: <a href="http://www-html.ru">Ссылка на сайт</a>
Неверно: <a href="http://www-html.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
Комментарии в коде ШТМЛ определяются конструкцией вида <!-- комментарий -->. Если в контенте комментария подряд идет два и более дефиса, возникает ошибка.
Правильно: <!-- Комментарий - заголовок -->
Неверно: <!--- комментарий --->
Неверно: <!-- Комментарий -- тело объекта -->
Решение
Удалите лишние дефисы.
SYSTEM, PUBLIC, W3C, DTD, EN must be upper case
Элемент DOCTYPE указан неверно, в частности следующие атрибуты необходимо писать в верхнем регистре: SYSTEM, PUBLIC, W3C, DTD, EN.
Правильно: <!DOCTYPE ШТМЛ PUBLIC "-//W3C//DTD ШТМЛ 4.01 Transitional//EN" "http://www.w3.org/TR/ШТМЛ4/loose.dtd">
Неверно: <!doctype ШТМЛ public "-//w3c//dtd ШТМЛ 4.01 Transitional//en" "http://www.w3.org/TR/ШТМЛ4/loose.dtd">
Решение
Пишите DOCTYPE корректно.
Warning: missing <!DOCTYPE> declaration
Не указан элемент DOCTYPE.
Правильно:
<!DOCTYPE ШТМЛ PUBLIC "-//W3C//DTD ШТМЛ 4.01//EN" "http://www.w3.org/TR/ШТМЛ4/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.ШТМЛ">Ссылка</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<p просмотрим следующий пример.</p>
Неверно: <p Пример контента</p>
Неверно: <p>Для случая 0<p просмотрим следующий пример.</p>
Решение
Вставьте отсутствующую закрывающую скобку.
Замените < на <.
<...> proprietary attribute "..."
Тег содержит параметр, специфичный только для браузера Nescape или Internet Эксплорер и не входящий в спецификацию. Примером такого параметра является атрибут height тега <TABLE>.
Список всех атрибутов, входящих в спецификацию ШТМЛ приведен по адресу: http://www.w3.org/TR/ШТМЛ4/index/attributes.ШТМЛ
Правильно: <table style="height: 100%">
Неверно: <table height="100%">
Решение
Список наиболее характерных параметров тегов приведен в табл. 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 "..."
Значение параметра не входит в спецификацию ШТМЛ и является специфичным для браузера Nescape или Internet Эксплорер. Например, значение 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="abcd" 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 </...>
Тег повторяется дважды в коде ШТМЛ, тогда как подобный тег содержать сам себя.
Правильно: <em>Привет, мир!</em>
Неверно: <em>Привет<em>, мир!</em></em>
Решение
Удалите один из тегов.
<...> lacks "..." attribute
Требуется обязательный параметр тега, который, тем не менее, отсутствует.
Правильно: <form action="my_action.php">
Неверно: <form>
Решение
Добавьте недостающий атрибут к тегу.
Статья опубликована: 06.08.2009 | Последнее обновление: 06.08.2009 |