XHTML - это подмножество XML; Тип мультимедиа XML / mime - text / xml , а тип мультимедиа / mime XHTML - application / xhtml + xml .
Как правило, HTML по существу рассматривается как простой текст, который интерпретируется очень свободно. Поскольку репутация нежелательного HTML-статуса XHTML была создана, чтобы заставить веб-дизайнеров и веб-разработчиков кодировать чистый HTML. Браузеры Gecko (Firefox) и Presto (Opera) корректно разбивают страницу и отображают некорректную ошибку синтаксического анализа XML, тогда как WebKit (Chrome / Safari) и Trident (только Internet Explorer 9.0+) завершаются сбоем и просто прекращают рендеринг страницы.
Приложение XHTML, используемое как text / html, НЕ XHTML, это HTML с типом XHTML.
Чтобы код XHTML служил приложением XHTML, он должен быть представлен как application / xhtml + xml.
XHTML также предназначен для обратной совместимости с HTML.
Следующий код PHP будет смотреть на заголовки, отправленные браузером клиента, и будет обслуживать страницу как приложение XHTML, если браузер его поддерживает (все Chrome, Safari 3.0+ (возможно, 1.0)), Mozilla Suite 0.8 + / все Firefox. и Opera 7.0+ (возможно, 6.0) поддерживают XHTML. Только Internet Explorer 8.0 и старше имеют долю рынка, которая не поддерживает XHTML. Браузеры KHTML (Konqueror) поддерживают XHTML, однако я думаю, что 4.4 не выполняет / не обслуживает правильный заголовок для сервера.
<?php
$http_accept_xhtml = stristr($_SERVER['HTTP_ACCEPT'],'application/xhtml+xml');
if ($http_accept_xhtml) {$mime = 'application/xhtml+xml';}
else {$mime = 'text/html';}
header('Content-Type: '.$mime);
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
?>
XHTML намного лучше, чем HTML, если вы достаточно умны, чтобы исправлять ошибки, когда сталкиваетесь с ними. Это более строгое, но в этом все дело, гораздо меньше субъективности. X в XHTML означает расширяемый, поэтому он поддерживает SVG и другие языки раньше, чем HTML, если вы немного читаете.