Здесь я вижу кучу ответов с зачетом голосов, которые делают неправильные предположения о том, как работают браузеры. Итак, позвольте мне дать 2 цента по этому вопросу.
Прежде всего, почему существует XHTML?
Изо рта лошади:
Был организован двухдневный семинар для обсуждения необходимости новой версии HTML в XML. Мнение на семинаре было четким «Да»: с HTML на основе XML другие языки XML могли включать биты XHTML, а документы XHTML могли включать биты других языков разметки. Мы также могли бы воспользоваться преимуществом редизайна, чтобы очистить некоторые из более неопрятных частей HTML и добавить некоторые новые необходимые функции, такие как улучшенные формы.
Короче говоря, XHTML был создан по двум причинам:
- Чтобы разрешить смешивать другое содержимое (например, mathml и svg) в одном документе с четкими правилами форматирования.
- Расширить и очистить HTML.
Упрощение проверки не было целью разработки, а также не требовалось, поскольку валидаторы HTML4 существуют и являются всеобъемлющими.
Проще ли анализировать XHTML для браузеров?
Да и нет. Разобрать XML проще, чем суп из тегов HTML, но, если вы не используете mime-тип xhtml + xml или application / xml для своей страницы XHTML, браузеры анализируют его с помощью механизма синтаксического анализа HTML. Тем не менее, если вы используете xml-типы MIME, IE блокирует ваш контент. Это поведение объяснено в блоге IE. Нет разницы в том, как браузеры обрабатывают XHTML и HTML, если вы используете его с типом mime text / html!
Да, они делают! Вы лжете!
Да, действительно, но только из-за учения. Браузеры используют типы документов в верхней части HTML-документов, чтобы определить, следует ли им использовать стандартный режим или режим причуд (= режим ошибок). Все действительные документы XHTML содержат тип документа, который запускает стандартный режим. Тем не менее, в HTML вы можете получить тот же результат, включив <! Doctype html> "вверху вашей страницы.
Так вы говорите, что XHTML не имеет смысла?
Совсем нет. XHTML имеет много преимуществ:
- Его можно преобразовать с помощью инструментов XML, таких как XSLT
- Его проще анализировать в коде на стороне сервера
- Может интегрировать пользовательскую разметку, все еще проходя проверочный тест
Итак, я должен использовать это тогда?
Как всегда, ответ "это зависит".
- На стороне сервера, возможно, полезно. Если вы хотите иметь преимущества XML на стороне сервера, вы должны использовать вариант XHTML, будь то XHTML1 (сериализация HTML4 в виде XML) или XHTML5 (сериализация HTML5 в виде XML).
- На стороне клиента, не полезно. Я настоятельно рекомендую избегать предоставления вашим пользователям типа mime XML. Синтаксический анализ XML не сочетается с изящной обработкой ошибок, создавая только «ошибку синтаксического анализа XML» вместо документа, если у вас есть проблема с разметкой на вашей странице. Если вы никогда не пишете ошибок, вам потребуется изящная обработка ошибок.
А как насчет HTML5? Это конкурирует с XHTML?
Нет, это не так. HTML5 имеет две сериализации , одна как HTML, а другая как XML. Преимущество состоит в том, что оба теперь имеют строгие правила синтаксического анализа. Вы получите предсказуемое поведение во всех браузерах, независимо от используемого вами подхода. Однако HTML5, анализируемый как HTML, имеет преимущество изящной обработки ошибок. Вот почему я предпочитаю такой подход. Как всегда, YMMV.