Могу ли я использовать теги в теле HTML-документа?
Могу ли я использовать теги <link>
в теле HTML-страницы? Я попытался найти ответ на этот вопрос, но обнаружил противоречивую информацию.
При добавлении Schema.org разметка микроданных на HTML-странице, я хочу добавить каноническую информацию в тег ссылки следующим образом:
<div itemscope itemtype="http://schema.org/Book">
<span itemprop="name">The Catcher in the Rye</span>—
<link itemprop="url" href="http://en.wikipedia.org/wiki/The_Catcher_in_the_Rye" />
by <span itemprop="author">J.D. Salinger</span>
</div>
Я получил приведенный выше пример кода от Schema.org . По их словам, это путь для людей, которые хотят добавить каноническую ссылку на элемент, но не хотят размещать гиперссылка на их веб-сайте.
W3, однако, четко указывает, что теги <link>
должны размещаться только в разделе заголовка, что делает Schema.org пример неверен.
Если я хочу придерживаться правильной разметки, какому совету я должен следовать?
3 answers
Микроданные расширяет HTML5 таким образом, чтобы элементы link
и meta
могли использоваться в body
, если они содержат атрибут itemprop
.
Если атрибут
itemprop
присутствует вlink
илиmeta
, они являются содержимым потока и содержимым формулировки. Элементыlink
иmeta
могут использоваться там, где ожидается формулировка содержимого, если присутствует атрибутitemprop
.
Это расширение в настоящее время также включено в HTML 5.1 Nightly (Черновик редактора) (см. link
элемент и meta
элемент). Но поскольку спецификация микроданных недавно стала примечанием W3C, нам придется посмотреть, что произойдет с этой ссылкой.
РДФА 1.1 расширяет HTML5 таким образом, что элементы link
и meta
могут использоваться в body
, если они содержат атрибут propertỳ
.
Если атрибут
@property
RDFa присутствует в элементахlink
илиmeta
, они ДОЛЖНЫ рассматриваться как соответствующие если используется вbody
документа. Более конкретно, когда элементыlink
илиmeta
содержат атрибут RDFa@property
и используются вbody
документа HTML5, они ДОЛЖНЫ рассматриваться как содержимое потока.
Таким образом, вам не разрешено использовать любые link
элемент (например, <link href="" rel="" />
) в body
, но только с атрибутом itemprop
(для микроданных) соответственно. атрибут property
(для RDFa).
Таким образом, ваш элемент link
может быть использован в body
:
<body>
<!-- … -->
<link itemprop="url" href="http://en.wikipedia.org/wiki/The_Catcher_in_the_Rye" />
<!-- … -->
</body>
W3Schools не устанавливает отраслевые стандарты кодирования HTML. Это просто сторонний справочный сайт, который в любом случае не связан с W3C. W3Schools и другие сайты часто ошибаются при использовании передовых технологий кодирования, таких как Схема и Адаптивный дизайн. При использовании довольно нового кода вашим универсальным магазином должно быть W3C, как указано в стандартах соответствия, и, возможно, HTML5 Doctor, если вам нужна помощь в понимании HTML5 благодаря тому, что они не являются официальными, но очень уважаемыми.
Просматривая ваш код, он проходит проверку W3C без каких-либо проблем с элементом ссылки, содержащимся в <body> </body>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<div itemscope itemtype="http://schema.org/Book">
<span itemprop="name">The Catcher in the Rye</span>—
<link itemprop="url" href="http://en.wikipedia.org/wiki/The_Catcher_in_the_Rye" />
by <span itemprop="author">J.D. Salinger</span>
</div>
</body>
</html>
КОРОТКИЙ ОТВЕТ: Да, вы можете использовать <LINK>
в <body> </body>
, но, как отметил Унор в своем ответе, он должен включать в себя itemprop.
Элемент ссылки может быть добавлен в текст HTML-документа, если присутствует атрибут itemprop
. Вот демонстрационная версия .
Также вот пример атрибута link itemprop.