2010-07-17 4 views

ответ

136

difference between text/xml and application/xml является кодировка символов по умолчанию, если кодировок параметр пропущены:

Текст/XML и приложения/XML ведут себя по-разному, когда параметр кодировки не указан явно. Если по какой-либо причине кодировка по умолчанию (т. Е. US-ASCII) является неудобной (например, серверы с плохим веб-сервером ), приложение/xml предоставляет альтернативу (см. «Необязательные параметры » регистрации приложения/xml в разделе 3,2).

Для text/xml:

совместимый с [RFC2046], если текст/XML объект принимается с : параметром кодировки опущено, MIME процессоры и процессоры XML должны использовать значение кодировки по умолчанию " US-ASCII "[ASCII]. В случаях , где объект XML MIME передается по HTTP, значение кодировки по умолчанию по-прежнему «us-ascii».

Для application/xml:

Если приложение/XML объект получен, когда параметр кодировки опущен, никакой информации не предоставляется о кодировки заголовка MIME Content-Type. Соответствующие XML процессоры ДОЛЖНЫ следовать требованиям раздела 4.3.3 [XML] , которые непосредственно адресуют это непредвиденное обстоятельство. Однако MIME-процессоры , которые не являются XML-процессорами, НЕ ДОЛЖНЫ принимать кодировку по умолчанию, если параметр charset исключен из объекта application/xml.

Так что, если кодировок параметр опущен, кодировка символов текста/XML является US-ASCII, а с приложения/XML кодировка символов может быть указан в самом документе.

Теперь эмпирическое правило в Интернете: «Будьте строг с выходом, но будьте терпимы к входу». Это означает, что вы должны соблюдать стандарты как можно больше при доставке данных через Интернет. Но создайте некоторые механизмы, чтобы игнорировать ошибки или угадывать при получении и интерпретации данных через Интернет.

Так что в вашем случае просто выберите один из двух типов (я рекомендую приложение/xml) и не забудьте правильно указать используемую кодировку символов (я рекомендую использовать соответствующую кодировку символов по умолчанию, чтобы играть безопасно, поэтому в случай приложение/xml использование UTF-8 или UTF-16).

6

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

Каждый XML объект подходит для использования с приложением/XML носитель информации type без модификации. Но это не использует тот факт, что XML-код можно рассматривать как обычный текст во многих случаях. Пользовательские агенты MIME (и агенты веб-пользователей), которые не имеют явной поддержки для application/xml, будут обрабатывать его как приложение/октет-поток, например, для , предлагая сохранить его в файл.

Чтобы указать, что объект XML должен обрабатываться как обычный текст по умолчанию , используйте тип материала text/xml. Это ограничивает кодировку , используемую в объекте XML, для тех, которые совместимы с требованиями для типов текстовых носителей, как описано в [RFC-2045] и [RFC-2046], например UTF-8, но не UTF-16 (за исключением HTTP).

- http://www.ietf.org/rfc/rfc2376.txt

+0

Тем не менее, забавно, что предпочтительным типом HTML MIME является «text/html», а предпочтительным типом MIME XHTML является «application/xhtml + xml». – zneak

+1

Не совсем. 'text/html' существует очень долгое время, и было немного поздно его менять. – Quentin

9

оба прекрасно.

text/xxx означает, что в случае, если программа не понимает xxx, имеет смысл показать файл пользователю как обычный текст. application/xxx означает, что это бессмысленно показывать.

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

22

Как правило, безопасная ставка в направлении принятия документа лечить должным образом всеми веб-серверами, прокси и клиентские браузеры, вероятно, следующее:

  1. Используйте приложение/XML типа
  2. контента
  3. Включить кодировку символов в тип содержимого, возможно, UTF-8
  4. Включить подходящую кодировку символов в атрибут кодирования самого документа XML.

С точки зрения RFC 3023 спецификации, что некоторые браузеры не в состоянии правильно реализовать, главное различие в типах контента в том, как клиенты должны относиться кодировку следующим образом:

Для применения/xml, application/xml-dtd, application/xml-external-parsed-entity или любой из подтипов приложения/xml, таких как application/atom + xml, application/rss + xml или application/rdf + xml, символ кодирование определяется в следующем порядке:

  1. кодировка, указанная в параметре charset er HTTP-заголовка Content-Type
  2. кодировка, указанная в атрибуте кодирования декларации XML в документе,
  3. utf-8.

Для текста/XML, текст/XML-внешнего разобранное ничтожества, или подтипа, как текст/обув + XML, атрибут кодирования декларации XML в документе игнорируется, и кодировка символов:

  1. кодирования приведены в параметре кодировки заголовка Content-Type HTTP или
  2. US-ASCII.

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