Есть ли способ ввести структуру меню с помощью микроданных schema.org?

Есть ли способ представить структуру меню с помощью микроданных schema.org

Parent1 | Parent2 | Parent3
______________________________
Sub 1-1 | Sub-2-1 | Sub3-1
______________________________
Sub 1-2 | Sub-2-2 | Sub3-2
______________________________
Sub 1-3 | Sub-2-3 | Sub3-3

И КОД:

<div>
 <ul>
    <li>
       <span>Paent1</span><div><ul><li>sub1-1</li><li>sub1-2</li><li>sub1-3</li></ul>
    </li>

    <li>
       <span>Paent2...</ul>
    </li>

    <li>
       <span>Paent3....</ul>
    </li>
 </ul>
<div>

Я пробовал что-то вроде этого:

  <div itemscope itemtype="http://schema.org/WebPageElement">
    <meta itemprop="name" content="Main menu" />

     <ul>
        <li itemtype="http://schema.org/SiteNavigationElement">
           <span itemprop="name">Paent1</span><div><ul><li>sub1-1</li><li>sub1-2</li><li>sub1-3</li></ul>
        </li>

        <li itemtype="http://schema.org/SiteNavigationElement">
           <span itemprop="name">Paent2...</ul>
        </li>

        <li itemtype="http://schema.org/SiteNavigationElement">
           <span itemprop="url">Paent3....</ul>
        </li>
     </ul>
    <div>

person user3307827    schedule 11.03.2014    source источник


Ответы (1)


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

Я не думаю, что Schema.org предоставляет подходящие типы и свойства для этого случая. Кроме того, SiteNavigationElement, вероятно (не обязательно), предназначено для всего меню навигации, а не для его отдельных ссылок.

Самое близкое, о чем я могу думать, было бы:

<div itemscope itemtype="http://schema.org/SiteNavigationElement">

  <ul itemprop="about" itemscope itemtype="http://schema.org/ItemList">

    <li itemprop="itemListElement">…</li>

    <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ItemList">…
      <ul>
       <li itemprop="itemListElement">…</li>
       <li itemprop="itemListElement">…</li>
      </ul>
    </li>

    <li itemprop="itemListElement">…</li>

  </ul>

</div>

Это SiteNavigationElement, предмет которого состоит из ItemList, а некоторые записи этого списка снова состоят из ItemList. Но это неправильное использование, тем более что свойство itemListElement ожидает текст, а не другие ItemList предметы.

Также есть проблема, что itemListElement, значение которого равно другому ItemList, не может иметь собственное значение. Можно преодолеть это, используя:

<!-- … -->
<li itemprop="itemListElement">AAA
  <ul itemprop="about" itemscope itemtype="http://schema.org/ItemList">
    <li itemprop="itemListElement">BBB</li>
    <li itemprop="itemListElement">CCC</li>
  </ul>
</li>
<!-- … -->

Но вот проблема: значение itemListElement не "AAA", а "AAA BBB CCC".

Так что, может быть:

<!-- … -->
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ItemList">AAA
  <meta itemprop="name" content="AAA" />
  <ul>
    <li itemprop="itemListElement">BBB</li>
    <li itemprop="itemListElement">CCC</li>
  </ul>
</li>
<!-- … -->

Это дало бы правильную структуру, но, ну… некрасиво, не так ли? Необходимость дублировать имя записи «AAA».


Почему вы хотите пометить это микроданными в первую очередь? Ожидаете ли вы, что потребители (например, поисковые системы) поймут это? Разве они не могли просто разобрать HTML, который уже передает структуру благодаря использованию li и вложенных ul элементов? В зависимости от ваших потребностей вы можете использовать "локальный" словарь микроданных.

person unor    schedule 12.03.2014