Spec-Zone.ru › Flask 2.1

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

<tag/value/ == <tag>value</tag>

Yes 1

No

No

<br/> поддерживается

No

Yes

Yes 2

<script/> поддерживается

No

Yes

No

должен быть предоставлен как text/html

Yes

No 3

Yes

должен быть предоставлен как application/xhtml+xml

No

Yes

No

строгая обработка ошибок

No

Yes

No

встроенный SVG

No

Yes

Yes

встроенный MathML

No

Yes

Yes

<video> тег

No

No

Yes

<audio> тег

No

No

Yes

Новые семантические теги, такие как <article>

No

No

Yes

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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API