ЧАВО по HTML/XHTML
Документация Flask и примерные приложения используют HTML5. Вы можете заметить, что во многих ситуациях, когда закрывающие теги необязательны, они не используются, чтобы HTML был чище и быстрее загружался. Поскольку среди разработчиков существует много путаницы по поводу HTML и XHTML, этот документ пытается ответить на некоторые из основных вопросов.
История XHTML
В течение некоторого времени казалось, что HTML собирается быть заменён XHTML. Однако на Интернете практически нет реальных сайтов XHTML (который представляет собой HTML, обработанный с использованием правил XML). Есть несколько основных причин, почему это так. Одна из них — отсутствие надлежащей поддержки XHTML в Internet Explorer. Спецификация XHTML гласит, что XHTML должен предоставляться с типом MIME application/xhtml+xml, но Internet Explorer отказывается читать файлы с этим типом MIME. Хотя настроить веб-серверы для правильной передачи XHTML относительно легко, мало кто это делает. Вероятно, это связано с тем, что правильное использование XHTML может быть довольно затруднительным.
Одна из важнейших причин затруднений — жёсткая (строгая и беспощадная) обработка ошибок XML. При обнаружении ошибки разбора XML браузер должен отобразить пользователю неприятное сообщение об ошибке вместо попытки восстановиться от ошибки и отобразить то, что он может. Большая часть генерации (X)HTML в сети основана на не-XML движках шаблонов (таких как Jinja, используемый в Flask), которые не защищают вас от случайного создания некорректного XHTML. Существуют XML-движки шаблонов, такие как Kid и популярный Genshi, но они часто связаны с большей нагрузкой во время выполнения и не так просты в использовании, так как им нужно подчиняться правилам XML.
Однако большинство пользователей предположили, что они правильно используют XHTML. Они писали XHTML doctype вверху документа и закрывали все необходимые теги (<br> преобразуется в <br/> или <br></br> в XHTML). Однако, даже если документ правильно валидируется как XHTML, то, что действительно определяет обработку XHTML/HTML в браузерах, — это тип MIME, который, как уже говорилось, часто не задаётся должным образом. Таким образом, допустимый XHTML обрабатывался как недопустимый HTML.
XHTML также изменил способ использования JavaScript. Для правильной работы с XHTML программисты должны использовать интерфейс DOM с пространством имён XHTML для запроса элементов HTML.
История HTML5
Разработка спецификации HTML5 началась в 2004 году под названием «Web Applications 1.0» рабочей группой WHATWG (которая была образована ведущими производителями браузеров Apple, Mozilla и Opera) с целью написания новой и улучшенной спецификации HTML, основанной на поведении существующих браузеров, а не на нереалистичных и несовместимых со старыми версиями спецификациях.
Например, в HTML4 <title/Hello/ теоретически разбирается точно так же, как <title>Hello</title>. Однако, поскольку люди использовали теги, похожие на XHTML, такие как <link />, производители браузеров реализовали синтаксис XHTML вместо синтаксиса, определённого спецификацией.
В 2007 году спецификация была принята в качестве основы новой спецификации HTML под эгидой W3C, известной как HTML5. В настоящее время, похоже, XHTML теряет свою актуальность, поскольку рабочая группа по XHTML 2 была распущена, а HTML5 реализуется всеми ведущими производителями браузеров.
HTML против XHTML
Следующая таблица даёт вам краткий обзор функций, доступных в HTML 4.01, XHTML 1.1 и HTML5. (XHTML 1.0 не включён, так как он был заменён XHTML 1.1 и малоиспользуемым XHTML5.)
HTML4.01 | XHTML1.1 | HTML5 | |
|---|---|---|---|
| |||
| |||
| |||
должен быть предоставлен как | |||
должен быть предоставлен как | |||
строгая обработка ошибок | |||
встроенный SVG | |||
встроенный MathML | |||
| |||
| |||
Новые семантические теги, такие как |
-
1 -
Это малоизвестная функция, унаследованная от SGML. Обычно она не поддерживается браузерами по причинам, подробно описанным выше.
-
2 -
Это для совместимости с серверным кодом, генерирующим XHTML для тегов, таких как
<br>. Его не следует использовать в новом коде. -
3 -
XHTML 1.0 — последний стандарт XHTML, который позволяет предоставлять
text/htmlпо соображениям обратной совместимости.
Что означает «строгий»?
HTML5 имеет строго определённые правила разбора, но также точно определяет, как браузер должен реагировать на ошибки разбора, в отличие от XHTML, который просто указывает, что разбор должен быть прерван. Некоторые люди сбиты с толку, похоже, некорректным синтаксисом, который всё ещё генерирует ожидаемые результаты (например, пропущенные закрывающие теги или необрамлённые значения атрибутов).
Некоторые из них работают благодаря мягкой обработке ошибок, которую большинство браузеров используют при обнаружении ошибки разметки, другие фактически указаны. Следующие конструкции являются необязательными в HTML5 по стандарту, но браузеры должны их поддерживать:
- Оборачивание документа в тег
<html> - Оборачивание элементов заголовка в
<head>или элементов тела в<body> - Закрытие тегов
<p>,<li>,<dt>,<dd>,<tr>,<td>,<th>,<tbody>,<thead>, или<tfoot>. - Использование кавычек в атрибутах, при условии, что они не содержат пробелов или специальных символов (например,
<,>,', или"). - Требование к булевым атрибутам иметь значение.
Это означает, что следующая страница в HTML5 является совершенно корректной:
<!doctype html>
<title>Hello HTML5</title>
<div class=header>
<h1>Hello HTML5</h1>
<p class=tagline>HTML5 is awesome
</div>
<ul class=nav>
<li><a href=/index>Index</a>
<li><a href=/downloads>Downloads</a>
<li><a href=/about>About</a>
</ul>
<div class=body>
<h2>HTML5 is probably the future</h2>
<p>
There might be some other things around but in terms of
browser vendor support, HTML5 is hard to beat.
<dl>
<dt>Key 1
<dd>Value 1
<dt>Key 2
<dd>Value 2
</dl>
</div>
Новые технологии в HTML5
HTML5 добавляет много новых функций, которые делают создание и использование веб-приложений проще.
- Теги
<audio>и<video>предоставляют способ вставки аудио и видео без сложных дополнений, таких как QuickTime или Flash. - Семантические элементы, такие как
<article>,<header>,<nav>, и<time>, которые делают контент более понятным. - Тег
<canvas>, который поддерживает мощный API для рисования, уменьшая необходимость в генерируемых на сервере изображениях для графического представления данных. - Новые типы элементов форм, такие как
<input type="date">, которые позволяют пользовательским агентам сделать ввод и проверку значений проще. - Расширенные JavaScript API, такие как Web Storage, Web Workers, Web Sockets, геолокация и приложения автономного режима.
Было добавлено и много других функций. Хорошим руководством по новым функциям в HTML5 является книга Марка Пилигрима, которая скоро выйдет в свет, Dive Into HTML5. Однако не все из них ещё поддерживаются браузерами, поэтому будьте осторожны.
Что следует использовать?
В настоящее время ответом является HTML5. Есть очень мало причин использовать XHTML, учитывая последние разработки в веб-браузерах. Подводя итог причинам, указанным выше:
- Internet Explorer (который, к сожалению, в настоящее время лидирует по доле рынка) плохо поддерживает XHTML.
- Многие JavaScript-библиотеки также не поддерживают XHTML из-за более сложного API пространств имён, который он требует.
- HTML5 добавляет несколько новых функций, включая семантические теги и долгожданные теги
<audio>и<video>. - Он имеет поддержку большинства производителей браузеров.
- Он гораздо проще в написании и более компактен.
Для большинства приложений, безусловно, лучше использовать HTML5, чем XHTML.
© 2007–2020 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/1.0.x/htmlfaq/