Яка різниця між текстом / xml та програмою / xml для відповіді веб-сервісу


495

Це більше загальне питання про різницю між text/xmlта application/xml. Я досить новачок у написанні веб-сервісів (REST - Джерсі). Я працюю application/xmlз тих пір, як це відображається в більшості підручників / прикладів коду, які я використовую для вивчення, але нещодавно я дізнався про це text/xmlі цікавився, що в ньому відрізняється і коли ви будете ним користуватися application/xml?


Як зазначається у відповіді DaveV та у заголовку на tools.ietf.org/html/rfc3023 , RFC 3023 (цитований відповіддю Одеда , прийнятий на даний момент) є застарілим. Новий RFC 7303 фактично дає суттєво іншу відповідь на це питання, ніж раніше RFC 3023. Я думаю, тому було б корисно майбутнім читачам, якби ви прийняли відповідь DaveV, щоб найновіша інформація зберігалась у верхній частині списку відповідей.
Марк Амері

Виходячи з Дейва V нижче та Маріяна Черні, здається, що застосування / xml є кращим зараз, якщо ви робили щось нове.
Sql Surfer

text/призначений для людей. application/призначений для комп'ютерів
Ian Boyd

Відповіді:


108

Це старе питання, але те, що часто відвідується і чіткі рекомендації, тепер доступні в RFC 7303, який застаріло RFC3023. Коротше кажучи (розділ 9.2):

The registration information for text/xml is in all respects the same
as that given for application/xml above (Section 9.1), except that
the "Type name" is "text".

6
У цитованому абзаці згадується інформація про реєстрацію IANA, яка (перевіряючи розділ 9.1) також стосується кодування, тому більше не повинно бути різниць в обробці набору символів між application/xmlі text/xml. Крім того, я вважаю цю частину реферату: "Ця специфікація стандартизує ... додаток / xml ..., визначаючи текст / xml ... як псевдонім ...", щоб означати це application/xmlі text/xmlє рівнозначним, і немає переваги одна про іншу.
Marián Černý

427

З RFC ( 3023 ), під розділом 3, Типи носіїв XML:

Якщо XML-документ - тобто необроблений, вихідний XML-документ - читається випадковими користувачами, текст / xml є кращим перед application / xml. Користувачі MIME (і агенти веб-користувачів), які не мають явної підтримки тексту / xml, розглядають його як текст / звичайний, наприклад, відображаючи сутність XML MIME як звичайний текст. Application / xml є кращим, коли об'єкт XML MIME не читається випадковими користувачами.

(наголос мій)


6
@drachenstern - Я вважаю, що не описові елементи та атрибути є більш імовірними ( <a1 d="" g="">наприклад, нечитатими випадковими користувачами).
Oded

3
@Mike Звичайно. Деякі файли XML - це перелік записів, таких як: msdn.microsoft.com/en-us/library/ms762271%28v=vs.85%29.aspx Ця ймовірність прочитати та обробити програмою. Інші - це текст з розміткою, як HTML-сторінка. Використання тексту / xml для них звучить більш підходящим.
biziclop

5
Наведіть, будь ласка, приклад нечитабельних та читабельних. Ми використовуємо файли, які в основному читаються, але мають закодовані вузли base64 тощо.
Joe Phillips,

5
@JoePhilllips - Там ви йдете. base64 не читається людьми. Якщо весь документ можна прочитати і має сенс для людини без інструментів чи переглянувши посібник (що це xgsfозначає?), То він читається.
Одід

8
@CommaToast Веб-сервер може повернути відформатований та з відступом XML, якщо "text / xml" є Accept, тоді як application / xml може повернути всі незначні пробіли, вилучені. Наприклад, у ASP.NET MVC ви можете вказати різні обробники для різних міметипів.
Новатерата

33

Згідно з цією статтею , переважним є застосування / xml.


EDIT

Я трохи прослідкував статтю.

Автор стверджує, що кодування, заявлене в інструкціях з обробки XML, як:

<?xml version="1.0" encoding="UTF-8"?>

можна ігнорувати, коли text/xmlвикористовується тип медіа.

Вони підтримують тезу з визначенням text/*специфікації сімейства типів MIME в RFC 2046 , зокрема наступним фрагментом:

4.1.2.  Charset Parameter

   A critical parameter that may be specified in the Content-Type field
   for "text/plain" data is the character set.  This is specified with a
   "charset" parameter, as in:

     Content-type: text/plain; charset=iso-8859-1

   Unlike some other parameter values, the values of the charset
   parameter are NOT case sensitive.  The default character set, which
   must be assumed in the absence of a charset parameter, is US-ASCII.

   The specification for any future subtypes of "text" must specify
   whether or not they will also utilize a "charset" parameter, and may
   possibly restrict its values as well.  For other subtypes of "text"
   than "text/plain", the semantics of the "charset" parameter should be
   defined to be identical to those specified here for "text/plain",
   i.e., the body consists entirely of characters in the given charset.
   In particular, definers of future "text" subtypes should pay close
   attention to the implications of multioctet character sets for their
   subtype definitions.

За їх словами, таких труднощів можна уникнути при використанні application/xmlтипу MIME. Правда це чи ні, я б не пішов так далеко, щоб уникнути text/xml. ІМХО, найкраще просто слідувати семантиці читабельності людини (нечитабельності) і завжди пам'ятати, щоб вказати діаграму.


1
+1 для посилання. Вашими власними словами, який основний висновок досягнуто у статті? Можливо, "у статті зазначено, що кодування файлів ігнорується, а це означає, що ви не можете надсилати utf-8 та бінарні дані у файл із заголовком text / xml", чи це перевірено?
Shanimal

Я погоджуюся з @Shanimal, відповідь повинна містити суть статті, оскільки посилання може не тривати вічно. Її зникнення дасть відповідь в значній мірі марною. Чи може хто-небудь підтвердити твердження про ігнорування інструкцій з обробки XML щодо кодування?
toniedzwiedz

1
За словами оригінального автора, це було зафіксовано в більш пізніх оборотах специфікаційUpdate: The situation has changed in the new HTTP/1.1 RFC: The default charset of ISO-8859-1 for text media types has been removed; the default is now whatever the media type definition says.
TheNorthWes

Якщо я завантажую XML-файл з ajax, це "документ" типу, application/xmlале якщо я використовую елемент форми введення, це "файл" типу, text/xmlякий не обробляє належним чином мій код. Як я можу конвертувати його в інший формат?
Адвокат диявола

5

application/xmlрозглядається svnяк двійковий тип, тоді text/xmlяк текстовий файл, для якого може бути показаний різниця.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.