Как сослаться на объявление другого элемента из нескольких других элементов, чтобы удовлетворить schema.org? - PullRequest
0 голосов
/ 26 мая 2020

После долгих поисков того, как правильно ссылаться на один элемент из другого, я нашел этот минимальный пример , который демонстрирует, как ссылаться на Organization элемент как branchOf из Hotel пункт. Он определяет атрибут itemprop="branchOf" в Organization, который становится свойством элемента Hotel после ссылки на него.

<div itemprop="branchOf" itemscope itemtype="http://schema.org/Organization" id="schema-organization">
 <h1 itemprop="name">The Hotel Chain</h1>
</div>

<div itemscope itemtype="http://schema.org/Hotel" itemref="schema-organization">
 <h2 itemprop="name">Hotel Location 1</h2>
</div>

Этот пример подтверждает.

Но теперь мне нужно добавить Person, который работает для этого Organization. Я мог бы использовать ту же концепцию, определив itemprop="worksFor" на Organization, а затем сославшись на это из моего Person, вот так:

<div itemprop="worksFor" itemscope itemtype="http://schema.org/Organization" id="schema-organization">
 <h1 itemprop="name">The Hotel Chain</h1>
</div>
<div itemscope itemtype="http://schema.org/Hotel" itemref="schema-organization">
 <h2 itemprop="name">Hotel Location 1</h2>
</div>
<div itemscope itemtype="http://schema.org/Person" itemref="schema-organization">
    <div itemprop="name">John Doe</div>
</div>

И Person правильно получает worksFor атрибут, чтобы показать здесь Organization.

Но теперь мне нужно удалить itemref из Hotel, иначе он жалуется, что не распознает атрибут worksFor. И если я это сделаю, Hotel больше не будет ссылаться на Organization каким-либо образом, поэтому это не его ветвь.

Значит, это ситуация либо-либо.

Как я могу декларировать оба? Person должен работать с Organization, а Hotel должен быть ветвью Organization.

1 Ответ

1 голос
/ 26 мая 2020

Вы можете использовать itemid и ссылаться на один и тот же itemid из каждой сущности. например,

<div itemscope itemtype="http://schema.org/Organization" itemid="#organization">
 <h1 itemprop="name">The Hotel Chain</h1>
</div>
<div itemscope itemtype="http://schema.org/Hotel" >
 <h2 itemprop="name">Hotel Location 1</h2>
 <meta itemprop="branchOf" itemscope itemid="#organization"/>
</div>
<div itemscope itemtype="http://schema.org/Person">
    <div itemprop="name">John Doe</div>
    <meta itemprop="worksFor" itemscope itemid="#organization"/>
</div>
...