2012-09-19 50 views
30

在搜索引擎优化条件...schema.org SiteNavigationElement的正确用法是什么?

是最好把计划放在包含所有链接的父级?

<nav itemscope="itemscope" itemtype="http://www.schema.org/SiteNavigationElement"> 
    <a href="#">Link 1</a> 
    <a href="#">Link 2</a> 
    <a href="#">Link 3</a> 
</nav> 

......还是应该将每个链接视为自己的元素?

<nav> 
    <span itemscope="itemscope" itemtype="http://www.schema.org/SiteNavigationElement"> 
     <a itemprop="url" href="#"> 
      <span itemprop="name">Link 1</span> 
     </a> 
    </span> 
    <span itemscope="itemscope" itemtype="http://www.schema.org/SiteNavigationElement"> 
     <a itemprop="url" href="#"> 
      <span itemprop="name">Link 2</span> 
     </a> 
    </span> 
    <span itemscope="itemscope" itemtype="http://www.schema.org/SiteNavigationElement"> 
     <a itemprop="url" href="#"> 
      <span itemprop="name">Link 3</span> 
     </a> 
    </span> 
</nav> 

回答

9

第一个答案是正确的,但我愿意为混合两者(HTML5-)语义:

<nav itemscope itemtype="http://schema.org/SiteNavigationElement"> 
    <ul> 
     <li> 
      <a itemprop="url" href="http://example.com/"> 
       <span itemprop="name">Link 1</span> 
      </a> 
     </li> 
    </ul> 
</nav> 
+4

这样做的结果的网址和名称,都在同一组的名单,没有一个单一的网址和名称之间的任何关系。我认为应该有一些方法来表明每个列表元素是一个具有一个URL和一个名称的实体。 –

+1

一般而言,你是对的,当然。但是正如我们在谈论导航时,我假设这些链接都属于一个整体,不是吗? –

19

如果SiteNavigationElement是为整个导航(即导航链接列表),你的第一个例子是正确的。

如果SiteNavigationElement是针对单个导航条目(即,导航链接列表中的链接),则您的第二个示例是正确的。

我觉得Schema.org不明白地定义其变体的意思,因为他们只会说:

的页面的导航元素。

然而,父类型WebPageElement定义为:

一个网页元件,像一个表或​​图像

此外,所有的其他子类型(如TableWPFooter)似乎被用于整个事情,而不是事物的具体部分。

因此,这似乎表明,整个导航应标明了,不是每个单独的链接:

<nav itemscope itemtype="http://schema.org/SiteNavigationElement"> 
<ul> 
    <li><a href="/link-1">Link 1</a></li> <!-- don’t use the 'url' or 'name' property here! --> 
    <li><a href="/link-2">Link 2</a></li> 
</ul> 
</nav> 

在这种情况下,所有的属性属于整个导航,所以这意味着url财产将指定此导航的URL(并且而不是此导航中的链接的URL!)。

+3

所以根据你的回答,这Microdata只是引入菜单serach引擎...不是结构的菜单! – user3307827

+0

@chharvey:是的。它[在非HTML上下文或特殊情况下可能有意义](http://stackoverflow.com/a/27867175/1591669),但对于典型的Web页面,我不会使用“WebPageElement”及其子类型像'SiteNavigationElement'。 – unor

+0

如果有一个包含微数据的body标签:''我需要添加'itemprop'来导航吗?如果是,那么导航中'itemprop'的值是多少? – alex

5
<nav role="navigation"> 

    <ul role="menubar" aria-activedescendant=""> 

     <li role="presentation" itemscope itemtype="https://schema.org/SiteNavigationElement"> 
      <a href="" role="menuitem" tabindex="-1" itemprop="url"> 
       <span itemprop="name">Link 1</span> 
      </a> 
     </li> 

    </ul> 

</nav> 
10

Search Engine Land,它应该是这样的:

<ul itemscope itemtype="http://www.schema.org/SiteNavigationElement"> 
    <li itemprop="name"> 
     <a itemprop="url" href="#">Link 1</a> 
    </li> 
    <li itemprop="name"> 
     <a itemprop="url" href="#">Link 2</a> 
    </li> 
    <li itemprop="name"> 
     <a itemprop="url" href="#">Travel Resources</a> 
    </li> 
</ul> 
+1

2 downvotes没有解释什么是不正确的这个答案? –

+0

我没有投票,但我确实发现'name'和'url'不明确。这是代表实际价值应该是什么,或者只是一个地方持有人向观众展示相关信息应该出现的位置。 –

+1

'url'标识URL,'name'标识名称(即链接2)。所以不,他们不是占位符。 –

2

schema.org/SiteNavigationElement延伸WebPageElement并且可以用来加价环节,这往往使良好的上下文链接。您可以将此架构用于页面菜单。

<nav role="navigation" itemscope itemtype="http://schema.org/SiteNavigationElement"> 
<ul> 
    <li> 
     <a href="https://yoursite.com/" title="Link to Home" itemprop="url"> 
      <span itemprop="name">Home</span> 
     </a> 
    </li> 
    <li> 
     <a href="https://yoursite.com/sample-page" title="Link to sample page" itemprop="url"> 
      <span itemprop="name">sample page</span> 
     </a> 
    </li> 
</ul>