如何在多个HTML元素上拆分itemscope?

时间:2015-03-19 00:49:03

标签: html schema.org microdata

我有以下HTML:

<body itemscope itemtype="http://schema.org/WebPage">
  <header itemscope itemtype="http://schema.org/WPHeader">
    <nav itemscope itemtype="http://schema.org/SiteNavigationElement">
    </nav>
    ...
    <div itemscope itemtype="http://schema.org/Organization" itemref="objectDetails">
      <span itemprop="name">Org name</span><br>
      <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
        ...
      </span>
    </div>
  </header>
  <ul itemprop="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList">
    <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">..</li>
    ...
  </ul>
  <div id="objectDetails">
    <div itemprop="description">...</div>
    <div itemprop="foundingDate">...</div>
    ...
  </div>
</body>

此网页显示有关某个特定组织的信息。有关组织的一些信息应显示在页眉中,而不是显示在页面的中心。在itemref属性的帮助下,我可以分割有关组织的信息并将其放在两个单独的div上。

如果我使用谷歌结构化数据测试工具测试上述HTML - 它会正确提取有关组织的信息 - 显示两个div的属性,但它显示WebPage对象的验证错误:

  

Google无法识别foundingDate类型的对象的属性WebPage

告诉Google在objectDetails div中的属性不属于外部itemscope(WebPage)的正确方法是什么?如果我将itemscope itemtype="http://schema.org/Organization"添加到objectDetails div - 那么Google会在我的网页上看到两个独立的组织。

1 个答案:

答案 0 :(得分:2)

这是不可能的。

可能的“解决方案”:

  • 请勿在{{1​​}}或html等“容器”上使用该项目。在不包含整个内容的元素上使用它,并在需要时使用body

  • 使用多个项目并在itemref中为它们指定相同的URI。然而,目前尚不清楚if/when/how Schema.org supports itemid,消费者的支持可能很糟糕。

    (使用RDFa instead of Microdata会自然允许这样做。)

  • 添加一个无类型的项目(通过添加itemid而不是itemscope)到包含您不想添加到原始父项的所有属性的元素。示例:123