Чи можна використовувати теги <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>теги слід розміщувати лише в головному розділі, що робить приклад Schema.org недійсним.

Якщо я хочу дотримуватися правильної розмітки, якої поради слід дотримуватися?


Ви посилаєтесь на w3schools.com (який не має нічого спільного з W3C), а не w3.org .
unor

Ага, так, звичайно, ти маєш рацію. Видалено посилання на W3schools. Спасибі.
Едвард Туу

Ось що відбувається із SEO: webmasters.googleblog.com/2013/04/…
Faiz

Відповіді:


23

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

Якщо itempropатрибут присутній на linkабо meta, вони є потоковим вмістом та вмістом фраз. Елементи linkта metaелементи можуть використовуватися там, де очікується вміст фразування, якщо itempropатрибут присутній.

Це розширення наразі також включено до HTML 5.1 Nightly (редакторська чернетка) (див. linkЕлемент та metaелемент ). Але оскільки нещодавно специфікація Microdata стала W3C Note , нам доведеться побачити, що відбувається з цією посиланням.

RDFa 1.1 розширює HTML5 таким чином, що linkі metaелементи можуть бути використані в body, якщо вони містять propertỳатрибут.

Якщо @propertyатрибут RDFa присутній на елементах linkабо metaелементах, їх ОБОВ'ЯЗКОВО розглядати як відповідні, якщо вони використовуються в bodyдокументі. Більш конкретно, коли linkабо metaелементи містять @propertyатрибут RDFa і використовуються в bodyдокументі HTML5, їх ОБОВ'ЯЗКОВО вважати вмістом потоку.


Таким чином, вам не дозволяється використовувати будь-який link елемент (наприклад, <link href="" rel="" />) у body, а лише ті, що мають itempropатрибут (для Microdata), відповідно. propertyатрибут (для RDFa).

Таким чином, ваш linkелемент можна використовувати в body:

<body>
<!-- … -->
  <link itemprop="url" href="http://en.wikipedia.org/wiki/The_Catcher_in_the_Rye" />
<!-- … -->
</body>

Спасибі! Тож якщо я правильно розумію, мені дозволяється використовувати <link>тег у тілі, якщо він містить атрибут itemprop? І якщо включений атрибут itemprop, я можу також включити, hrefяк це було використано в моєму початковому запитанні?
Edward Touw

@EdwardTouw: Так; ви ОБОВ'ЯЗКОВО надати hrefатрибут у будь-якому випадку. Тому поки у linkелемента є itempropатрибут, ви можете використовувати його в body. Тоді це вже не метадані для всього документа (як це було б у випадку зі звичайними linkелементами у head), а "прихованого" елемента для мікроданих.
unor

11

W3Schools не встановлює галузевих стандартів щодо кодування HTML. Вони є просто стороннім довідковим сайтом, який жодним чином не пов'язаний з W3C . W3Schools та інші сайти часто помиляються при використанні передових технологій кодування, таких як Schema та чуйний дизайн . При використанні досить нового коду вашим єдиним зупинком повинен бути 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 відповідне визначення не включене.
unor

0

Елемент посилання може бути доданий до тіла документа HTML, якщо itemprop атрибут присутній. Ось демонстрація .

Також ось приклад атрибута itemprop посилання.


2
Якщо це посилання на ваш сайт, будь ласка, додайте відмову на зразок "Я висвітлював це у своєму блозі тут ...".
дан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.