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

<!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 ' media = 'all'/" > Атрибуты для ссылки на элемент: глобальные атрибуты href crossorigin rel media hreflang type sizes Кроме того, атрибут title имеет специальную семантику по этому элементу.

Ответ 1

Совет от @stevelove, по-видимому, является практическим решением, но теоретически отвечает на вопрос "почему":

Хотя элемент link безоговорочно недействителен в body в более старых спецификациях HTML, HTML5 имеет более разрешительные правила. Согласно HTML 5.1 Nightly (что более или менее то, что валидатор пытается не отставать), элемент link разрешен в теле документа тоже (где угодно) допускается использование фразы), при условии, что он имеет атрибут itemprop. Это, похоже, делает сообщение об ошибке еще более загадочным. Часть объяснения состоит в том, что валидатор фактически проверяет HTML5 + RDFa, а RDFa определяет атрибут property. Проблема по-прежнему заключается в том, какое конкретное определение RDFa проверяет валидатор, поскольку определение должно также переопределять правила для HTML.

Информация в сообщении об ошибке устарела, так или иначе. Сообщения об ошибках, по-видимому, не обновляются так быстро, как основные функции валидатора.

Ответ 2

Добавить

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' />

Ответ 3

Является ли ваш <link> внутри <body>? Если да, попробуйте поместить его в <head> в верхней части документа.

Ответ 4

W3C поддерживающий HTML5 валидатор. Как указано в другом ответе, в дополнение к проверке требований в самой спецификации HTML5, валидатор также проверяет требования в спецификации HTML + RDFa 1.1:

http://www.w3.org/TR/html-rdfa/

И хотя сама спецификация HTML говорит, что link обычно не допускается в теле *, спецификация RDFa говорит, что если элемент link имеет атрибут property, он разрешен в теле.

Так что сообщение валидатора в основном говорит: 「Элемент link разрешен только здесь, если он имеет атрибут property. Но этот конкретный элемент link не имеет атрибута property. 」

* Сама спецификация HTML также говорит, что элемент link разрешен в теле, если он имеет атрибут itemprop, но только если элемент link не имеет значения rel. (itemprop - атрибут "Microdata", цель которого в основном совпадает с атрибутом RDFa property).

Таким образом, у нас есть два разных атрибута, которые независимо влияют на то, где в документе может отображаться элемент link, и это усложняет логику проверки в валидаторе таким образом, что это затрудняет испускание лучшего, более полезного сообщение об ошибке для этого случая.

Ответ 5

Он хочет, чтобы это было в твоей голове. Однако, если css не слишком важно загрузить сразу, вы получите инструмент google pagespeed, предлагающий вам поместить его в нижнюю часть тела.

В качестве примера я использую одну из тем jquery (redmond) для создания автозаполнения. Не нужно помещать это в верхнюю часть моей страницы, так как это просто замедлит все остальное.

Итак, не беспокойтесь о совершенной проверке w3c.

Ответ 6

Просто для будущих потребностей, вот мой комментарий:

В страница w3c мы имеем следующий комментарий:

Если используется атрибут rel, элемент ограничен головкой элемент. При использовании с атрибутом itemprop элемент может быть используется как в элементе головы, так и в теле страницы, при условии, что ограничения модели микроданных.

Таким образом, ошибку можно решить, изменив rel на itemprop, потому что rel должен использоваться в голове, а

можно использовать в теле.

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