Так что же случилось с XHTML5?
Эта страница является черновиком как для xhtml5, так и для html5? Значит, нет разницы между этими типами?
Так что же случилось с XHTML5?
Эта страница является черновиком как для xhtml5, так и для html5? Значит, нет разницы между этими типами?
Ответы:
В 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 в основных браузерах.
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
И даже валидатор!
В настоящее время он редко называется XHTML5 (и, возможно, даже используется реже), поскольку в основном это все еще HTML5, но он все еще там.
Проще говоря: каждое изменение спецификации HTML5 также является неявным, соответствующим изменением XHTML5.
HTML5 является стандартом де-факто и де-юре ! XHTML, как стандарт, тоже есть.
Рекомендация W3C 28 октября 2014 г.
Название стандарта содержит строку «и XHTML» , поэтому мы говорим об окончательном решении W3C объединить HTML и XHTML в единый стандарт ; и этот стандарт показывает, как сериализовать файл HTML в файл XHTML и наоборот.
XHTML
части и важные примечания:
application/xhtml+xml
Как подытожил Л. Ф. Сикос
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, пожалуйста, исправьте, если есть какое-то "недоразумение" ...
Есть некоторые проблемы в «совершенных и общих преобразованиях HTML5-XHTML5 / XHTML5-HTML5», вы должны сделать «личный выбор» и потерять информацию. По контексту будут разные ответы:
Проще говоря : ДА. Есть много (простых) примеров, когда отображение является совершенным и обратимым.
Строго говоря : НЕТ. Смотрите также комментарий @vaxquis ниже и старые ответы на этой странице. Некоторые типичные проблемы:
Да, ты можешь. Даже сериализация фрагментов.
Да, но не так быстро и просто, как старые DTD ... Смотрите сложные валидаторы, как validator.nu
Да, ты можешь. Давайте объясним, что вы можете.
Некоторые фреймворки, такие как Cocoon , используют « цепочки XSLT ». Выводы HTML5 и XHTML5 можно использовать как «последний вывод в цепочке» ... Конечно, на промежуточных этапах HTML5 нельзя использовать, поскольку он не является XML, но можно использовать XHTML5.
Вышеупомянутая проблема валидации вновь возникает здесь: здесь нет строгого соглашения, поэтому иногда появляется меньше ясности относительно «стандартной структуры XHTML». В этой ситуации вы должны обращать внимание на «свои условности» и быть последовательными.
saveXML()
метод при использовании DOMDocument страницы HTML5 ?Да. Это типичная ситуация, когда используются рекомендации сериализации. XML будет действительным, код XHTML5 отображается из исходного состояния HTML5 и DOM ... Но, в некоторых структурах, некоторая информация может быть потеряна, как указано выше.
Да, к сожалению, 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.