Ошибки, часто встречающиеся при валидации XHTML
Амперсанд ("&")
Пример:
...
Вероятное сообщение валидатора: Unknown entity...
Что делать: Всегда использовать & вместо &.
Правильно:
...
Неправильная вложенность элементов
Пример:
...
Вероятное сообщение валидатора: Missing tag
Что делать: В XHTML элементы должны быть закрыты в порядке, обратном их открытию.
Правильно:
...
Весь DOCTYPE написан в нижнем регистре
Пример:
br>
"http://w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd" >
Вероятное сообщение валидатора: Missing DOCTYPE
Что делать: DOCTYPE регистрозависим, надо писать правильно.
Так::
br>
"http://w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
Отсутствует закрывающий " /"
Пример:
Вероятное сообщение валидатора: Missing closing tag
Что делать: Так называемые "пустые элементы", например img или br, должны заканчиваться"/" c пробелом перед ним.
Правильно::
Тэги в верхнем регистре
Пример:
...
Вероятное сообщение валидатора: There is no such element...
Что делать: ?спользовать написание в нижнем регистре для всех HTML элементов и названий атрибутов. В XHTML документах все элементы и атрибуты должны быть в нижнем регистре. Это важно потому, что XML регистрозависим и для него
и
разные тэги.
Правильно::
...
Значения атрибутов не в кавычках
Пример: Вероятное сообщение валидатора: Missing " " Что делать: Все значения атрибутов должны быть в кавычках. Правильно:: Пример: Вероятное сообщение валидатора: required attribute "alt" not specified Что делать: У всех тегов img должен быть атрибут alt, значение атрибута можно оставить пустым, если избражение является элементом оформления. Правильно:: Common XHTML Validation Errors
У img отсутствует атрибут alt
Много комментариев (30) к “Ошибки, часто встречающиеся при валидации XHTML”
Про регистрозависимость тэгов.
Почему пример не будет работать, если в нем и открывающиеся, и закрывающиеся тэги в одном регистре?
Может лучше так:
Логичнее, с точки зрения названия
2006-06-04 at 8:16 pm
korchasa, спасибо, текст поправил.
А про нижний регистр:
http://w3.org/TR/2002/REC-xhtml1-20020801/#h-4.2
В XHTML документах все элементы и атрибуты должны быть в нижнем регистре.
2006-06-04 at 10:38 pm
Спасибо, за статью, теперь понял откуда у меня иногда вываливались ошибки валидации.
Хотя я все равно не понимаю как из
следует
Ведь код:
Привет, мир!
XML-валиден. Так бы и написали, что “во избежания недоразумений”
2006-06-05 at 12:01 am
2Модератор:
Сорри, забыл сущьности заменить – тэги пропали
2006-06-05 at 12:02 am
> XML-валиден. Так бы и написали, что “во избежания недоразумений”
Во избежание нарушения DTD, именно в котором тэги и прописаны нижним регистром.
2006-06-05 at 9:18 pm
Кстати, бывают тоже достаточно интересные и несразупонимаемые ошибки.
Например, пустой ol/ul.
Валидатор ругается на такой код:
2006-06-05 at 9:19 pm
>> XML-валиден. Так бы и написали, что “во избежания недоразумений”
>Во избежание нарушения DTD, именно в котором тэги и прописаны нижним регистром.
Вот мне и интересно зачем их там так прописали! Зачем ограничивать себя, если можно этого не делать?
Просто я привык их писать заглавными, чтобы оформление отделялось от контента.
2006-06-08 at 5:11 am
2 korchasa
Дело в том, что xhtml, в отличии от html – это диалект xml-а. А xml с самого начала был регистрозависим.
По теме поста.
Часто из-за отсутствия alt у img документ не валидируется, приходится ставить alt=”", хотя это и не совсем правильно с точки зрения здравого смысла – не все картинки испольуются для передачи информации, часть из них это просто оформление.
2006-06-09 at 7:19 pm
Voldar, спасибо, про alt действительно так и есть, добавлю.
2006-06-09 at 7:23 pm
Voldar, если у вас присутствуют картинки оформительского характера — сделайте их фоновыми изображениями. А всё, что несёт хоть какой-то смысл, пусть имеет
alt
. Так порядка больше.2006-06-11 at 9:26 am
2 korchasa:
как уже тут было сказано, XTML отличается от просто XML описанием DTD (Document Type Definition). да, в XML EM и em разные теги, но и тот и другой валиндый, а для XHTML DTD описывает существование тегов только в нижнем регистре.
В принципе, насколько я помню, можно самому дополнить таблицу DTD и тем самым разрешить использование тех или иных entity.
например для чистого XML’я часто подключают DTD от HTML, для того, чтобы использовать такие вещи, как • — и т.п.
2006-06-13 at 7:02 pm
Максим, мы так и делаем :). Но изредка бывают моменты когда бекграундом оно не решается.
Просто у меня еще свежи воспоминания, как мы с валидируемостью бились когда только-только о ней задумываться начали ;). На тот момент alt у картинок занимал не последнее место в списке “любимых граблей”.
2006-06-14 at 2:46 pm
В принцыпе всё известное…
Наверное, потому что это есть на W3С, хотя не всем же удобно а английском.
2AKS_
Не зыбывайте двойные ковычки :)
2006-07-03 at 2:21 pm
Есть и намного более интересный ошибки, причем менее очевидные (для людей ни разу не видевших DTD). Нпример поля форм обязательно должны быть помещены в элемент блочного типа. Тоже самое и для элемента body – первый дочерний элемент тоже должен быть блочного типа.
2006-08-18 at 1:16 am
В xHTML гораздо больше мелких ошибок, на которые мы почти не обращаем внимания…
2006-10-28 at 10:19 am
А самое интересное то, что изучив и научивщись писать самому DTD, можно легко верстать не по документации, а именно по декларации DTD.
2006-10-30 at 4:11 am
У меня такой вопрос валидатор (xhtml 1.1 и xhtml 1.0 strict) ругается на ul, вложенный непосредственно в ul – говорит: “document type does not allow element “ul” here; assuming missing “li” start-tag.”. При этом если li туда прописать, то в браузере естественно появляется маркер, который мне там совсем не нужен.
2006-11-27 at 9:46 am
Suor, укажите для UL style=”list-style: none;” – это уберет маркеры, а дочерним элементом у UL все-таки должен быть LI, если хотите, чтобы код соответствовал стандарту
2006-11-27 at 11:43 pm
почему валидатор выдаёт ошибку на линк?
123
в целом всё выглядит вот так…
–>
сообщение валидатора.. “Error Line 9 column 18: document type does not allow element “a” here; missing one of “p”, “h1″, “h2″, “h3″, “h4″, “h5″, “h6″, “div”, “pre”, “address”, “fieldset”, “ins”, “del” start-tag.”
2007-05-16 at 10:33 pm
почему валидатор выдаёт ошибку на линк?
[a href="123.html"]123[/a]
в целом всё выглядит вот так…
[!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"]
[html xmlns="http://w3.org/1999/xhtml" xml:lang="en" lang="en"]
[head]
2007-05-16 at 10:35 pm
Собственно, валидатор и сообщает о том, что ссылку следует поместить внутрь какого-нибудь из перечисленных элементов.
2007-05-17 at 12:02 pm
т.е. если я хочу получить валидный XHTML 1.0 Strict
все линки должны писаться таким образом?
[div][a href=""][/a][/div]
2007-05-18 at 5:02 pm
Не совсем. Достаточно сделать один контейнер div и внутри него разместить остальное содержимое страницы:
[body]
[h1][a href="#"][/a][/h1]
[a href="#"][/a][div]
[a href="#"][/a]
[p][a href="#"][/a][/p]
…
[span][a href="#"][/a][/span]
[/div]
[body]
т.о. первым дочерним для body будет блочный div, а внутри его можно разместить строковый А
2007-05-18 at 11:08 pm
“Значеня атрибутов не в кавычках” – значен?я, исправьте, пожалуйста ;)
2007-07-22 at 9:43 pm
Спасибо, не заметил.
2007-07-23 at 9:37 pm
картинки, которые не являются контентом, а являются элементом оформления по идее надо в css загонять
2007-08-09 at 6:58 pm
чем заменить target? не сильно разбираюсь в CSS там аналога не нашел…
2007-11-14 at 10:21 am
Добрый день. Хотел поинтересоваться по такому вопросу:
Немогу ни где на форуме встроить тэги от до т.к. валидатор ругается слудующими словами:
document type does not allow element "h3" here; missing one of "object", "applet", "map", "iframe", "button", "ins", "del" start-tag.
Как бороться этой проблемой не смог понять. Если есть выход из создавшейся ситуации – буду очень признателен если ответите. Заранее спасибо, с уважением, Вадим.2008-07-31 at 12:38 am
Система комментариев заблокировала текст, поэтому напишу начало занова:
Немогу ни где на форуме встроить тэги от
до
т.к. валидатор ругается …
2008-07-31 at 12:42 am
от [h1][/h1] до [h3][/h3] (скобки заменил на [] )
2008-07-31 at 12:45 am