HTML/XHTML ЧаВО
Документация Flask и примеры приложений используют HTML5. Вы можете заметить, что во многих ситуациях, когда закрывающие теги необязательны, они не используются, чтобы HTML был чище и быстрее загружался. Поскольку среди разработчиков много путаницы относительно HTML и XHTML, этот документ пытается ответить на некоторые из основных вопросов.
История XHTML
В течение некоторого времени казалось, что HTML собираются заменить XHTML. Однако на самом деле очень мало веб-сайтов в Интернете используют XHTML (который представляет собой обработанный с использованием правил XML HTML). Существует несколько основных причин, почему это так. Одна из них — недостаточная поддержка 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">, которые позволяют пользовательским агентам упростить ввод и проверку значений. - Расширенные 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–2022 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/2.1.x/htmlfaq/