Могу ли я использовать теги <link> в теле документа HTML?

20

Могу ли я использовать <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 . По их словам, это способ для людей, которые хотят добавить каноническую ссылку на itemprop, но не хотят размещать гиперссылки на своем сайте.

Однако в W3 четко указано, что <link>теги следует размещать только внутри раздела head, что делает пример Schema.org недействительным.

Если я хочу придерживаться правильной разметки, какой совет я должен следовать?

Эдвард Тоу
источник
Вы ссылаетесь на w3schools.com (который не имеет ничего общего с W3C), а не на w3.org .
ОООНР
Ах да, конечно, вы правы. Удалена ссылка на W3schools. Благодарю.
Эдвард Тоу
Вот что происходит с SEO: webmasters.googleblog.com/2013/04/…
Фаиз,

Ответы:

23

Микроданные расширяют HTML5 таким образом, чтобы linkи metaэлементы можно было использовать в них body, если они содержат itempropатрибут.

Если itempropатрибут присутствует в linkили meta, они представляют собой содержимое потока и содержимое фразы. linkИ metaэлементы могут быть использованы , где содержание формулировка , как ожидается , если itempropатрибут присутствует.

Это расширение в настоящее время также включено в HTML 5.1 Nightly (черновик редактора) (см. linkЭлемент и metaэлемент ). Но поскольку спецификация микроданных недавно стала примечанием W3C , нам нужно будет посмотреть, что произойдет с этой ссылкой.

RDFa 1.1 расширяет HTML5 таким образом, что linkи metaэлементы могут использоваться в body, если они содержат propertỳатрибут.

Если @propertyатрибут RDFa присутствует в элементах linkor meta, они ДОЛЖНЫ рассматриваться как соответствующие, если они используются в bodyдокументе. Более конкретно, когда linkили metaэлементы содержат @propertyатрибут RDFa и используются в 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>
ОООНР
источник
Благодарность! Так что, если я правильно понимаю, мне разрешено использовать <link>тег в теле, если он содержит атрибут itemprop? И до тех пор, пока включен атрибут itemprop, я также могу включить, hrefкак используется в моем первоначальном вопросе?
Эдвард Тоу
@ EdwardTouw: Да; Вы ДОЛЖНЫ дать hrefатрибут в любом случае. Таким образом, пока linkэлемент имеет itempropатрибут, вы можете использовать его в body. Тогда это уже не метаданные для всего документа (как это было бы в случае обычных linkэлементов в head), а «скрытый» элемент для микроданных.
ОООНР
11

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.

Саймон Хейтер
источник
Обратите внимание, что вы ссылаетесь на черновик HTML5 с 2009 года. В текущую версию HTML5 CR соответствующее определение не включено.
ОООНР
0

Элемент ссылки может быть добавлен в тело документа HTML, если itempropатрибут присутствует. Вот демо .

Также вот пример ссылки атрибута itemprop .

Даниил
источник
2
Если это ссылки на ваш сайт, пожалуйста, добавьте отказ от ответственности типа «Я рассказал об этом в своем блоге здесь ...».
Дан