使用Microdata时,在父项目和子项目范围内共享属性

时间:2016-02-26 11:11:26

标签: html5 schema.org microdata google-rich-snippets

我正在使用Microdata来标记博客文章。我遇到了一个问题,我无法找到Google的解决方案。

简而言之,我想使用嵌套的itemscope中已经指定的属性作为父项目。

我已将代码简化为以下示例,我想将作者图片用作博客文章的图片。

<article itemscope itemtype="http://schema.org/BlogPosting">
  <meta itemprop="dateModified" content="2016-02-25" />
  <div itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
    <meta itemprop="name" content="Test Organisation">
    <div itemprop="logo" itemscope itemtype="http://schema.org/ImageObject">
        <link itemprop="url" href="#" />
    </div>
  </div>
  <link itemprop="mainEntityOfPage" href="#" />
  <div class="heading">
    <h2 itemprop="name headline">Imported Article 1</h2>
  </div>
  <div class="author-aside" itemprop="author" itemscope itemtype="http://schema.org/Person">
    <img itemprop="image" src="#" />
    <div class="name" itemprop="name">Author Name</div>
    <div class="role" itemprop="jobTitle">Job Title</div>
  </div>
  <span itemprop="articleBody">
    <p>Body Content</p>
  </span>
  <br />
  <span content="2016-06-30" itemprop="datePublished">Thursday 30th June 2016</span></article>

我已尝试在评论&#34; CODE I NOW HAVE&#34;下使用间接建议in this question的答案。我做了我需要它,但产生了一个新的错误:

  

属性itemtype的值无效。

我正在使用this service来验证微数据。

1 个答案:

答案 0 :(得分:1)

以下是两个不同的问题。

Microdata的解决方案

要将image项中的Person属性也添加到BlogPosting项,您可以使用itemref属性:

  1. image属性(Person)提供id属性。
  2. itemref属性添加到BlogPosting类型的元素,并引用id值。
  3. 示例:

    <article itemscope itemtype="http://schema.org/BlogPosting" itemref="author-image">
    
      <div itemprop="author" itemscope itemtype="http://schema.org/Person">
        <img itemprop="image" src="#" id="author-image" />
      </div>
    
    </article>
    

    Google Rich Snippets的解决方案

    虽然上述标记是有效的Microdata并且恰当使用了Schema.org词汇表,但Google还有其他规则/限制来显示其中一个Rich Snippets(或知识图谱功能)。

    在Schema.org中,image property可以有一个网址或ImageObject项作为值,但Google希望看到ImageObject的Rich Snippets。

    (就像你使用logo财产一样。)