XHTML5 мертв или это просто синоним HTML5?

87

Так что же случилось с XHTML5?

http://www.w3.org/TR/html5/

Эта страница является черновиком как для xhtml5, так и для html5? Значит, нет разницы между этими типами?

W3C
источник
1
По состоянию на 2014-12-08, W3C все еще работает над стандартом. w3.org/TR/html5 и w3.org/TR/html5/the-xhtml-syntax.html были обновлены 2014-10-28.
Рассел Уиндер
6
В наши дни, в 2015 году, XHTML - это стандарт W3C! ... Смотрите обновленную дискуссию
Питер Краусс
2
Вы приняли неправильный ответ. Ответ от vaxquis - правильный ответ.
JacquesB

Ответы:

77

В 2012 году на момент написания статьи было ясно, что W3C решил отказаться от XHTML для HTML 5. Это решение было мотивировано несколькими причинами:

  • Лишь немногие действительно интересовались XHTML. Большинство сайтов были написаны в простом HTML.

  • Еще меньше действительно поняли, что такое XHTML и как его использовать. Слишком много веб-сайтов, которые претендовали на обслуживание XHTML, использовали неправильные заголовки вместо Content-Type: application/xhtml+xml.

  • Даже когда вы полностью понимаете, что такое XHTML и какими должны быть заголовки, это действительно сложно, если некоторые дрянные браузеры не принимают / не поддерживают application/xhtml+xmlтип содержимого. Это означало, что вы должны были изменить заголовок в соответствии с браузером.

  • XML-часть XHTML также вызвала некоторые странные ситуации, которые пришлось решать разработчикам. Одним из них является INVALID_STATE_ERR: DOM Exception 11сообщение, появляющееся при назначении текста, содержащего символы HTML (например é), элементу на странице XHTML. Когда после выполнения AJAX-запроса вы сталкиваетесь с этой ошибкой с ее очень полезным сообщением в большом веб-приложении, вы действительно не представляете, является ли это ошибкой JQuery, AJAX или чего-то еще.

  • Написание кода HTML 5 не означает смешения тегов. Если вы увлечены XML и XHTML, вы все равно можете написать код HTML 5, который будет очень похож на XML.

  • В первые дни мобильных телефонов XHTML был интересен для мобильных устройств, которые были не очень мощными. Синтаксический анализ XML намного проще, чем HTML. Теперь с двухъядерными мобильными устройствами действительно не имеет значения, нужно ли им анализировать чистый действительный XML или грязный HTML, полный хаков и смешанных тегов.

В спецификации октября 2014 года упоминается синтаксис XHTML . На данный момент неясно, существует ли такая вещь, как новый язык XHTML (не синтаксис ), и, если существует, какова будет позиция XHTML или принятие нового стандарта XHTML в основных браузерах.

оборота Арсений Мурзенко
источник
11
Я думаю, что единственное, что ваш ответ отсутствует, это ссылка на разметку полиглота
Яннис
2
Однако вы можете использовать HTML5 в качестве XML и использовать более строгий синтаксис.
Эрик Реппен
3
@ErikReppen, но вы потеряете преимущество ссылок на сущности, таких как 
Мистер Листер
4
Ужасное решение Мы выбросили инструмент XSL, который был бы доступен с XML.
Михай Данила
5
Это утверждение неверно. W3C не отказался от XHTML в HTML5 Синтаксис XHTML, словарь и API
Роб
32

XHTML5 является синонимом «HTML5, сериализованного как XML».

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

...

Второй конкретный синтаксис - это синтаксис XHTML, который является приложением XML. Когда документ передается с типом XML MIME, таким как application / xhtml + xml, веб-браузеры обрабатывают его как XML-документ для анализа XML-процессором. Авторам напоминают, что обработка для XML и HTML отличается; в частности, даже незначительные синтаксические ошибки не позволят полностью отобразить документ, помеченный как XML, тогда как в синтаксисе HTML они будут игнорироваться. Эта спецификация определяет версию 5.0 синтаксиса XHTML, известного как «XHTML 5».

Кроме того, здесь есть хороший документ по написанию полиглотов HTML5 (страниц, которые можно сериализовать как в обычный HTML5, так и в XML):

http://dev.w3.org/html5/html-polyglot/html-polyglot.html#bib-HTML5

И даже валидатор!

http://html5.validator.nu/

В настоящее время он редко называется XHTML5 (и, возможно, даже используется реже), поскольку в основном это все еще HTML5, но он все еще там.

Проще говоря: каждое изменение спецификации HTML5 также является неявным, соответствующим изменением XHTML5.

vaxquis
источник
10

HTML5 является стандартом де-факто и де-юре ! XHTML, как стандарт, тоже есть.

HTML5 - словарь и связанные API для HTML и XHTML

Рекомендация W3C 28 октября 2014 г.

Название стандарта содержит строку «и XHTML» , поэтому мы говорим об окончательном решении W3C объединить HTML и XHTML в единый стандарт ; и этот стандарт показывает, как сериализовать файл HTML в файл XHTML и наоборот.

XHTML части и важные примечания:


Понимание и использование

Как подытожил Л. Ф. Сикос

XHTML5 - это XML-сериализация HTML5. Синтаксис описан спецификацией HTML5. Однако не следует путать, так как XHTML5 - это приложение XML. Другими словами, HTML5 и XHTML5 имеют идентичный словарь, но разные правила синтаксического анализа.

Документы HTML5 также могут быть действительными документами XML. Эту разметку часто называют языком «полиглот». Это язык перекрытия документов, которые одновременно являются документами HTML5 и XML. Сериализации HTML5 и XHTML5 являются кросс-совместимыми. Тем не менее, XHTML5 имеет более строгий синтаксис. Кроме того, некоторые части XHTML5 недопустимы в HTML5, например, инструкции по обработке.

Таким образом, строго говоря (и подчеркнут @vaxquis) «XHTML просто синтаксис XML сериализации», нет нет DTD или другой вид схемы XML .

Некоторые люди не любят говорить «XHTML5 - это XHTML». Вопрос должен быть разделен на мини-FAQ о том, «когда я могу использовать его как XHTML». Это WIKI, пожалуйста, исправьте, если есть какое-то "недоразумение" ...


Вопросы-Ответы

Могу ли я использовать XHTML5 в качестве «версии стандарта XHTML 2014 года»?

Есть некоторые проблемы в «совершенных и общих преобразованиях HTML5-XHTML5 / XHTML5-HTML5», вы должны сделать «личный выбор» и потерять информацию. По контексту будут разные ответы:

  • Проще говоря : ДА. Есть много (простых) примеров, когда отображение является совершенным и обратимым.

  • Строго говоря : НЕТ. Смотрите также комментарий @vaxquis ниже и старые ответы на этой странице. Некоторые типичные проблемы:

Могу ли я использовать (бесстрашно!) Сериализацию XHTML5 с XSLT, XPath и т. Д.?

Да, ты можешь. Даже сериализация фрагментов.

Могу ли я проверить XHTML5?

Да, но не так быстро и просто, как старые DTD ... Смотрите сложные валидаторы, как validator.nu

Могу ли я использовать XHTML5 в качестве нетерминального выхода в цепочке XSLT?

Да, ты можешь. Давайте объясним, что вы можете.

Некоторые фреймворки, такие как Cocoon , используют « цепочки XSLT ». Выводы HTML5 и XHTML5 можно использовать как «последний вывод в цепочке» ... Конечно, на промежуточных этапах HTML5 нельзя использовать, поскольку он не является XML, но можно использовать XHTML5.

Вышеупомянутая проблема валидации вновь возникает здесь: здесь нет строгого соглашения, поэтому иногда появляется меньше ясности относительно «стандартной структуры XHTML». В этой ситуации вы должны обращать внимание на «свои условности» и быть последовательными.

Могу ли я использовать saveXML()метод при использовании DOMDocument страницы HTML5 ?

Да. Это типичная ситуация, когда используются рекомендации сериализации. XML будет действительным, код XHTML5 отображается из исходного состояния HTML5 и DOM ... Но, в некоторых структурах, некоторая информация может быть потеряна, как указано выше.

Peter Krauss
источник
Нет. XHTML - это всего лишь синтаксис XML-сериализации HTML5, и эту тему я уже рассмотрел в своем ответе около года назад. Здесь нет «слияния», потому что оно уже «слилось» в ранних черновиках W3C / WHATWG HTML5 после того, как было отложено XHTML 2.0; Вы неправильно понимаете контекст здесь. Кроме того, XPath и XSLT только косвенно связаны с этим вопросом; Кроме того, каков хорошо известный MIME-тип "XHTML-часть и / или примечание"? Кроме того, вы в принципе не можете сериализовать HTML в XHTML - предлагаемое решение состоит в том, чтобы записать полиглоты, сериализующие как оба, а не «повторно сериализовать» его.
vaxquis
хм ... @vaxquis, хорошо, я отредактировал, пожалуйста, помогите. И здесь, в комментариях, давайте говорим на одном языке: вы используете «строго говоря», а я использовал «более широкую речь» во введении ... Теперь мы можем указать в тексте ответа, что вы хотите исправить.
Питер Краусс
9

Да, к сожалению, XHTML ушел.

Добавляя еще одну причину к отличному ответу MainMa:

Когда XHTML был создан, он предназначался для использования WebApps для обслуживания структурированного контента, который будет понятен не браузерным программным обеспечением, у которого не было бы парсеров HTML-тегов. Для ScreenReaders XHTML по-прежнему отлично подходит, но для любого другого программного обеспечения WebServices удовлетворяют эту потребность, и они в основном используют XML или JSON. Сам SOAP имеет свою собственную XML-схему, более простую, чем XHTML, и ориентированную на работу.

Насколько я знаю, в мире нет ни одного WebApp, который бы передавал одно и то же сообщение HTTP как браузерам, так и другим клиентам. Даже архитектура REST, предназначенная для обслуживания одного и того же представления контента в нескольких типах контента в зависимости от предпочтений клиента, не используется для обслуживания браузеров XHTML / feed.

Например, в Java EE, используя Eclipse, мы можем развернуть уникальный файл war, содержащий Servlets + JSP для обслуживания HTML, вместе с Axis2 для обслуживания WebService. Просто проще разрабатывать отдельные программы для браузеров и WebService, чем иметь уникальные, сложные программы, которые обслуживают их всех.

Основной причиной отклонения REST является именно сложность (и это должно было быть просто!) Разработки сервера, который обслуживает один и тот же контент для любого типа клиента, ничего не зная об этом. Кроме того, трудно удовлетворить потребность в быстром развитии Web, наряду с сохранением стабильного определения, которое не заставляло бы клиентов, не являющихся браузерами, обновляться каждый раз при изменении XHTML, скажем так, чтобы поддерживать XHTML действительным, когда он создается многими различными модулями.

Точно так же очень трудно разработать клиент без браузера, который анализирует документ XHTML, даже если он является действительным, из-за всех тех элементов XML, которые предназначены для структурирования макета, отображаемого браузером, и не предназначены для хранения содержимого.

Если разработчики REST уже жалуются на сложность XML SOAP, которая НАМНОГО проще, чем XHTML, предназначенный для браузера, представьте, как трудно обрабатывать XHTML для нескольких типов клиентов, на стороне сервера и на стороне клиента.

На практике: используйте HTML, похожий на XML, если хотите, для создания веб-сайтов для браузеров и любого вида решения WebService для не браузерных клиентов.

НО, я также думаю, что XHTML5 должен быть создан. XHTML 1.1 (хорошо, 1.0, 1.1 непригоден для использования) устареет с HTML5, и нам все еще нужен валидатор, который принимает элементы HTML5 и проверяет правильность XML.

Hikari
источник
1
Может быть, я немного опоздал, но как XHTML 1.1 непригоден по сравнению с 1.0? Во всяком случае, его DTD содержит больше элементов. Разве вы не говорите о наборах кадров и тому подобное?
Мистер Листер