FAQ по HTML/XHTML ================= Документация на Flask и примеры приложений используют HTML5. Вы могли заметить, что во многих ситуациях, когда закрывающие теги необязательны, они не используются, и HTML-код получается более чистым и быстрым при его загрузке. Так как среди разработчиков встречается много недопониманий о HTML и XHTML, этот документ пытается ответить на некоторые самые главные вопросы. История XHTML ------------- Какое-то время назад казалось, что XHTML сменил HTML. Однико, наврядли все сайты в Internet являются в точности XHTML (т. е. HTML, подчиняющимся правилам XML). На это есть несколько серьёзных причин. Одна из них в том, что Internet Explorer не поддерживает XHTML надлежащим образом. По спецификации XHTML, он должен снабжаться MIME типом `application/xhtml+xml`, однако Internet Explorer отвергает при попытках чтения такие файлы. Хотя сконфигурировать веб-серверы для надлежащей обработки XHTML относительно просто, мало кто это делает. Возможно, потому, что правильное использование XHTML не всегда безболезненно. Одной из важнейших причин, вызывающих болезненную реакцию, является драконовская - строгая и беспощадная - обработка ошибок со стороны XML. Если при парсинге XML браузер встречает ошибку, он он должен показать пользователю безобразное сообщение об ошибке, вместо попытки восстановить свою работу с отображением того, что возможно. Большинство генераторов (X)HTML в Интернет построены на не-XML шаблонизаторах (например, на Jinja, которым пользуется Flask), которые не защищают вас от случайного создания недопустимого XHTML. Конечно, существуют и заточенные под XML шаблонизаторы, такие, как Kid и популярный Genshi, однако, так как им приходится подчиняться правилам XML, часто они работают с повышенными накладными вычислительными расходами и не слишком просты в использовании. Однако, большинство пользователей считают, что они используют XHTML надлежащим образом. Они указывают в начале документа doctype как XHTML, и самостоятельно закрывают все необходимые тэги (``
`` становится ``
`` или ``

`` в XHTML). Однаког, даже если документ проходит все проверки на соответствие правилам XHTML, то, как происходит реальная обработка браузером, определяется MIME-типом, который, как упомяналось ранее, часто указан не так, как надо. В итоге вполне годный XHTML обрабатывается, как неправильный HTML. Также, XHTML сменил способ работы с JavaScript. Для надлежащей работы с XHTML, для запроса элементов HTML, программисты должны использовать интерфейс DOM с пространствами имён, в данном случае - с пространством имён XHTML. История HTML5 ------------- Разработка спецификации HTML5 стартовала в 2004 году под названием "Web Applications 1.0". Работа велась группой "Web Hypertext Application Technology Working Group" (сокращённо WHATWG), которую сформировали основные поставщики браузеров - Apple, Mozilla и Opera. Была поставлена задача закрепить новую улучшенную спецификацию HTML, с учётом исторически сложившегося поведения браузеров, без революционного отрыва от реальности и с учётом необходимости сохранения обратной совместимости. К примеру, в HTML4 ``Hello``. Однако, поскольку люди используют тэги в стиле XHTML, типа ````, производители браузеров внедрили синтаксис XHTML поверх определённого спецификацией синтаксиса. В 2007 году, под эгидой W3C, спецификация была принята в качестве основы для новой спецификации HTML, известной как HTML5. В настоящее время заметна такая тенденция, что XHTML сдаёт позиции, группа по XHTML2 расформирована, а HTML5 внедряется всеми основными разработчиками браузеров. HTML в сравнении с XHTML ------------------------ Следующая таблица даст вам краткий обзор возможностей, доступных в HTML 4.01, XHTML 1.1 и HTML5. (XHTML 1.0 не включён, так как его сменил XHTML 1.1, а также не слишком часто используемый XHTML5.) .. tabularcolumns:: |p{9cm}|p{2cm}|p{2cm}|p{2cm}| +-----------------------------------------+-----------+------------+-----------+ | | HTML4.01 | XHTML1.1 | HTML5 | +=========================================+===========+============+===========+ | ``value`` | |Да| [1]_ | |Нет| | |Нет| | +-----------------------------------------+-----------+------------+-----------+ | поддержка ``
`` | |Нет | |Да| | |Да| [2]_ | +-----------------------------------------+-----------+------------+-----------+ | поддержка ``