Допустимы ли атрибуты микроданных для любого элемента?
Допустимо ли добавлять атрибуты микроданных (например, используя Schema.org словарь), например itemprop="name"
, к элементам HTML, которые не являются span
или div
?
Например:
<h2 class="product_name" itemprop="name">Baseball Glove</h2>
1 answers
Да, вы можете использовать каждый элемент HTML5 для микроданных...
Микроданные определяют 5 новых атрибутов для HTML5:
itemid
itemprop
itemref
itemscope
itemtype
Давайте посмотрим, где их можно использовать. Раздел 5.2 гласит:
У каждого элемента HTML может быть указан атрибут
itemscope
.
Таким образом, каждый элемент может иметь itemscope
. Далее об этом говорит:
Элементы с атрибутом
itemscope
могут иметь указанный атрибутitemtype
Так что, если у него есть itemscope
(и мы узнали, что он может быть у каждого элемента), у него тоже может быть itemtype
. Далее:
Элементы с атрибутом
itemscope
и атрибутомitemtype
[...] также могут иметь указанный атрибутitemid
Если у него есть itemscope
и itemtype
, то у него тоже может быть itemid
. И:
Элементы с атрибутом
itemscope
могут иметь атрибутitemref
указанный атрибут
Если у него есть itemscope
, он может иметь itemref
.
Сейчас отсутствует только itemprop
. Это определено в разделе 5.3:
У каждого элемента HTML может быть указан атрибут
itemprop
Таким образом, itemprop
также можно использовать для каждого элемента.
(Обратите внимание, что микроданные (Примечание W3C) относятся к спецификации HTML5 для определения того, что такое "элемент HTML" , поэтому по сути "элемент HTML" означает "элемент HTML5".)
...но некоторые элементы получают другую модель контента (когда используется itemprop
)
См. 8.1 Модели контента.
Например:
-
href
становится обязательным атрибутом дляa
иarea
-
data
становится обязательным атрибутом дляiframe
- атрибуты
name
,http-equiv
иcharset
больше не допускаются наmeta
- …
...и некоторые элементы имеют специальные правила для определения значения свойства (когда itemprop
используется)
→ См. 5.4 Значения.
Например:
-
Специальные правила для ссылок. Здесь значение
foobar
- это URL-адресhttp://example.com/
, а не строкаLink
:<a href="http://example.com/" itemprop="foobar">Link</a>
-
Здесь значение
foobar
равно5
, а не10
:<data value="5" itemprop="foobar">10</data>
…
(Взято из моего ответа на закрытый вопрос о SO.)