Я помещаю сайт с микроданными Schema.org и столкнулся с quandry. Я понимаю, что я могу определить книгу, а затем его автор (я буду использовать ../, а не http://schema.org/ для пространства):html5 - Microdata - Добавление книги к автору (не наоборот)
<div itemscope itemtype="../Book">
<span itemprop="name">Charlie and the Chocolate Factory</span>
written by <span itemprop="author">Roald Dahl</span>
</div>
Но я мечение страницы об авторе, поэтому я хочу способ перечислить свои книги и сказать, что все эти пункты написаны им, без снова и снова перечисляя его имя:
<article itemscope itemtype="../Person" id="main">
<h1 itemprop="name">Roald Dahl</h1>
<p>His books included <span itemscope itemtype="../Book">Charlie and the
Chocolate Factory</span> and
<span itemscope itemtype="../Book">James and the Giant Peach</span></p>
</article>
Есть идеи? Просто поставить itemref = "main" не помогает (потому что я пытаюсь дать конкретное отношение, то есть автора, а не просто связывать эти две вещи вообще). Делает ли пустой пролет элемента смысла ?:
<span itemscope itemtype="../Book">James and the Giant Peach
<span itemprop="author" itemref="main"></span></span>
UPDATE: Я думаю, что я понял, это один из, для тех, кто смотрит. Вы можете определить itemprop для itemcope, который будет использоваться позже с itemref. Так что я думаю, что ответ:
<article itemscope itemtype="../Person" itemprop="author" id="main">
<h1 itemprop="name">Roald Dahl</h1>
<p>His books included <span itemscope itemtype="../Book" itemref="main">Charlie
and the Chocolate Factory</span> and
<span itemscope itemtype="../Book" itemref="main">James and the Giant Peach</span>
</article>
Не уверен, что я буду делать, если там было больше, чем один itemprop я хотел связать назад (Schema.org полна на 2-полосные отношениях только с одним из этих способов), но это решает мою особую проблему.
UPDATE2: Это решило мою предыдущую проблему, но теперь я не могу встроить ее в любые другие предметы. Итак, я хочу, чтобы пометить все это как статьи, я не могу это сделать, как:
<main itemscope itemtype="../Article">
<article itemscope itemtype="../Person" itemprop="author" id="main">
<h1 itemprop="name">Roald Dahl</h1>
....
</article></main>
Теперь мой itemprop = хак «автор» также назначен на верхний уровень статьи. Теперь мой код говорит людям, что Роальд Дал написал не только книги, но и эту статью!
Любые предложения, как решить эту проблему, или решение моей первоначальной проблемы, которая не вызывает этой проблемы?
Спасибо, за это, к сожалению, моя вторая проблема мешает обеим решениям. Это страница о Роальде Дале ([здесь это pre-Microdata'd] (http://www.spartacus.schoolnet.co.uk/SPYdahl.htm), если вам интересно). Поэтому мне действительно нужна вся статья внутри Person itemscope, так как я устанавливаю itemprops для супруга, родителей, филиалов и т. Д. Решение 1 потребовало бы миллиона itemrefs, чтобы назначить Roald Dahl всем этим элементам. Решение 2 определяло бы половину моих семантических связей (супруга, родителей и т. Д.) Одному объекту Person и информации о книге другому объекту с тем же именем. –
Еще один вариант - сделать расширение (http://schema.org/docs/extension.html), чтобы получить нужные вам классы и свойства. Или измените свои требования (например, не используйте статью). – ajax
В балансе я пойду за вашим решением 2. Он сохраняет код простым, и вы надеетесь, что любая поисковая система будет считать, что два объекта с именем Roald Dahl - это одно и то же (тем более, что, как и в этом случае, знание вероятно, в их базе данных). Я думал, что я мог бы также создать «авторское» расширение в классе Person. Можно ли просто положить это как itemprop? Инструмент Google Structured Data будет показывать ошибки - должен ли я просто игнорировать это? –