Spec-Zone.ru › Flask 2.0

Часто задаваемые вопросы по 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 году под названием «Веб-приложения 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"> , которые позволяют агентам пользователя облегчить ввод и проверку значений.
  • Расширенные 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–2021 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/2.0.x/htmlfaq/

Spec-Zone.ru

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