Могу ли я использовать другой корневой элемент на странице HTML?

Из любопытства я читал статью " Декларация типа документа" в Википедии, когда обнаружил роль HTML в объявлении DOCTYPE:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

Согласно Википедии, первый атрибут HTML является корневым элементом документа и, следовательно, должен быть открыт первым.

... в XHTML корневой элемент <html>, будучи первым открытым элементом (после объявления doctype) и последним закрытым.

Поэтому мне было интересно, если бы я структурировать документ так:

<!DOCTYPE burrito PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<burrito>
    <head></head>
    <body>
    A burrito is a great way to wrap a webpage.
    </body>
</burrito>

будет ли веб-браузер потреблять мой <burrito> или завернуть в <html> тег?

2 ответа

Решение

Ответ на вопрос в заголовке "Нет", потому что все спецификации HTML определяют html элемент в качестве корневого элемента. Вопрос о том, какие браузеры могут обрабатывать ошибки и почему, когда вы нарушаете это, не особенно интересен, и следует ожидать различий между браузерами.

В любом случае, фальшивый doctype заставляет браузеры переходить в режим Quirks, и это не имеет смысла, так как браузеры не заботятся о doctypeЗа исключением режима "Причуды", "Режима стандартов" или какого-либо промежуточного режима. Они даже не читают упомянутое определение типа документа, поэтому они не обнаружат несоответствие.

Это будет завернуто в <html>, Как это:

<!DOCTYPE burrito PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>....</head>
    <body>
        <burrito>
            A burrito is a great way to wrap a webpage.
        </burrito>
    </body>
</html>
Другие вопросы по тегам