ЧАВО по 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. Они писали doctype XHTML в начале документа и закрывали все необходимые теги (<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">, которые позволяют пользовательским агентам упростить ввод и проверку значений. - Расширенные API JavaScript, такие как 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/0.12.x/htmlfaq/