Главная » Статьи » HTML » Устранение ошибок при создании кода HTML |
Большинство ошибок, возникающих при валидации кода можно свести к набору типовых вариантов, зная которые легко понять, на что «намекает» валидатор. В качестве образца возьмем расширение HTML Tidy для браузера Firefox, предназначенное для проверки кода и рассмотрим список ошибок и замечаний по коду. Посмотреть все возможные сообщения валидатора можно по адресу http://www.htmlpedia.org/wiki/HTML_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.htmlbook.ru/content/?id=30&text=1">Ссылка</a> Неверно: <a href="http://www.htmlbook.ru/content/?id=30&text=1">Ссылка</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> РешениеПереместите 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>. <...> 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> </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="gb.php" name="guestbook"> РешениеУдалите вложенные теги или исправьте предыдущую ошибку. Text found after closing </body>-tagТеги или текст добавляется после закрывающего тега </body>. Правильно: Неверно: РешениеУдалите текст после тега </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 в самую первую строку кода документа. Too much <...>-elementsПовторяется тег, который в коде должен быть только один. К таким тегам относится <HTML>, <HEAD>, <TITLE> и <BODY>. Правильно: Неверно: РешениеУдалите повторяющийся тег. <...> 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<p рассмотрим следующий пример.</p> Неверно: <p Пример текста</p> Неверно: <p>Для случая 0<p рассмотрим следующий пример.</p> РешениеВставьте отсутствующую закрывающую скобку. <...> 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.
... 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_form" action="test1.php"></form> РешениеВыберите другое имя или измените предыдущие имена таким образом, чтобы они не совпадали. <...> is probably intended as </...>Тег повторяется дважды в коде HTML, тогда как подобный тег содержать сам себя. Правильно: <em>Привет, мир!</em> Неверно: <em>Привет<em>, мир!</em></em> РешениеУдалите один из тегов. <...> lacks "..." attributeТребуется обязательный параметр тега, который, тем не менее, отсутствует. Правильно: <form action="my_action.php"> Неверно: <form> РешениеДобавьте недостающий атрибут к тегу. | ||||||||||||||||
Просмотров: 9794 | Комментарии: 4 | |
Всего комментариев: 4 | |||||
| |||||