Яке значення типу вмісту потрібно надіслати для свого сайту XML?


128

Я думав, що мені слід надіслати "text / xml", але потім прочитав, що я повинен надіслати "application / xml". Це важливо? Чи може хтось пояснити різницю?

Відповіді:


160

Різниця між текстом / XML і додатком / XML є символом за замовчуванням , що кодує якщо кодування параметр опущений:

Text / xml та application / xml поводяться по-різному, коли параметр charset не є чітко визначеним. Якщо діапазон за замовчуванням (тобто US-ASCII) для тексту / xml з якоїсь причини незручний (наприклад, погані веб-сервери), application / xml надає альтернативу (див. "Необов’язкові параметри" реєстрації програми / xml у розділі 3.2).

Для тексту / xml :

Відповідно до [RFC2046], якщо текст / xml-сутність отримана з параметром charset, опущений, MIME-процесори та XML-процесори ОБОВ'ЯЗКОВО використовувати значення діаграми за замовчуванням "us-ascii" [ASCII]. У випадках, коли сутність XML MIME передається через HTTP, значення діаграми за замовчуванням все ще є "us-ascii".

Для застосування / xml :

Якщо отримано додаток / xml-об'єкт, коли параметр charset опущений, заголовок MIME Content-Type не надає жодної інформації про діаграму. Відповідні процесори XML ОБОВ'ЯЗКОВО дотримуються вимог розділу 4.3.3 [XML], які безпосередньо стосуються цієї ситуації. Однак процесори MIME, які не є процесорами XML, НЕ БУДУТЬ приймати схему за замовчуванням, якщо параметр charset пропущено з програми / xml-сутності.

Отже, якщо параметр charset пропущено, кодування символів text / xml є US-ASCII, тоді як за допомогою application / xml кодування символів може бути визначене в самому документі.

Тепер головним правилом в Інтернеті є: "Будьте суворі з результатами, але будьте толерантні до введення". Це означає, що переконайтеся в тому, щоб якомога більше відповідати стандартам при передачі даних через Інтернет. Але вбудуйте деякі механізми, щоб не помітити помилки або здогадуватися при отриманні та інтерпретації даних через Інтернет.

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


24

Як правило, найбезпечніша ставка на те, щоб ваш документ правильно поводився з усіма веб-серверами, проксі-серверами та клієнтськими браузерами, ймовірно, такий:

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

Що стосується специфікації RFC 3023 , яку деякі веб-переглядачі не реалізують належним чином, головна відмінність типів вмісту полягає в тому, як клієнти повинні поводитися з кодуванням символів таким чином:

Для application / xml, application / xml-dtd, application / xml-external-parsed-object, або будь-який із підтипів програми / xml, таких як application / atom + xml, application / rss + xml або application / rdf + xml , кодування символів визначається в такому порядку:

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

Для text / xml, text / xml-external-parsed-object або такого підтипу, як text / foo + xml, атрибут кодування декларації XML в документі ігнорується, а кодування символів:

  1. кодування, заданого в параметрі charset заголовка HTTP Content-Type, або
  2. us-ascii.

Більшість парсерів не реалізують специфікацію; вони ігнорують HTTP Context-Type і просто використовують кодування в документі. З такою кількістю неправильно сформованих документів, це навряд чи зміниться незабаром.


9

обидва добре.

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

Зауважте, що ці типи вмісту спочатку були визначені для вкладення електронної пошти до того, як вони згодом стали використовуватись у веб-світі.


6

text / xml - це документи, які були б значущими для людини, якщо їх подавати як текст без подальшої обробки, додаток / xml - для всього іншого

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

Щоб вказати, що об'єкт XML за умовчанням слід розглядати як звичайний текст, використовуйте мультимедійний текст text / xml. Це обмежує кодування, що використовується в об'єкті XML, тими, які сумісні з вимогами для типів текстових носіїв, як описано в [RFC-2045] та [RFC-2046], наприклад, UTF-8, але не UTF-16 (крім HTTP).

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


І все-таки смішно, що кращим типом HTML MIME є text/htmlі кращим XHTML MIME тип application/xhtml+xml.
zneak

1
Не зовсім. text/htmlіснує вже дуже давно, і змінити це було трохи пізно.
Квентін

1

Інші відповіді тут стосуються загального питання про те, що є правильним Content-Typeдля відповіді XML, і зробіть висновок (як у чому різниця між текстом / xml проти програми / xml для відповіді веб-сервісу ), що text/xmlі application/xmlдопустимі обидва . Однак жодна з них не стосується того, чи існують якісь правила, характерні для мап сайту .

Відповідь: немає. Характеристика сайту https://www.sitemaps.org , і за допомогою site:пошуку Google ви можете підтвердити, що вона не містить слів чи фраз mime , mimetype , type-type , application / xml або text / xml . Іншими словами, він повністю мовчить на тему, що Content-Typeслід використовувати для розміщення мапи сайту.

За відсутності коментарів у специфікації сайту, що безпосередньо стосується цього питання, ми можемо сміливо припускати, що застосовуються ті самі правила, що і при виборі Content-Typeбудь-якого іншого документа XML - тобто, це може бути text/xmlабо application/xml.

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