Практическая разница между XHTML, HTML и XML

Итак, вот что я понимаю (поправьте, если ошибаюсь):

  • HTML5 - это новейшая версия (или, по крайней мере, скоро будет выпущена) HTML и содержит функции, которых еще нет в XHTML.
  • XHTML, используемый как текст типа MIME / html, равен HTML для целей рендеринга.
  • Преобразование из text / html в application / xhtml + xml сложно, потому что это не HTML
  • XML не совместим с HTML

Итак, мой вопрос: какое отношение XHTML имеет к HTML, помимо использования тегов? Какова практическая цель использования XHTML поверх XML или ее нет?


person waiwai933    schedule 22.01.2010    source источник


Ответы (4)


Да, HTML5 будет иметь функции (и даже элементы / теги), которых еще нет в XHTML. Он также повторно представит некоторые теги из HTML4, которые были удалены для XHTML. (iframe, я думаю, один из них)

Если вы хотите узнать о различиях между HTML4 / XHTML и HTML5, прочтите статью в Википедии о HTML 5: http://en.wikipedia.org/wiki/HTML_5#Differences_from_HTML_4.01.2FXHTML_1.x

Однако нет, XHTML не равен HTML для целей визуализации. http://hixie.ch/advocacy/xhtml

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

Он не равен HTML4 для целей рендеринга. Если вы используете MIME-тип XHTML - поскольку это XML - вы можете получить неприятные ошибки синтаксического анализа, если сделаете это неправильно:

Грязная ошибка синтаксического анализа XHTML

... но, несмотря на эту проблему, использование XHTML может привести к более согласованному поведению между браузерами, чем HTML4; поскольку HTML4 не такой строгий, браузеры очень стараются интерпретировать неоднозначную разметку, и разработчики браузера в конечном итоге имеют некоторую свободу выбора, как обрабатывать эти неоднозначности. Это приводит к несоответствиям, но поскольку XHTML является XML, браузер должен отказываться отображать страницу вообще, если она будет неоднозначной.

Однако XHTML может вызвать проблемы со старыми браузерами, особенно с пустыми элементами (самозакрывающимися тегами), такими как <br />; старый браузер не знает, что делать с /, и может подумать, что это часть имени тега, и тогда вы потеряете разрыв строки.

Наконец, я не знаю, что вы имеете в виду, говоря «Преобразование из text / html в application / xhtml + xml сложно, потому что это не HTML», но я рекомендую вам проверить книгу " Рефакторинг HTML "Эллиотта Расти Гарольда ... кажется, это более чем 300-страничный ответ на вопрос;)

person Richard JP Le Guen    schedule 22.01.2010
comment
У браузеров нет свободы создавать свои собственные правила о том, как анализировать HTML (больше). Теперь, когда HTML5 определяет правильный алгоритм синтаксического анализа. - person Ms2ger; 22.01.2010
comment
Браузеры никогда не имеют свободы устанавливать свои собственные правила парсинга HTML; только как обрабатывать ошибки. - person Quentin; 22.01.2010
comment
@ ms2ger - Хорошая точка зрения; Я должен был использовать термин HTML4 вместо просто HTML в абзаце после изображения. Сейчас редактирую :) - person Richard JP Le Guen; 22.01.2010

HTML5 - новейшая версия (или, по крайней мере, скоро будет выпущена)

Черновик. Нестабильный. Возможны изменения. Не будет выпущен скоро.

XHTML, используемый как текст типа MIME / html, равен HTML для целей рендеринга.

Более менее. Написание HTML-совместимого XHTML - это больше работы, чем написание HTML или XHTML, и это не так. t позволяет вам использовать любую интересную часть XHTML.

Преобразование из text / html в application / xhtml + xml сложно, потому что это не HTML

Преобразование из HTML в XHTML на самом деле довольно тривиально. Tidy может сделать это для большого количества документов (включая все действительные документы HTML).

XML не совместим с HTML

Правильнее было бы сказать, что HTML - это не XML.

Итак, мой вопрос: какое отношение XHTML имеет к HTML, помимо использования тегов? Какова практическая цель использования XHTML поверх XML или ее нет?

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

Преимущество использования XHTML над HTML заключается в том, что вы можете смешивать разные языки разметки в одном документе, поэтому (например) у вас может быть документ XHTML + SVG + MathML. Для этого требуется, чтобы клиент поддерживал все задействованные языки (или чтобы неподдерживаемые языки постепенно деградировали).

К сожалению, это непрактично для большинства проектов, начиная с Internet Explorer…

[не поддерживает XHTML]

person Quentin    schedule 22.01.2010
comment
Какое отношение имеет расширение файла к тому, как браузер обрабатывает файл? По моему опыту, более важно то, как веб-сервер обрабатывает файл. Я не тестировал его, но если вы скажете веб-серверу обрабатывать .xhtml как .html, тогда проблем не будет, верно? - person craigmoliver; 06.07.2010
comment
@craigmoliver - Да, это будет проблемой, поскольку в этом случае вы теряете все преимущества XHTML (т.е. документы со смешанным пространством имен). - person Quentin; 06.07.2010

Нет, HTML5 не будет иметь функций, которых нет в XHTML, потому что он определяет XHTML5 в том же документе.

person Ms2ger    schedule 22.01.2010

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

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

  1. Более согласованные алгоритмы в браузерах, что означает большую согласованность в реализациях браузеров.
  2. Меньше тактовых циклов на рендеринг - это означало, что устройства с низким энергопотреблением могли лучше обрабатывать рендеринг веб-страниц.
  3. Более строгая структурная семантика является требованием для «семантической паутины», что означает, что структура может быть использована для обеспечения согласованного извлечения полезной информации с веб-страниц.

XHTML5 расширяет HTML, чтобы сделать Интернет более интерактивным, насколько я понимаю, и, возможно, он более важен, чем HTML, для XHTML, поскольку более строгая семантика должна была соблюдаться с самого начала. XHTML5 добавляет много заметных изменений в протокол.

Что касается XML и HTML для Интернета - браузеру нужна некая рудиментарная фиксированная структура документа, чтобы иметь некоторое представление о документе, возможно, это не так важно, как раньше: под этим я подразумеваю, что XSLT и CSS могут преобразовать документ в презентабельный вывод для веб-браузера. Однако документ должен иметь некоторую присущую документу фиксированную структуру, которая имеет смысл для браузера без современных веб-технологий. HTML4 позволяет структурировать документ таким образом, чтобы элементарные браузеры, такие как lynx, могли отображать документ. - в конце концов, lynx не имеет возможности отображать элементы CSS и стиля, такие как изображения.

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

person Hassan Syed    schedule 22.01.2010
comment
XHTML не имеет более строгой структурной семантики. Он имеет ту же семантику, более простую структуру и более строгие правила обработки ошибок. (1) Нет. Это произошло в то время, когда браузеры уделяли немного больше внимания спецификациям, а не писали скребки для супа тегов, не читая спецификацию SGML. (2) Это связано с более простой структурой и требованиями к обработке ошибок. В наши дни это спорный вопрос, «устройства с низким энергопотреблением» намного мощнее, чем они были, когда впервые появился XHTML. - person Quentin; 22.01.2010
comment
(3) XHTML ничего не добавляет к семантике, которой еще не было в HTML 4.01 (за исключением возможности смешивания пространств имен с такими вещами, как RDF). (X) HTML5 движется в неправильном направлении с точки зрения семантики (cf w3.org/TR/html5/the-xhtml-syntax.html#the-marquee-element-0). - person Quentin; 22.01.2010
comment
@david Я согласен с (2) ... однако, если бы метод супа из тегов продолжался вместе с развитием методов проектирования, тогда «устройства с низким энергопотреблением» были бы в гораздо худшем положении в наши дни. Продолжайте и отредактируйте мой ответ, чтобы добавить свои комментарии, если хотите - кажется, ваша терминология лучше моей: D - person Hassan Syed; 22.01.2010