У меня есть страница, содержащая только следующий 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
Причина в том, что элемент содержимого секционирования (
nav
в вашем случае) поступает перед элементом содержимого заголовка (h2
в вашем случае):Если вы их переключаете, валидатор не сообщает о предупреждении:
См. часть схемы документа, которую генерируют эти фрагменты:
Справочная информация
Создание схемы описывает алгоритм. Я думаю, что соответствующий шаг - это один (но я не привык к чтению таких алгоритмов, поэтому лучше возьмите его с солью):
Насколько я понимаю, это то, что происходит с примером "A":
article
).h2
), он находит другой элемент содержимого секции (nav
) и сразу вводит его, поэтому приведенный шаг.article
по-прежнему являетсяcurrent outline owner
иcurrent section
, поэтому применяются подшаги (потому чтоcurrent outline owner
не является нулевым).current section
(→article
) не имеет заголовка (он не нашелh2
пока), им . Таким образом,article
получил заголовок, но это не вашh2
.Я думаю, что спецификация идеально описала бы это также в текст (я тоже был этому удивлен).
Соответствующая запись в трекеру проверки валидатора: предупреждение, выданное, когда заголовки вложены в статью
<nav>
не является частью содержимого, а является мета-содержимым. Что произойдет, если вместо<nav>
я разместил там элемент<aside>
(т.е. то, что я хочу считать a-side ), это должно быть в основном проигнорировано)?aside
не имеет значения здесь, это также элемент содержимого секционирования (есть четыре:section
,article
,nav
,aside
).