schema.org SiteNavigationElement的正确用法是什么?

Gie*_*ers 38 seo html5 schema.org

在SEO方面......

是否最好将该方案放在包含所有链接的父级上?

<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>
Run Code Online (Sandbox Code Playgroud)

......或者每个链接应该被视为它自己的元素吗?

<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>
Run Code Online (Sandbox Code Playgroud)

uno*_*nor 23

如果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>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,所有属性都属于整个导航,因此这意味着该url属性将指定此导航的URL(而不是此导航中链接的URL!).

  • 所以根据你的回答这个Microdata只是向serach引擎介绍菜单......不是菜单的结构! (3认同)
  • @alex:它通常没用.请参阅上面评论中的链接.或者[这个答案](http://stackoverflow.com/a/35391904/1591669),或者[这一个](http://wordpress.stackexchange.com/a/218014/34147).我还为Schema.org创建了[一个问题](https://github.com/schemaorg/schemaorg/issues/1251). (2认同)

Joh*_*rry 13

根据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>
Run Code Online (Sandbox Code Playgroud)

  • 2个downvotes没有解释这个答案有什么不正确? (2认同)

Ste*_*old 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>
Run Code Online (Sandbox Code Playgroud)

  • 这样做会产生一个URL和名称列表,所有这些都在同一个组中,而单个URL和名称之间没有任何关系.我认为应该有一些方法来表明每个列表元素是一个具有一个URL和一个名称的实体. (4认同)
  • 当然,一般来说你是对的。但当我们谈论导航时,我假设所有链接都属于在一起,不是吗? (2认同)

dav*_*rey 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>
Run Code Online (Sandbox Code Playgroud)