MENU
Главная » Статьи » HTML » Устранение ошибок при создании кода HTML

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

Большинство ошибок, возникающих при валидации кода можно свести к набору типовых вариантов, зная которые легко понять, на что «намекает» валидатор. В качестве образца возьмем расширение HTML Tidy для браузера 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 указан неверно, в частности следующие атрибуты необходимо писать в верхнем регистре: SYSTEM, PUBLIC, W3C, DTD, EN.

Правильно: <!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 "..."

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

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

Правильно: <table style="height: 100%">

Неверно: <table height="100%">

Решение

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

Табл. 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 и является специфичным для браузера Nescape или 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="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 </...>

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

Правильно: <em>Привет, мир!</em>

Неверно: <em>Привет<em>, мир!</em></em>

Решение

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

<...> lacks "..." attribute

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

Правильно: <form action="my_action.php">

Неверно: <form>

Решение

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

Категория: Устранение ошибок при создании кода HTML | Добавил: Virt (03.11.2009)
Просмотров: 9794 | Комментарии: 4 | Рейтинг: 0.0/0
Всего комментариев: 4
4 Kisksnanyww  
0
http://CORRECT-STROY.ru/ - http://CORRECT-STROY.ru
http://DELESTROY.ru/ - http://DELESTROY.ru
http://LEGKO-STROI.RU/ - http://LEGKO-STROI.RU
http://myartikle.ru/ - http://myartikle.ru
http://kulinar-profi.ru/ - http://kulinar-profi.ru

3 scarymaze  
0
http://www.worldshardest-game.net/ address 3713838672 http://world-shardestgame.com

2 infepeUndedk  
0
http://www.christianlouboutinoutletdeal.co.uk
jpkoks

1 Никита  
0
Для новичка немного сложновато а нет программы какой что б в ней проверить HTML код ?

http://www.sv-pokolenii.narod.ru

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]