Гарантируют ли типы документов HTML формальный синтаксический анализ?

#html #browser #html-parsing

#HTML #браузер #html-синтаксический анализ

Вопрос:

Гарантируют ли типы документов HTML формальный синтаксический анализ?

Например, если я использую определенный тип документа, а затем создаю действительно плохой HTML, заставит ли это браузер вернуться в режим Quirks или гарантировать синтаксический анализ с использованием doctype?

РЕДАКТИРОВАТЬ: Это также включает поведение CSS.

Ответ №1:

Гарантируют ли типы документов HTML формальный синтаксический анализ?

Нет.

Вам будет сложно найти браузер, который будет выполнять синтаксический анализ с использованием правил SGML при любых обстоятельствах.

Content-type XHTML запускает в некоторых браузерах синтаксический анализ с использованием правил XML.

Большинство браузеров будут использовать свой собственный синтаксический анализатор tag soup или алгоритм HTML 5 для любого текстового / html-документа.

Например, если я использую определенный тип документа, а затем создаю действительно плохой HTML, заставит ли это браузер вернуться в режим Quirks или гарантировать синтаксический анализ с использованием doctype?

Режим Quirks имеет очень мало общего с синтаксическим анализом. В основном речь идет о том, как интерпретируется CSS.

Однако выбор между режимами Quirks / Standards / Almost Standards / etc почти полностью осуществляется типом документа. Исключение составляют MIME-тип XHTML (который переводит некоторые браузеры в стандартный режим, независимо от типа документа) и (в случае MSIE) HTTP-заголовки и <meta> данные, совместимые с X-UA.

Ответ №2:

До тех пор, пока doctype является признанным допустимым типом документа, тогда да, вам должно быть гарантировано, что вы находитесь в режиме стандартов, а не в режиме причуд.

Режим Quirks предназначен не для рендеринга HTML-кода плохого качества; он существует, потому что это был единственный режим рендеринга для старых браузеров, таких как IE5, а когда появились более новые браузеры (IE6), они хотели поддерживать режим новых стандартов, но также должны были быть обратно совместимы.

Эти старые браузеры не знали о типах документов, и поэтому создателям браузеров пришла в голову идея сказать, что если вы указали тип документа, вы, должно быть, ожидаете перехода в более новый браузер и, следовательно, ожидаете стандартного режима.

Сказав все это, если у вас некачественный HTML-код, на самом деле не будет иметь значения, находитесь ли вы в режиме стандартов или в режиме quirks — браузеру все равно придется решать, что делать с вашим супом тегов, и вы, вероятно, получите разные результаты в разных браузерах, независимо от режима рендеринга.