元素h1不得作为地址元素的后代出现

时间:2014-01-08 21:58:42

标签: html5 seo semantic-web semantic-markup microdata

我正在开发一个个人网站,第一部分必须包含作者详细信息(如他所工作的组织和电子邮件)。我正在尝试为搜索引擎抓取工具设置内容。

我正在使用HTML 5和微数据。以下是代码:

<header>
  <address itemscope itemtype="http://schema.org/Person">
    <h1 lang="pt" itemprop="name">Lorem Ipsum Dolor Sit Amet</h1>
    <img itemprop="image" src="http://lorempixel.com/150/200/" lang="pt" alt="Lorem Ipsum Dolor Sit Amet">
    <p itemprop="jobTitle">Professor of ...</p>
    <div itemprop="worksFor" itemscope itemtype="http://schema.org/Organization">
      <span itemprop="department" itemscope itemtype="http://schema.org/Organization"><span lang="pt" itemprop="name">Departamento de ...</span></span><br>
      <span itemprop="name" lang="pt">Faculdade de Engenharia ...</span><br>
      <div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
        <span itemprop="streetAddress">Rua Dr. Roberto ...</span>, <span itemprop="postalCode">4200-465</span> <span itemprop="addressLocality">Porto, Portugal</span>
      </div>
    </div>
    <p>Email: <a itemprop="email" href="mailto:foo@bar.com">foo@bar.com</a></p>
  </address>
</header>

使用W3C验证器,我收到错误:

Line 11, Column 38: The element h1 must not appear as a descendant of the address element.

<h1 lang="pt" itemprop="name">Lorem Ipsum Dolor Sit Amet</h1>

我理解错误。我正在使用h1因为作者的名字也是网站的名称。

我的问题是你如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

解决了它。

即使标题与作者姓名相同,它们也会对应不同的内容。向上移动标题,并在meta中添加了address标记,其中包含此人的姓名。

<body>
  <header>
    <h1 lang="pt">Lorem Ipsum Dolor Sit Amet</h1>
    <address itemscope itemtype="http://schema.org/Person">
      <meta lang="pt" itemprop="name" content="Lorem Ipsum Dolor Sit Amet">
      <img itemprop="image" src="http://lorempixel.com/150/200/" lang="pt" alt="Lorem Ipsum Dolor Sit Amet">
      <p itemprop="jobTitle">Professor of ...</p>
      <div itemprop="worksFor" itemscope itemtype="http://schema.org/Organization">
        <span itemprop="department" itemscope itemtype="http://schema.org/Organization"><span lang="pt" itemprop="name">Departamento de ...</span></span><br>
        <span itemprop="name" lang="pt">Faculdade de Engenharia ...</span><br>
        <div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
          <span itemprop="streetAddress">Rua Dr. Roberto ...</span>, <span itemprop="postalCode">4200-465</span> <span itemprop="addressLocality">Porto, Portugal</span>
        </div>
      </div>
      <p>Email: <a itemprop="email" href="mailto:foo@bar.com">foo@bar.com</a></p>
    </address>
  </header>
  ...
</body>

答案 1 :(得分:0)

嗯..

Renato Rodrigues:“我理解错误。我使用的是h1,因为作者的名字也是网站的名称。”

如果作者的姓名也是网站的名称,那么作者的地址就是文件的地址,你的html页面的地址,对吧?

该标题是您的正文的标题还是正文中某个部分的标题? 如果它是一个部分的标题,那么你需要将它从那里取出并直接放在身体上: 例如:http://w3-video.com/Web_Technologies/HTML5/html5_address_tag.php

答案 2 :(得分:0)

是的,如果它是身体的标题然后就可以了:地址在标题内,标题直接在身上