Ссылка на элемент отсутствует обязательное свойство атрибута


<!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 79

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 можно использовать в теле.

надеюсь, что это поможет кому-то.