有没有办法通过Microdata schema.org介绍菜单结构?

时间:2014-03-11 09:25:45

标签: html microdata schema.org

有没有办法通过Microdata 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>

1 个答案:

答案 0 :(得分:4)

您没有使用任何属性将嵌套项与其父项相关联。有关此问题的简短示例,请参阅my answer on Webmasters的第二部分。

我不认为Schema.org为此案例提供了适当的类型和属性。此外,SiteNavigationElement is probably (not definitely) meant for the whole navigation menu,而非其单一链接。

我能想到的最接近的是:

<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组成。但这有点滥用,尤其是the itemListElement property expects Text,而不是其他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值不是&#34; AAA&#34;但是&#34; AAA BBB CCC&#34;。

所以也许:

<!-- … -->
<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>
<!-- … -->

这会给出正确的结构,但是,嗯......它很难看,不是吗?必须复制&#39; AAA&#39;的名称。条目。


为什么你想首先用Microdata标记这个?您是否期望消费者(如搜索引擎)选择这种方式?难道他们不能简单地解析HTML,因为使用li和嵌套的ul元素已经传达了结构吗?根据您的需要,您可以使用"local" Microdata vocabulary