Расширяемый язык разметки гипертекста ( XHTML ) является частью семейства языков разметки XML , который отражает или расширяет версии широко используемого языка разметки гипертекста (HTML), языка, на котором сформулированы веб-страницы . [1]
В то время как HTML до HTML5 определялся как приложение Standard Generalized Markup Language (SGML), гибкой структуры языка разметки, XHTML является приложением XML , более ограниченного подмножества SGML. Документы XHTML являются правильно сформированными и поэтому могут быть проанализированы с использованием стандартных парсеров XML, в отличие от HTML, для которого требуется мягкий парсер, специфичный для HTML. [2]
XHTML 1.0 стал рекомендацией Консорциума Всемирной паутины (W3C) 26 января 2000 года. XHTML 1.1 стал рекомендацией W3C 31 мая 2001 года. Теперь XHTML называют «синтаксисом XML для HTML» [3] [4] и он разрабатывается как XML-адаптация живого стандарта HTML. [5] [6]
XHTML 1.0 был «переформулировкой трех типов документов HTML 4 как приложений XML 1.0». [7] Консорциум Всемирной паутины (W3C) также одновременно поддерживал Рекомендацию HTML 4.01. В документе Рекомендации XHTML 1.0, опубликованном и пересмотренном в августе 2002 года, W3C прокомментировал, что «Семейство XHTML является следующим шагом в эволюции Интернета. Переходя на XHTML сегодня, разработчики контента могут войти в мир XML со всеми его сопутствующими преимуществами, при этом оставаясь уверенными в обратной и будущей совместимости своего контента». [7]
Однако в 2005 году была сформирована рабочая группа Web Hypertext Application Technology Working Group (WHATWG), независимо от W3C, для работы над развитием обычного HTML, не основанного на XHTML. В конечном итоге WHATWG начала работать над стандартом, который поддерживал как XML, так и не-XML сериализации , HTML5 , параллельно со стандартами W3C, такими как XHTML 2.0. В 2007 году рабочая группа W3C по HTML проголосовала за официальное признание HTML5 и работу над ним как над стандартом HTML следующего поколения. [8] В 2009 году W3C допустил истечение срока действия устава рабочей группы XHTML 2.0, признав, что HTML5 будет единственным стандартом HTML следующего поколения, включая как XML, так и не-XML сериализации. [9] Из двух сериализаций W3C предлагает большинству авторов использовать синтаксис HTML, а не XHTML. [10]
Рекомендации W3C XHTML 1.0 и XHTML 1.1 были отменены 27 марта 2018 года, [11] [12] вместе с HTML 4.0, [13] HTML 4.01, [14] и HTML5. [15]
XHTML был разработан, чтобы сделать HTML более расширяемым и повысить совместимость с другими форматами данных. [16] Кроме того, браузеры прощали ошибки в HTML, и большинство веб-сайтов отображались, несмотря на технические ошибки в разметке; XHTML ввел более строгую обработку ошибок. [17] HTML 4 был якобы приложением стандартного обобщенного языка разметки (SGML); однако спецификация для SGML была сложной, и ни веб-браузеры, ни Рекомендация HTML 4 не были полностью ей совместимы. [18] Стандарт XML, утвержденный в 1998 году, предоставлял более простой формат данных, близкий по простоте к HTML 4. [19] Переходя на формат XML, надеялись, что HTML станет совместимым с распространенными инструментами XML; [20] серверы и прокси-серверы смогут преобразовывать контент по мере необходимости для ограниченных устройств, таких как мобильные телефоны. [21] Используя пространства имен , документы XHTML могли обеспечивать расширяемость, включая фрагменты из других языков на основе XML, таких как масштабируемая векторная графика и MathML . [22] Наконец, возобновленная работа предоставит возможность разделить HTML на повторно используемые компоненты ( модуляризация XHTML ) и очистить неаккуратные части языка. [23]
Между XHTML и HTML существуют различные различия. Модель объектов документа (DOM) — это древовидная структура, которая представляет страницу внутри приложений, а XHTML и HTML — это два разных способа представления этого в разметке. Оба они менее выразительны, чем DOM — например, «--» может быть размещено в комментариях в DOM, но не может быть представлено в комментарии ни в XHTML, ни в HTML — и, как правило, синтаксис XML XHTML более выразителен, чем HTML (например, произвольные пространства имен не допускаются в HTML). XHTML использует синтаксис XML, в то время как HTML использует псевдо- синтаксис SGML (официально SGML для HTML 4 и ниже, но никогда на практике и стандартизированный от SGML в HTML5). Поскольку выражаемое содержимое DOM в синтаксисе немного отличается, есть некоторые изменения в фактическом поведении между двумя моделями. Однако синтаксические различия можно преодолеть, реализовав альтернативную трансляционную структуру в разметке.
Во-первых, есть некоторые различия в синтаксисе: [24]
<br />
<input>
<p>
<option selected>
<option selected=selected>
<option selected="selected">
<tbody>
Помимо синтаксических различий, существуют некоторые поведенческие различия, в основном возникающие из-за базовых различий в сериализации. Например:
xlink
.document.write()
innerHTML
<body>
<html>
Сходство между HTML 4.01 и XHTML 1.0 привело к тому, что многие веб-сайты и системы управления контентом приняли первоначальную рекомендацию W3C XHTML 1.0. Чтобы помочь авторам в переходе, W3C предоставил руководство о том, как публиковать документы XHTML 1.0 в HTML-совместимой манере и обслуживать их в браузерах, которые не были разработаны для XHTML. [28] [29]
Такой «совместимый с HTML» контент отправляется с использованием типа носителя HTML ( text/html
), а не официального типа носителя Интернета для XHTML ( application/xhtml+xml
). Поэтому при измерении принятия XHTML по отношению к обычному HTML важно различать, сравнивается ли использование типа носителя или фактическое содержимое документа. [30] [31]
Большинство веб-браузеров имеют зрелую поддержку [32] для всех возможных типов носителей XHTML. [33] Заметным исключением является Internet Explorer версии 8 и более ранних версий от Microsoft ; вместо того, чтобы отображать application/xhtml+xml
содержимое, диалоговое окно предлагает пользователю сохранить содержимое на диск. И Internet Explorer 7 (выпущенный в 2006 году), и Internet Explorer 8 (выпущенный в марте 2009 года) демонстрируют такое поведение. [34] Разработчик Microsoft Крис Уилсон объяснил в 2005 году, что приоритетами IE7 были улучшение безопасности браузера и поддержка CSS , и что надлежащую поддержку XHTML будет сложно внедрить в ориентированный на совместимость HTML-анализатор IE; [35] однако, Microsoft добавила поддержку настоящего XHTML в IE9 . [36]
Пока поддержка не получила широкого распространения, большинство веб-разработчиков избегают использования XHTML, который несовместим с HTML, [37] поэтому такие преимущества XML, как пространства имен, более быстрый синтаксический анализ и браузеры с меньшим объемом памяти, не приносят пользы пользователю. [38] [39] [40]
В начале 2000-х годов некоторые веб-разработчики начали задаваться вопросом, почему веб-авторы вообще перешли на разработку на XHTML. [41] [42] [43] Другие возражали, что проблемы, приписываемые использованию XHTML, можно в основном отнести к двум основным источникам: создание недействительных документов XHTML некоторыми веб-авторами и отсутствие поддержки XHTML, встроенной в Internet Explorer 6. [ 44] [45] Они продолжили описывать преимущества веб-документов на основе XML (т. е. XHTML) в отношении поиска, индексации и анализа, а также обеспечения будущего самого Интернета.
В октябре 2006 года изобретатель HTML и председатель W3C Тим Бернерс-Ли , представляя основные усилия W3C по разработке новой спецификации HTML, разместил в своем блоге, что «попытка заставить мир перейти на XML... все сразу не сработала. Большая часть общественности, генерирующей HTML, не перешла... Некоторые крупные сообщества перешли и наслаждаются плодами хорошо сформированных систем... План состоит в том, чтобы создать совершенно новую группу HTML». [46] Текущий рабочий проект HTML5 гласит: «Особое внимание было уделено определению четких критериев соответствия для пользовательских агентов в целях улучшения взаимодействия... и в то же время обновлению спецификаций HTML для решения проблем, поднятых в последние несколько лет». Ян Хиксон , редактор спецификации HTML5, критикующий неправильное использование XHTML в 2002 году, [41] является членом группы, разрабатывающей эту спецификацию, и указан как один из соредакторов текущего рабочего проекта. [47]
Саймон Питерс исследовал совместимость мобильных браузеров с XML [48] и пришел к выводу, что «утверждение о том, что XHTML необходим для мобильных устройств, является просто мифом».
В декабре 1998 года был опубликован рабочий проект W3C под названием Reformulating HTML in XML . Он представил Voyager, кодовое название нового языка разметки, основанного на HTML 4, но придерживающегося более строгих правил синтаксиса XML. К февралю 1999 года название спецификации было изменено на XHTML 1.0: The Extensible HyperText Markup Language , а в январе 2000 года она была официально принята в качестве Рекомендации W3C. [49] Существует три формальных определения типа документа (DTD) для XHTML 1.0, соответствующих трем различным версиям HTML 4.01:
center
, font
и strike
), исключенные из строгой версии.Второе издание XHTML 1.0 стало рекомендацией W3C в августе 2002 года. [50]
Модуляризация предоставляет абстрактный набор компонентов, посредством которых XHTML может быть подмножеством и расширен. Эта функция предназначена для того, чтобы помочь XHTML расширить свое влияние на новые платформы, такие как мобильные устройства и телевизоры с поддержкой веб-технологий. Первоначальный проект Модуляризации XHTML стал доступен в апреле 1999 года и получил статус Рекомендации в апреле 2001 года. [51]
Первыми модульными вариантами XHTML были XHTML 1.1 и XHTML Basic 1.0.
В октябре 2008 года Modularization of XHTML был заменен на XHTML Modularization 1.1 , который добавляет реализацию XML Schema . Он был заменен вторым изданием в июле 2010 года. [52]
XHTML 1.1 развился из работы, связанной с первоначальной модуляризацией спецификации XHTML . W3C выпустил первый черновик в сентябре 1999 года; статус Рекомендации был достигнут в мае 2001 года. [53] Модули, объединенные в XHTML 1.1, фактически воссоздают XHTML 1.0 Strict с добавлением элементов аннотации Ruby ( ruby
, rbc
, rtc
, rb
, rt
и rp
) для лучшей поддержки восточноазиатских языков. Другие изменения включают удаление атрибута name
из a
элементов map
и и (в первом издании языка) удаление атрибута lang
в пользу xml:lang
.
Хотя XHTML 1.1 в значительной степени совместим с XHTML 1.0 и HTML 4, в августе 2002 года Рабочая группа выпустила официальную записку, в которой рекомендовалось не передавать его с типом носителя HTML. [54] Из-за ограниченной поддержки браузерами альтернативного application/xhtml+xml
типа носителя XHTML 1.1 не смог получить широкого распространения. В январе 2009 года было выпущено второе издание документа ( XHTML Media Types – Second Edition ), смягчающее это ограничение и позволяющее использовать XHTML 1.1 в качестве text/html
. [55]
Второе издание XHTML 1.1 было выпущено 23 ноября 2010 года, в нем были устранены различные опечатки и добавлена реализация XML-схемы, не включенная в исходную спецификацию. [56] (Впервые оно было выпущено кратковременно 7 мая 2009 года как «Предлагаемая отредактированная рекомендация» [57], а затем отменено 19 мая из-за нерешенных проблем.)
Поскольку информационные устройства могут не иметь системных ресурсов для реализации всех абстрактных модулей XHTML, W3C определил спецификацию XHTML с ограниченной функциональностью, названную XHTML Basic. Она предоставляет минимальный подмножество функций, достаточное для наиболее распространенного создания контента. Спецификация стала рекомендацией W3C в декабре 2000 года. [58]
Из всех версий XHTML, XHTML Basic 1.0 предоставляет наименьшее количество функций. С XHTML 1.1 это одна из двух первых реализаций модульного XHTML. В дополнение к основным модулям (структура, текст, гипертекст и список), он реализует следующие абстрактные модули: Base, Basic Forms, Basic Tables, Image, Link, Metainformation, Object, Style Sheet и Target. [59] [60]
XHTML Basic 1.1 заменяет модуль Basic Forms на модуль Forms и добавляет модули Intrinsic Events, Presentation и Scripting. Он также поддерживает дополнительные теги и атрибуты из других модулей. Эта версия стала рекомендацией W3C 29 июля 2008 года. [61]
Текущая версия XHTML Basic — 1.1 Second Edition (23 ноября 2010 г.), в которой язык переписан на языке W3C XML Schema . Эта версия также поддерживает lang
атрибут. [62]
XHTML-Print, который стал Рекомендацией W3C в сентябре 2006 года, представляет собой специализированную версию XHTML Basic, разработанную для документов, печатаемых с информационных устройств на бюджетных принтерах . [63]
XHTML Mobile Profile (сокращенно XHTML MP или XHTML-MP) — это сторонний вариант спецификации W3C XHTML Basic. Как и XHTML Basic, XHTML был разработан для информационных устройств с ограниченными системными ресурсами.
В октябре 2001 года компания с ограниченной ответственностью Wireless Application Protocol Forum начала адаптировать XHTML Basic для WAP 2.0 , второй основной версии Wireless Application Protocol . WAP Forum основывал свой DTD на W3C's Modularization of XHTML, включив те же модули, которые W3C использовал в XHTML Basic 1.0, за исключением Target Module. Начиная с этой основы, WAP Forum заменил Basic Forms Module частичной реализацией Forms Module, добавил частичную поддержку Legacy и Presentation modules и добавил полную поддержку Style Attribute Module.
В 2002 году WAP Forum вошел в состав Open Mobile Alliance (OMA), который продолжил разработку XHTML Mobile Profile как компонента своей спецификации просмотра OMA.
В эту версию, завершенную в 2004 году, OMA добавила частичную поддержку Scripting Module и частичную поддержку Intrinsic Events. XHTML MP 1.1 является частью v2.1 спецификации просмотра OMA (1 ноября 2002 года). [64]
Эта версия, завершенная 27 февраля 2007 года, расширяет возможности XHTML MP 1.1 полной поддержкой Forms Module и режимов ввода текста OMA. XHTML MP 1.2 является частью v2.3 спецификации просмотра OMA (13 марта 2007 года). [64]
XHTML MP 1.3 (завершен 23 сентября 2008 г.) использует определение типа документа XHTML Basic 1.1 , которое включает в себя Target Module. События в этой версии спецификации обновлены до спецификаций DOM Level 3 (т. е. они нейтральны к платформе и языку).
Рабочая группа XHTML 2 рассматривала создание нового языка на основе XHTML 1.1. [65] Если бы XHTML 1.2 был создан, он бы включал WAI-ARIA и role
атрибуты для лучшей поддержки доступных веб-приложений и улучшенную поддержку семантической паутины через RDFa . inputmode
Атрибут из XHTML Basic 1.1, вместе с target
атрибутом (для указания целевых фреймов ) также мог бы присутствовать. Рабочая группа XHTML2 не была уполномочена выполнять разработку XHTML1.2. Поскольку W3C объявил, что не намерен повторно создавать рабочую группу XHTML2, [9] и закрыл рабочую группу в декабре 2010 года, это означает, что предложение XHTML 1.2 не будет реализовано.
В период с августа 2002 года по июль 2006 года W3C выпустил восемь рабочих черновиков XHTML 2.0, новой версии XHTML, способной полностью порвать с прошлым, отказавшись от требования обратной совместимости. Это отсутствие совместимости с XHTML 1.x и HTML 4 вызвало некоторые ранние разногласия в сообществе веб-разработчиков. [66] Некоторые части языка (такие как role
атрибуты и RDFa) впоследствии были отделены от спецификации и работали как отдельные модули, частично для того, чтобы сделать переход от XHTML 1.x к XHTML 2.0 более плавным. Ожидалось, что девятый черновик XHTML 2.0 появится в 2009 году, но 2 июля 2009 года W3C решил позволить уставу рабочей группы XHTML2 истечь к концу того года, фактически остановив любую дальнейшую разработку черновика в стандарт. [9] Вместо этого XHTML 2.0 и связанные с ним документы были выпущены в виде W3C Notes в 2010 году. [67] [68]
В XHTML 2.0 появились новые возможности, в том числе:
nl
тип элемента, должен был быть включен, чтобы специально обозначить список как навигационный список. Это было бы полезно при создании вложенных меню, которые в настоящее время создаются широким спектром средств, таких как вложенные неупорядоченные списки или вложенные списки определений.<li href="articles.html">Articles</li>
, аналогично XLink . Однако сам XLink несовместим с XHTML из-за различий в дизайне.src
атрибута, например, <p src="lbridge.jpg" type="image/jpeg">London Bridge</p>
такой же, как <object src="lbridge.jpg" type="image/jpeg"><p>London Bridge</p></object>
.alt
элемента img
был удален: в содержимом элемента должен был быть указан альтернативный текст img
, во многом похожий на сам object
элемент, например, <img src="hms_audacious.jpg">HMS <span class="italic">Audacious</span></img>
.h
). Уровень этих заголовков определялся глубиной вложенности. Это позволило бы использовать заголовки бесконечно, а не ограничивать их шестью уровнями в глубину.i
, b
и tt
, все еще разрешенные в XHTML 1.x (даже Strict), должны были отсутствовать в XHTML 2.0. Единственными оставшимися элементами представления были sup
и sub
для надстрочного и подстрочного индексов соответственно, поскольку они имеют существенное непрезентативное применение и требуются определенными языками. Все остальные теги должны были быть семантическими (например, strong
для сильного выделения ), позволяя при этом пользовательскому агенту управлять представлением элементов через CSS (например, отображаться как жирный текст в большинстве визуальных браузеров, но, возможно, отображаться с изменением тона в программе чтения текста в речь, более крупный + курсивный шрифт в соответствии с правилами в пользовательской таблице стилей и т. д.).property
и about
для упрощения преобразования из XHTML в RDF/XML.HTML5 развивался независимо от W3C, через свободную группу производителей браузеров и других заинтересованных сторон, называвших себя WHATWG , или Web Hypertext Application Technology Working Group. Главным мотивом группы было создание платформы для динамических веб-приложений; они считали XHTML 2.0 слишком документоориентированным и неподходящим для создания сайтов интернет-форумов или интернет-магазинов. [69]
HTML5 имеет как обычную text/html
сериализацию, так и сериализацию XML, которая также известна как XHTML5 . [70] Язык более совместим с HTML 4 и XHTML 1.x, чем с XHTML 2.0, из-за решения сохранить существующие элементы формы HTML и модель событий. Однако он добавляет много новых элементов, которых нет в XHTML 1.x, например, теги section
и aside
.
Язык XHTML5, как и HTML5, использует декларацию DOCTYPE без DTD. Более того, спецификация осуждает более ранние XHTML DTD, заставляя браузеры заменять их на те, которые содержат только определения сущностей для именованных символов во время анализа. [70]
XHTML+RDFa — это расширенная версия языка разметки XHTML для поддержки RDF посредством набора атрибутов и правил обработки в виде правильно сформированных XML- документов. Этот хост-язык является одним из методов, используемых для разработки контента Semantic Web путем внедрения богатой семантической разметки.
Документ XHTML, соответствующий спецификации XHTML, называется валидным . Валидность обеспечивает согласованность кода документа, что в свою очередь упрощает обработку, но не обязательно гарантирует согласованную отрисовку браузерами. Документ можно проверить на валидность с помощью службы проверки разметки W3C (для XHTML5 вместо этого следует использовать Validator. nu Living Validator). На практике многие программы веб-разработки обеспечивают валидацию кода на основе стандартов W3C .
Корневой элемент документа XHTML должен быть html
и должен содержать xmlns
атрибут, связывающий его с пространством имен XHTML . URI пространства имен для XHTML — http://www.w3.org/1999/xhtml
. Пример тега ниже дополнительно содержит xml:lang
атрибут для идентификации документа с естественным языком :
<html xmlns= "http://www.w3.org/1999/xhtml" xml:lang= "ar" >
Для проверки документа XHTML можно использовать декларацию типа документа или DOCTYPE . DOCTYPE объявляет браузеру определение типа документа (DTD), которому соответствует документ. Декларация типа документа должна быть размещена перед корневым элементом .
Часть системного идентификатора DOCTYPE, которая в этих примерах является URL , начинающимся с http://
, должна указывать только на копию DTD для использования, если валидатор не может найти ее на основе публичного идентификатора (другая строка в кавычках). Это не обязательно должен быть конкретный URL, который есть в этих примерах; на самом деле авторам рекомендуется использовать локальные копии файлов DTD, когда это возможно. Однако публичный идентификатор должен быть таким же, как в примерах, посимвольно.
Кодировка символов может быть указана в начале документа XHTML в объявлении XML, когда документ обслуживается с использованием типа application/xhtml+xml
MIME . (Если в документе XML отсутствует спецификация кодировки, анализатор XML предполагает, что кодировка — UTF-8 или UTF-16 , если только кодировка уже не была определена более высоким протоколом.)
Например:
<?xml version="1.0" encoding="UTF-8" ?>
Декларация может быть необязательно опущена, поскольку она объявляет свою кодировку кодировкой по умолчанию. Однако, если документ вместо этого использует XML 1.1 или другую кодировку символов, декларация необходима. Internet Explorer до версии 7 переходит в режим совместимости , если он встречает декларацию XML в документе, обслуживаемом как text/html
.
Документы XHTML 1.x в основном обратно совместимы с пользовательскими агентами HTML 4 при соблюдении соответствующих рекомендаций. XHTML 1.1 по сути совместим, хотя элементы для аннотации ruby не являются частью спецификации HTML 4 и, таким образом, обычно игнорируются браузерами HTML 4. Более поздние модули XHTML 1.x, такие как для role
атрибута, RDFa и WAI-ARIA, изящно деградируют аналогичным образом.
XHTML 2.0 значительно менее совместим, хотя это можно смягчить в некоторой степени с помощью использования скриптов. (Это могут быть простые однострочные коды, такие как использование для document.createElement()
регистрации нового элемента HTML в Internet Explorer, или полноценные фреймворки JavaScript, такие как реализация FormFaces для XForms .)
Ниже приведены примеры XHTML 1.0 Strict, оба из которых имеют одинаковый визуальный вывод. Первый соответствует рекомендациям по совместимости HTML из XHTML Media Types Note, тогда как последний нарушает обратную совместимость, но обеспечивает более чистую разметку. [55]
Пример 1.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns= "http://www.w3.org/1999/xhtml" xml:lang= "en" lang= "en" > <head> <meta http-equiv= "Content-Type" content= "text/html; charset=utf-8" /> <title> Пример XHTML 1.0 Strict </title> <script type= "text/javascript" > // <![CDATA[ function loadpdf() { document.getElementById("pdf-object").src="http://www.w3.org/TR/xhtml1/xhtml1.pdf"; } //]]> </script> </head> <body onload= "loadpdf()" > <p> Это пример документа <abbr title = "Extensible HyperText Markup Language" > XHTML </abbr> 1.0 Strict . <br /> < img id = "validation-icon" src= "http://www.w3.org/Icons/valid-xhtml10" alt= "Valid XHTML 1.0 Strict" /> <br /> <object id= "pdf-object" name= "pdf-object" type= "application/pdf" data= "http://www.w3.org/TR/xhtml1/xhtml1.pdf" width= "100%" height= "500" > </object> </p> </body> </html>
Пример 2.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns= "http://www.w3.org/1999/xhtml" xml:lang= "en" > <head> <title> Пример XHTML 1.0 Strict </title> <script type= "application/javascript" > <![CDATA[ function loadpdf() { document.getElementById("pdf-object").src="http://www.w3.org/TR/xhtml1/xhtml1.pdf"; } ]]> </script> </head> <body onload= "loadpdf()" > <p> Это пример документа <abbr title = "Extensible HyperText Markup Language" > XHTML </abbr> 1.0 Strict . <br /> < img id = "validation-icon" src= "http://www.w3.org/Icons/valid-xhtml10" alt= "Valid XHTML 1.0 Strict" /> <br /> <object id= "pdf-object" type= "application/pdf" data= "http://www.w3.org/TR/xhtml1/xhtml1.pdf" width= "100%" height= "500" ></object> </p> </body> </html>
Примечания:
<param name="src" value="http://www.w3.org/TR/xhtml1/xhtml1.pdf"/>
в <object>
.img
не получает name
атрибут в XHTML 1.0 Strict DTD. id
Вместо этого используйте .Сериализации HTML5 и XHTML5 в значительной степени совместимы, если придерживаться более строгого синтаксиса XHTML5, но есть некоторые случаи, в которых XHTML не будет работать как допустимый HTML5 (например, инструкции по обработке устарели в HTML [ уточнить ] , рассматриваются как комментарии и закрываются по первому ">", тогда как они полностью разрешены в XML, рассматриваются как их собственный тип и закрываются по ?>
). [71]
Расширяемый язык разметки гипертекста (XHTML) — это расширение HTML, основанное на XML и предназначенное для работы с приложениями на основе XML.
... Однако, поскольку ISO 8879 не предоставляет приложениям возможности запрещать внутренние подмножества, из этого следует, что буква спецификации HTML [4] автоматически лишает его права быть соответствующим SGML-приложением...
... Поскольку цели проектирования самого XML частично отражали цели исходного HTML, было логично начать работу по формулированию языка разметки на основе XML...
... Проблема: вы хотите воспользоваться мощью и простотой, которые могут предложить инструменты XML, но вы сталкиваетесь с сайтом, полным устаревших документов HTML. Решение: преобразуйте свои документы в XHTML и заставьте Perl и
работать...
XML::XPath
... Полезной особенностью XHTML является то, что им можно манипулировать как XML. Шаблоны расширяемого языка таблиц стилей можно использовать для преобразования XHTML в WML или любые другие фирменные мобильные форматы...
... W3C давно поставил себе цель сделать возможным смешивание различных типов XML-контента в одном XML-файле. Например, SVG и MathML могут быть включены непосредственно в научный документ на основе XHTML...
... с HTML на основе XML другие языки XML могли бы включать части XHTML, а документы XHTML могли бы включать части других языков разметки. Мы также могли бы воспользоваться редизайном, чтобы очистить некоторые из наиболее неаккуратных частей HTML и добавить некоторые новые необходимые функции, такие как улучшенные формы...
Я также некоторое время читал комментарии в блоге IEBlog с просьбой о поддержке типа MIME "application/xml+xhtml" в IE. Должен сказать, что IE7 не добавит поддержку этого типа MIME — мы, конечно, продолжим читать XHTML, когда он подается как "text/html", предполагая, что он следует рекомендациям по совместимости с HTML.
...Если бы мы попытались поддерживать настоящий XHTML в IE 7, мы бы в конечном итоге использовали наш существующий парсер HTML (который сосредоточен на совместимости) и хакали конструкции XML. Крайне маловероятно, что мы могли бы хорошо поддерживать XHTML таким образом; в частности, мы бы определенно не обнаружили несколько случаев ошибок здесь и там, и мы бы молча поддерживали недопустимые случаи. Это, конечно, вызвало бы проблемы совместимости, основанные на обработке ошибок парсера в будущем, чего XML явно пытается избежать; мы не хотим вызывать еще один беспорядок, как с текущей обработкой ошибок HTML (корнем которой является совместимость с более ранними браузерами — вы можете винить в этом меня лично, но не IE). Я бы предпочел потратить время на правильную реализацию XHTML после IE 7 и сделать его действительно совместимым...
...В настоящее время мы ищем отзывы разработчиков о нашей реализации правил анализа HTML5, API выбора, поддержки XHTML и встроенного SVG. В CSS3 мы ищем отзывы разработчиков о поддержке селекторов, пространств имен, цветов, значений, фонов и границ, а также шрифтов в IE9....
Недостатков (если таковые имеются) в отправке XHTML как текста/HTML не так много, как утверждает [Ян Хиксон], а упомянутые мной выше преимущества делают его вполне достойным использования, по моему скромному мнению. Есть несколько тонких сносок и скобок [в статье Хиксона], указывающих на то, что вредность касается только авторов, которые не знают подводных камней этой практики, но, как и этикетка "Не есть" на маленьких пакетиках с силикагелем, совет Яна, похоже, здравый смысл и не стоит упоминания любому автору, который действительно знает, что такое XHTML и как его писать.
Некоторые говорят, что XHTML в Интернете потерпел неудачу, но я говорю, что это наш самый большой успех в борьбе за веб-стандарты. ... XHTML — это хорошая вещь для Интернета, и стыдно, что люди пытаются выдвинуть против него доводы. Чтобы доказать это, я раскрою для вас миф, а затем покажу, почему XHTML — это лучшее, что было со времен нарезанного хлеба, когда дело касается нашей борьбы за веб-стандарты. ... Итак, в заключение, отправка XHTML как text/html сегодня не наносит никакого ущерба или вреда нигде, пока ваш XHTML проходит валидацию. И если вы хотите, чтобы веб-стандарты стали все более и более распространенными, придерживайтесь использования XHTML и валидируйте свои страницы.
Некоторые вещи становятся яснее с оглядкой на несколько лет назад. Необходимо развивать HTML постепенно. Попытка заставить мир перейти на XML, включая кавычки вокруг значений атрибутов и косые черты в пустых тегах и пространствах имен, все сразу, не сработала. Большая часть HTML-генерирующей общественности не перешла, в основном потому, что браузеры не жаловались. Некоторые крупные сообщества действительно перешли и наслаждаются плодами хорошо сформированных систем, но не все. Важно поддерживать HTML постепенно, а также продолжать переход к [хорошо сформированному] миру и развивать больше власти в этом мире.
«План состоит в том, чтобы основать совершенно новую группу HTML. В отличие от предыдущей, эта группа будет создана для постепенных улучшений HTML, а также параллельно XHTML. У нее будет другой председатель и контактная информация. Она будет работать над HTML и xHTML вместе. У нас есть сильная поддержка этой группы от многих людей, с которыми мы общались, включая производителей браузеров.
style
и cite
элемента. Разработчик Дэниел Глазман предлагает похожую критику, но также поддерживает некоторые обратно несовместимые изменения, такие как решение удалить элементы ins
и del
.... XHTML2... определяет новый словарь HTML с лучшими возможностями для гиперссылок, мультимедийного контента, аннотирования редактирования документов, расширенных метаданных, декларативных интерактивных форм и описания семантики человеческих литературных произведений, таких как поэмы и научные статьи... Однако в нем отсутствуют элементы для выражения семантики многих недокументных типов контента, часто встречающихся в Интернете. Например, сайты форумов, сайты аукционов, поисковые системы, интернет-магазины и тому подобное не очень хорошо соответствуют метафоре документа и не охватываются XHTML2...
Эта
спецификация направлена на расширение HTML таким образом, чтобы он также был пригоден в этих контекстах...
application/xhtml+xml
с использованием PHP , Python и Apache (через переписывание URL ).