Обслуживание вашего XHTML с правильным типом MIME - PullRequest
5 голосов
/ 15 мая 2011

Сколько себя помню, я приложил немало усилий, чтобы сделать все правильно.Что ж, в любом случае я считаю правильным.

Теперь я чувствую, что пришло время получить ответы на некоторые очень важные вопросы раз и навсегда.

Все, кто клянется в XHTML, будут,рано или поздно наткнитесь на цитату: «если вы не предоставите правильный тип MIME, ваш документ будет интерпретирован как обычный HTML»

Скажите, что?Я создал превосходный документ XHTML, следуя всем стандартам и прочим.Что я сделал не так?Что я пропустил?

Насколько я понимаю, это по большей части серверная вещь, поэтому, конечно, я тоже это исследовал, и может показаться, что функция PHP header () - этоответь на проблему.

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

Пусть это будет сказано настолько ясно, насколько это возможно.

Мне нет дела до вычислимости браузера.(во всяком случае, на данном этапе)

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

Короче говоря, я хочу расстаться со способом SGML и принять способ XML, и я хочу иметь возможность, даже без малейших сомнений, сказать, что этот документ является допустимым XML / XHTML и интерпретируется как таковой.

Я думаю, что я могу просто запросить рассматриваемый документ XHTML через скрипт PHP и отправить его с правильным типом MIME, но как это на самом деле остается загадкой из-за противоречивой информациив сети.

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

С наилучшими пожеланиями.

Редактировать: Я не могу сказать, что я понимаю, почему или как, но, по крайней мере, я нашел способчтобы заставить его работать как надо, просто добавив: в начало обычного документа xhtml, конечно, изменив тип файла на PHP, чтобы фактически заставить его запускать скрипт.

Я совершенно уверен, что этоне конец истории, но пока я счастлив.

Ответы [ 2 ]

5 голосов
/ 15 мая 2011

Если вы установите заголовок /xhtml+xml, IE больше не будет интерпретировать ваши страницы. Вот почему на самом деле никто не мешает сделать это правильно. (И именно по этой причине я делаю это на другом сайте.)

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

index.en.html
index.en.xhtml

Затем, если запрошен URL / ресурс /index, он автоматически определит соответствующую версию документа и отправит его с нужным типом носителя. Тем не менее, он на самом деле не понимает дисперсию типов форматов сериализации, и вы не можете установить приоритет. И держать два файла с одинаковым содержимым не слишком разумно для начала.

Поэтому более простым подходом было бы использовать mod_rewrite для обработки переключения типов MIME:

RewriteCond %{HTTP_ACCEPT} !application/xhtml\+xml
RewriteRule .+\.xhtml$ - [T=text/html]

Это отправит настроенный заголовок для всех документов .xhtml, но переопределит его, если браузер не указывает поддержку XHTML. Это не совсем завершено, потому что во избежание проблем с прокси-сервером вам также нужно установить заголовок Vary: если вы вручную выполняете какой-либо просмотр содержимого. Это требует mod_header:

RewriteRule .+\.xhtml$ - [E=VARY_XHTML:1]
Header append Vary "Accept" env=VARY_XHTML

Вы можете сделать то же самое с оболочкой PHP-скрипта, но тогда вы потеряете все преимущества, связанные с обработкой сервером. В любом случае, это немного усилий, поэтому вряд ли кто-то действительно делает это. Но если вам действительно нужны ошибки синтаксического анализа XML, это может быть частично работоспособным вариантом.

2 голосов
/ 15 мая 2011

Чтобы синтаксический анализатор браузера мог анализировать XHTML с помощью синтаксического анализатора XML, он должен иметь тип Mime XML

HTML5 определяет это как:

Термин тип XML MIME используется для обратитесь к MIME-типам text / xml, application / xml и любой тип MIME чей подтип заканчивается четырьмя символы "+ xml". [RFC3023]

Наиболее распространенный такой тип пантомимы - application/xhtml+xml, но он далеко не единственный возможный.

...