w3c验证警告:文章缺少标题

时间:2018-06-05 18:20:09

标签: html5 w3c-validation

我的网页只包含以下HTML代码:

<article>
    <nav>
        <a href="test.html" rel="parent">Back</a>
    </nav>
    <header>
        <h2>Test</h2>
    </header>
    <p>Test</p>
</article>

当我尝试validate it时,为什么会收到此警告?

  

警告:文章缺少标题。考虑将h2 - h6元素用于add identifying headings to all articles

     

从第10行第2栏;到第10行,第10栏

     

<body>↩↩↩ <article> ↩ <na

1 个答案:

答案 0 :(得分:0)

原因是分区内容元素(在您的案例中为nav)位于标题内容元素(在您的案例中为h2)之前:

<!-- A -->
<article>
  <nav></nav>
  <h2>Test</h2>
</article>

如果您切换它们,验证器不会报告警告:

<!-- B -->
<article>
  <h2>Test</h2>
  <nav></nav>
</article>

请参阅这些片段生成的文档大纲部分:

<!-- A -->

- article (no heading)
-- nav (no heading)
- "Test" (h2 of an implied section, on the same level as the article)
<!-- B -->

- "Test" (h2 of article)
-- nav (no heading)

规范参考

Creating an outline描述了算法。我认为相关的步骤是这一步(但我不习惯阅读这样的算法,所以最好带上一点点盐):

  

输入sectioning content元素时   运行以下步骤:

     
      
  1. 如果current outline owner不为null,请运行以下子步骤:

         
        
    1. 如果current section没有标题,请创建隐含标题,并将其作为current section的标题。
    2.   
  2.   

据我了解,这就是示例&#34; A&#34;:

  1. 算法输入切片内容元素(article)。
  2. 之前找到标题(h2),它会找到另一个切片内容元素(nav),并立即输入,因此引用的步骤适用。
  3. article仍然是current outline ownercurrent section,因此子步骤适用(因为current outline owner不为空)。
  4. 由于current section(→article)没有标题(它尚未找到h2),因此会创建隐含标题。所以article有一个标题,但不是你的h2
  5. 我认为规范理想情况下也会在文本(I was surprised by this, too)中对此进行描述。

    验证者问题跟踪器中的相关帖子:Warning issued when headers are nested in an article