Ссылка на элемент отсутствует обязательное свойство атрибута
<!DOCTYPE html>
...
<link rel='stylesheet' id='basecss-css' href='http://www.someurl.com/modules/14ce1e21/peadig-eucookie.css' type='text/css' media='all' />
почему валидатор (http://validator.w3.org/) отвергая это? Какой атрибут "требуется", о котором я не знаю?
ошибки:
ошибка строка 408, столбец 142: элемент ссылка отсутствует обязательный атрибут свойство. ... / modules/14ce1e21 / peadig-eucookie.css 'type=' text / css' средства массовой информации= " все " / > атрибуты элемента ссылке: глобальных атрибутах href crossorigin rel media hreflang тип размеры также, атрибут title имеет специальная семантика на этом элементе.
6 ответов:
совет от @stevelove, по-видимому, является практическим решением, но вот теоретический ответ на вопрос "почему":
хотя a
link
элемент является безусловно недопустимым вbody
в старых спецификациях HTML HTML5 имеет более разрешительные правила. Согласно HTML 5.1 Nightly (что более или менее то, что валидатор пытается идти в ногу с),link
элемент допускается также в теле документа (везде, где допускается формулировка содержимого), при условии что у него есть . Это, кажется, делает сообщение об ошибке еще более загадочным. Часть объяснения заключается в том, что валидатор фактически проверяет HTML5 + RDFa, а RDFa определяет . Проблема по-прежнему остается в том, какое конкретное определение RDFa проверяет валидатор, поскольку определение также должно переопределить правила для HTML.информация в сообщении об ошибке все равно устарела. Сообщения об ошибках, по-видимому, не обновляются так же быстро, как и основной функционал валидатора.
добавить
property='stylesheet'
Если вы не хотите, чтобы переместить ссылку на
<head>
документа.<link rel='stylesheet' property='stylesheet' id='basecss-css' href='http://www.someurl.com/modules/14ce1e21/peadig-eucookie.css' type='text/css' media='all' />
- Это
<link>
внутри<body>
? Если это так, попробуйте положить его в<head>
в верхней части документа.
W3C HTML5 валидатор сопровождающий здесь. Как указано в другом ответе, в дополнение к проверке требований в самой спецификации HTML5 валидатор также проверяет требования в спецификации HTML+RDFa 1.1:
http://www.w3.org/TR/html-rdfa/
и в то время как сама спецификация HTML говорит
link
обычно не допускается в теле*, спецификация RDFa говорит, что еслиlink
элементproperty
атрибут, это разрешено в тело.так что сообщение валидатора в основном говорит: "the
link
элемент здесь разрешен только если он имеет . Но именно этоlink
элемент не имеет ."* сама спецификация HTML также говорит, что
link
элемент допускается в теле, если он имеетitemprop
атрибут-но только еслиlink
элемент не имеетrel
значение. (itemprop
это атрибут "микроданные", назначение которого в основном совпадает с Поддержка RDFa ).таким образом, у нас есть два разных атрибута, которые оба независимо влияют на то, где в документе
link
элемент может появиться, и это усложняет логику проверки в валидаторе таким образом, что затрудняет выдачу лучшего, более полезного сообщения об ошибке для этого случая.
Он хочет, чтобы это было в вашей голове. Однако, если css не слишком важен для загрузки сразу, вы получите инструмент pagespeed от google, который скажет вам поместить его в нижнюю часть тела.
в качестве примера я использую одну из тем jquery (redmond) для стиля моего автозаполнения. Не нужно помещать это в верхнюю часть моей страницы, так как это просто замедлит все остальное.
итак, не беспокойтесь слишком много о совершенной проверке w3c.
только для будущих потребностей, вот мой комментарий:
на страница w3c у нас есть следующий комментарий:
если используется атрибут rel, элемент ограничен головкой элемент. При использовании с атрибутом itemprop этот элемент может быть используется как в головном элементе, так и в теле страницы, при условии ограничения модели микроданных.
так что ошибка может быть решена путем изменения
rel
дляitemprop
, потому чтоrel
должен использоваться в голове иitemprop
можно использовать в теле.надеюсь, что это поможет кому-то.