Почему MIME-тип для текста HTML, а MIME-тип для приложения XHTML? - PullRequest
1 голос
/ 05 февраля 2012

Что делает приложения XHTML (и другие языки XML) в то время как другие языки на основе SGML являются текстовыми? Разве XML-файлы не являются текстовыми файлами?

Ответы [ 2 ]

3 голосов
/ 05 февраля 2012

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, если вы немного читаете.

0 голосов
/ 05 февраля 2012

Существует несколько приемлемых типов MIME для многих типов данных. Например, XML может быть либо text / xml, либо application / xml (http://tools.ietf.org/html/rfc3023).

HTTP полон нескольких правильных способов сделать что-то; это побочный продукт того, чтобы быть разработанным и используемым многими людьми. Это также постоянно развивается. Как правило, даже если бы существовал только один способ спроектировать что-то, его можно было бы использовать многими способами, и они стали стандартами де-факто после того, как достаточное количество людей подхватило их.

Если вы не обнаружите никаких проблем с утверждением, что ваши XHTML и SGML оба являются "приложениями", и все по-прежнему работает, и это делает вас счастливее, сделайте это.

...