Имеет ли itemprop другое значение для ссылок по сравнению с тегами span?
Я использую Schema.org разметка для Person
, но я получаю противоречивые результаты в инструменте тестирования расширенных фрагментов кода Google при использовании тега <a>
по сравнению с тегом <span>
. Возьмем эти два примера:
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
<a href="http://example.com/user/username">
<span itemprop="name">username</span>
</a>
</span>
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
<a href="http://example.com/user/username" itemprop="name">username</a>
</span>
Первое показывает, что имя анализируется как username
, но когда я попытался сохранить второе в HTML, оно показывает имя пользователя http://example.com/user/username
, т.Е. URL ссылки.
Почему это происходит и правильно ли это поведение? Я не могу найти никаких ресурсов, которые делают различие между itemprop
по ссылке и span
.
1 answers
Что говорится в спецификации
Да, такое поведение является правильным. Раздел 5.4 спецификации микроданных W3C описывает, какое значение используется.
В большинстве случаев содержимое элемента используется как значение itemprop
, но в некоторых случаях значение атрибута используется как значение itemprop
.
Это относится к этим шести атрибутам1: content
2, src
, href
, data
, value
, datetime
.
Что это означает на практике
Если вы хотите использовать содержимое a
элемент (вместо URL в его атрибуте href
) в качестве значения свойства необходимо использовать/добавить подходящий родительский или дочерний элемент:
<a href="ignored-url"><span itemprop="property">property value</span></a>
<span itemprop="property"><a href="ignored-url">property value</a></span>
Если вы хотите указать URL-адрес в качестве значения свойства, вы должны использовать itemprop
на одном из Элементы свойств URL-адреса ( т.е. элементы, которые могут иметь href
, src
, или атрибут data
). Так что это было бы недопустимо (если только вы не хотите указать строку в качестве значения, которое просто выглядит как URL-адрес):
<!-- INVALID --> <span itemprop="property">http://example.com/foo</span>
1 Это должно быть допустимо, чтобы элемент имел этот атрибут. Так что для (недействительного!) <div href="" itemprop=""></div>
, используется содержимое элемента, а не значение href
.
2 В старой спецификации микроданных WHATWG и W3C только элемент meta
может иметь атрибут content
, но новая спецификация микроданных W3C (в настоящее время рабочий проект) допускает content
для любого элемента. Если элемент имеет атрибут content
, а также один из других перечисленных атрибутов, content
используется.
3 Микроданные делают недопустимыми для имейте один из элементов свойства URL без соответствующего атрибута URL (т. е., href
, src
, data
), за исключением элемента link
(но HTML уже требует наличия атрибута href
).