Предупреждение о проверке w3c: в статье отсутствует заголовок - PullRequest
0 голосов
/ 05 июня 2018

У меня есть страница, содержащая только следующий HTML-код:

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

Почему я получаю это предупреждение, когда пытаюсь проверить его ?

Предупреждение : в статье отсутствует заголовок.Попробуйте использовать h2 - h6 элементы для добавления идентифицирующих заголовков ко всем статьям .

Из строки 10, столбец 2;в строку 10, столбец 10

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

1 Ответ

0 голосов
/ 06 июня 2018

Причина в том, что элемент контента секционирования (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)

Ссылка на спецификацию

Создание схемы описывает алгоритм.Я думаю, что уместным шагом является этот (но я не привык читать такие алгоритмы, поэтому лучше взять его с крошкой соли):

При входе в секцию content element
Выполните следующие шаги:

  1. Если current outline owner не равно NULL, запустите эти подшаги:

    1. Еслиcurrent section не имеет заголовка, создайте подразумеваемый заголовок и пусть он будет заголовком для current section.

Насколько я понимаю, это то, чтопроисходит с примером «A»:

  1. Алгоритм вводит элемент содержимого секционирования (article).
  2. До он находит заголовок (h2), он находит другой элемент содержимого секционирования (nav) и вводит его немедленно, поэтому применяется указанный в кавычках шаг.
  3. article по-прежнему является current outline owner и current section, поэтому подэтапыприменить (потому что current outline owner не является нулевым).
  4. Поскольку у current section (→ article) нет заголовка (он еще не нашел h2), создается подразумеваемый заголовок.Таким образом, article получил заголовок, но это не ваш h2.

Я думаю, что спецификация идеально описала бы это также в тексте ( Я был удивлен этимТоже ).

Соответствующий пост в трекере проблем валидатора: Предупреждение выдается, когда заголовки вложены в статью

...