Статьи

Будущее: HTML или XHTML

Дискуссия о XHTML против HTML снова всплыла, и до сих пор мне удавалось сдерживать желание бросить свои 2 ». Что ж, я больше не буду сидеть в стороне, пока одни и те же аргументы перефразируются снова и снова, что никуда нас не приведет. В этой статье, которую я первоначально опубликовал в своем блоге , я попытаюсь ответить на этот вопрос: будущее Интернета зависит от HTML или XHTML?

Во-первых, я просто собираюсь установить несколько основных правил. Это не будет другой версией XHTML, так как text/htmlсчитается вредным, или нет никаких реальных преимуществ в использовании XHTML, или XHTML даже не поддерживается . Я собираюсь прямо перейти к фактам, так что здесь идет …

HTML

HTML почти мертв . С ранних версий Netscape и IE его избивали до смерти. Он был на жизнеобеспечении и держался за нить (хотя и особенно сильную, но очень сильно потертую ) с тех пор, как IE5 / Mac бросил ему спасательный круг под названием DOCTYPE sniffing. Тем не менее, ни одна попытка возродить его не была и не будет успешной в продлении ее жизни более чем на несколько лет после ее использования до настоящего времени, и почти настало время дать ей покоиться с миром.

Я знаю, что вы все думаете. Я либо сумасшедший, либо опоздал на апрельских дураков . Как, возможно, самый успешный формат документов в истории Интернета и вычислительной техники в целом был так непоправимо поврежден, чтобы оказаться так близко к смерти?

Ответ и причина моего временного безумия, которое привело к этим довольно шокирующим и совершенно возмутительным, но невероятно точным заявлениям, сводятся к вопросу о том, каким должен быть HTML, по сравнению с представлением, которое все мы знаем и ошеломляюще искажено. любовь сегодня, и как она может и не может быть улучшена в будущем.

Что такое HTML, как предполагается?

С самого начала он был небольшим, легким, некоммерческим, простым в использовании форматом документа, предназначенным для публикации и распространения научных документов (созданным руководителем, который точно назван изобретателем Всемирной паутины и кем мы все знаем, как Тим Бернерс-Ли ), очень похожий на международный стандарт ISO: 8879 — Стандартный обобщенный язык разметки (SGML).

Хотя HTML изначально не был основан на SGML, сходство в синтаксисе и отсутствие формальных правил синтаксического анализа для HTML привели к решению устранить различия и формализовать HTML 2.0 как приложение SGML. В конечном итоге это было опубликовано IETF как RFC 1866 в ноябре 1995 года. Мартин Брайан дает сравнительно краткое описание того, как начинался HTML , и процесса его преобразования в приложение SGML.

Что такое HTML сейчас?

К сожалению, к тому времени, когда HTML был формализован как приложение SGML, непоправимый ущерб языку (который в конечном итоге привел к введению термина супа тегов Дэном Коннолли ) уже был нанесен. Ни один из браузеров HTML, которые были реализованы до HTML 2.0, не содержал соответствующих синтаксических анализаторов SGML, с тех пор немногие так и не сделали, и ни один основной браузер никогда не будет.

В результате браузеры не читают DTD. Вместо этого у них есть все известные элементы, атрибуты и их модели содержимого, по существу жестко запрограммированные, и в основном игнорируют любой элемент, о котором они никогда не слышали. По этой причине широко распространено мнение, что DTD абсолютно бесполезны для чего-либо, кроме валидатора, а DOCTYPE — не что иное, как запуск режима стандартов в современных браузерах.

В существующих анализаторах HTML есть много преднамеренно нарушенных функций, которые напрямую нарушают как рекомендации HTML, так и стандарты SGML, которые никогда не будут исправлены. Причина заключается в том простом факте, что это нарушит миллионы устаревших документов, что в конечном итоге повлияет на возможность доступа пользователей к ним. См. Приложение 4. в HTML 4.01 для краткого, но очень неполного, резюме неподдерживаемых функций SGML.

Как можно улучшить HTML?

Простой ответ совсем немного. Способность HTML развиваться и совершенствоваться строго ограничена вышеупомянутыми несоответствующими анализаторами и миллионами устаревших документов, которые могут сломаться, если будут сделаны какие-либо серьезные улучшения. Как сказал Хикси : в лучшем случае мы можем добавлять новые элементы, когда дело доходит до анализатора HTML.

Модели содержимого элемента для многих существующих элементов не могут быть изменены в значительной степени. (Например, элемент p не может быть обновлен для разрешения вложенных списков, таблиц или блочных кавычек, элемент title Фактически, такое поведение задним числом стандартизировано Ианом Хиксоном и Рабочей группой WHAT.

Существует даже предположение, что HTML должен сохранять видимость применения SGML . Помимо преимуществ проверки с использованием DTD SGML и запуска режима стандартов с использованием DOCTYPE SGML, нет особых причин для этого. Однако обширные критерии соответствия, выраженные в проектах рабочей группы WHAT, которые просто не могут быть выражены в DTD, сделают проверку — как инструмент обеспечения качества или соответствия — в лучшем случае ограниченной.

Не только это, но и любая серьезная попытка сохранить обратную совместимость с существующими браузерами, как ожидается, потребует обширной библиотеки хаков (например , IE7 Дина Эдварда ), чтобы заставить существующие браузеры сделать что-нибудь полезное с новыми расширениями. Даже эта таблица стилей не будет влиять на новые элементы без этой библиотеки хаков, так как новые элементы будут по существу игнорироваться.

Вопрос в следующем: действительно ли мы хотим держаться за умирающий язык дольше, чем нам нужно , причем любые прогрессии и улучшения настолько ограничены; или мы действительно должны начать переходить к гораздо более гибкой и выгодной альтернативе?

XHTML

Несмотря на все предыдущие заявления о том, что XHTML не имеет никакой выгоды , когда речь заходит о расширении языка новыми элементами, атрибутами и моделями контента, преимущества значительно превосходят негативные. Фактически все утверждения о том, что XHTML не имеет преимуществ перед HTML, относятся только к XHTML 1.0, поскольку семантика обоих форматов документов идентична.

Что такое XHTML?

Предполагается, что XHTML является приложением XML с очень строгими правилами синтаксического анализа. Мне действительно нужно продолжать? Я предполагаю, что мы все знаем, что такое XML и XHTML, поэтому мне не нужно повторять все это. Для тех, кто этого не делает, для этого нужны поисковые системы. 🙂

Что такое XHTML сейчас?

К сожалению, большинство XHTML в Интернете — не что иное, как суп из тегов, или, по крайней мере, они не очень хорошо сформированы и используются как text/html Как показали предыдущие опросы, большинство сайтов, утверждающих, что они являются XHTML, даже не проходят валидацию, и в большинстве случаев браузеры будут задыхаться, если использовать правильный тип MIME.

Некоторые из других проблем: то, что XHTML не реализован в IE, инкрементальный рендеринг для XHTML в Gecko еще не работает, сценарии, написанные для tag-soup, часто не будут работать в реальном XHTML, таблицы стилей должны быть исправлены, и т. Д. и т. д. Большая часть этого материала обсуждается в документе Иана Хиксона « Отправка XHTML в виде text/html (что, я уверен, что все уже читали)» и в других местах в Интернете.

Однако основное преимущество XHTML перед HTML заключается в том, что у нас уже есть (в основном) очень строго соответствующие синтаксические анализаторы XML. Хотя в них все еще есть несколько ошибок, они могут быть исправлены без какого-либо вредного воздействия на устаревший контент. Уже один этот факт дает гораздо больше возможностей для совершенствования, чем когда-либо делал бы HTML.

Как можно улучшить XHTML?

При правильном понимании того, как использовать XML и XHTML, на самом деле нет никаких ограничений относительно того, насколько далеко может продвинуться XHTML. Мы не будем сдерживаться крайними ошибками браузера и ограничениями; нет несоответствующего поведения, которое придется повторять в будущих реализациях, модели содержимого элементов могут быть изменены для существующих элементов, а новые элементы могут быть добавлены и поддерживаться очень легко. И, по крайней мере, с полной поддержкой таблиц стилей они не будут полностью бесполезными (как в HTML без библиотеки хаков) в существующих UA XHTML.

Совершенно верно, что если вы не используете какие-либо функции XML, такие как документы со смешанным пространством имен (например, XHTML + MathML), использование XHTML 1.0 практически не дает никаких преимуществ. Тем не менее, будут преимущества использования XHTML 2.0 или HTML-приложений рабочей группы (X), включая Web Forms 2.0, Web Apps 1.0 и Web Controls 1.0, которые, как я думаю, должны называться HAppy 1.0 (для приложения H TML). ссылки), а не (X) HTML 5.0.

Используя XHTML-вариант HAppy 1.0 (если так его называют — с заглавной буквой A или без нее — дайте мне знать, что вы думаете), обратная совместимость с существующими UA XHTML будет намного проще, потому что по крайней мере таблицы стилей будет работать, и новые элементы будут просто вести себя как div и span. Обратная совместимость с IE и другими устаревшими UA потребует немного больше работы, однако: вам нужно будет организовать преобразование вашего документа XHTML в HTML, так как обслуживание этой новой версии XHTML в виде text/html