SDTT中的错误:“SiteNavigationElement不是additionalType属性的已知有效目标类型。”

时间:2017-07-28 13:48:11

标签: schema.org microdata

我尝试了一个简单的示例,但是当我使用Google Structured Data Testing Tool对其进行测试时,SiteNavigationElement无效。它给出了错误:

  

SiteNavigationElement不是additionalType属性的已知有效目标类型。

微观数据:

<div itemscope itemtype="http://schema.org/WebPageElement">
  <link itemprop="additionalType" href="http://schema.org/ItemList" />
  <meta itemprop="name" content="navigation_menu" />
  <ul>

    <li itemprop="additionalType" itemscope itemtype="http://www.schema.org/SiteNavigationElement">
      <span itemprop="itemListElement">
        <a href="http://www.example.com/link_1" itemprop="url">
          <span itemprop="name">Link 1</span>
        </a>
      </span>
    </li>

    <li itemprop="additionalType" itemscope itemtype="http://www.schema.org/SiteNavigationElement">
      <span itemprop="itemListElement">
        <a href="http://www.example.com/link_2" itemprop="url">
          <span itemprop="name">Link 2</span>
        </a>
      </span>
    </li>

  </ul>
</div>

2 个答案:

答案 0 :(得分:1)

additionalType属性不应该用于创建另一个项目(使用itemscope + itemtype进行处理)。它的工作是提供其他类型的URI,因此URI本身就是值。

您似乎想在导航中标记每个链接。这不是SiteNavigationElementcan only be used to mark up the whole navigation所允许的,因此它是typically useless)。

可以使用ItemList,您可以SiteNavigationElement作为additionalType(但我不希望任何消费者使用此功能):

<div itemscope itemtype="http://schema.org/ItemList">
  <link itemprop="additionalType" href="http://schema.org/SiteNavigationElement" />
  <ul>
    <li itemprop="itemListElement" itemscope itemtype="http://schema.org/WebPage">
      <a href="/link-1" itemprop="url"><span itemprop="name">Link 1</span></a>
    </li>
    <li itemprop="itemListElement" itemscope itemtype="http://schema.org/WebPage">
      <a href="/link-2" itemprop="url"><span itemprop="name">Link 2</span></a>
    </li>
  </ul>
</div>

或者作为实际的MTE(没有additionalType):

<div itemscope itemtype="http://schema.org/ItemList http://schema.org/SiteNavigationElement">
  <ul>
    <li itemprop="itemListElement" itemscope itemtype="http://schema.org/WebPage">
      <a href="/link-1" itemprop="url"><span itemprop="name">Link 1</span></a>
    </li>
    <li itemprop="itemListElement" itemscope itemtype="http://schema.org/WebPage">
      <a href="/link-2" itemprop="url"><span itemprop="name">Link 2</span></a>
    </li>
  </ul>
</div>

答案 1 :(得分:0)

与@unor的上述MTE示例相同,但JSON-LD中除外。 (如果列表中有ID,则可以使用它们。)

<script type="application/ld+json">
{
  "@context":"http://schema.org",
  "@type":["ItemList", "SiteNavigationElement"],
  "@id": "https://example.com/#nav",
  "url":"https://example.com/#nav",
  "itemListElement":[
    {
      "@type":"WebPage",
      "position":1,
      "name": "home",
      "@id": "https://example.com/#home",
      "url":"https://example.com/home.html"
    },
    {
      "@type":"WebPage",
      "position":2,
      "name": "Core Solutions",
      "@id": "https://example.com/#core",
      "url":"https://example.com/core.html"
    }
  ]
}
</script>