为什么 Google 爬虫和标记验证器将此视为错误?

Why Google crawler and Markup Validator sees this as an error?

这几天我一直在试图找出为什么我从 Markup Validation 得到这个错误(link 是网站的实际验证。不要介意其中的其他错误,最上面的 <p> 标签是目前的问题,其他错误来自我尚未修复的数据库内容)并且 Google 的网站管理员工具 "Fetch as Google" 也讨厌它。我敢肯定这是非常微不足道的事情。

验证者说:

"No p element in scope but a p end tag seen." As you can see I have p element too.

Google 爬虫说:

我假设鲜红色是错误的,他们应该有一个颜色图例...无论如何我也不明白 itemtype 有什么问题。

实际代码:

<header>
    <h1>
        <a itemprop="url" href="http://www.rovarvadasz.hu/"><img itemprop="logo" src="/images/header_bg.png" alt="Rovar Vadász"></a>
    </h1>
    <div id="contact" itemscope itemtype="http://schema.org/LocalBusiness">
        <p>
            <ul>
                <li>Telefon: <span itemprop="telephone"><a href="tel:0616303958">06 (1) 630-3958</a></span></li>
                <li>Nyitvatartás: munkanapokon <time itemprop="openingHours" datetime="09:00">9</time>-<time itemprop="openingHours" datetime="16:00">16</time> óráig</li>
                <li>Fax: <span itemprop="faxNumber">06 (1) 240-1546</span></li>
                <li>Mobil: <span itemprop="telephone"><a href="tel:06204224558">06 (20) 422-4558</a></span></li>
                <li>E-mail: <a href="mailto:info@rovarvadasz.hu" itemprop="email">info@rovarvadasz.hu</a></li>
            </ul>
        </p>
    </div>
</header>

您的错误都很轻微,但是由以下原因引起的:

1) p 标签被客户端自动关闭,因为它命中了 <ul> 标签,所以实际上你的语句是:

<p> ... </p> <ul> ... </ul> </p>

这是因为 List 元素不应该是 Paragraph 元素的 sub-elements。所以客户端浏览器试图解决这个问题,但还剩下 </p>

2) 您的第 75 行 itemprop 不在您的 div 中,而是在您的 header 元素中的锚点中。您的 itemprop="logo" 是免费的,不在任何项目范围内。

3) 我还看到其他错误,您的元素用 /> 关闭,这在 HTML5

上不需要