Имеет ли 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.

Author: unor, 2017-12-22

1 answers

Что говорится в спецификации

Да, такое поведение является правильным. Раздел 5.4 спецификации микроданных W3C описывает, какое значение используется.

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

Это относится к этим шести атрибутам1: content2, 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).

 9
Author: unor, 2017-12-22 23:37:05