Quelle est la différence entre text / xml et application / xml pour la réponse du service Web

495

Il s'agit plus d'une question générale sur la différence entre text/xmlet application/xml. Je suis assez novice dans l'écriture de services Web (REST - Jersey). Je produis application/xmldepuis que c'est ce qui apparaît dans la plupart des tutoriels / exemples de code que j'utilise pour apprendre, mais j'ai récemment découvert text/xmlet je me demandais ce qui est différent et quand le feriez-vous application/xml?

Mike
la source
Comme indiqué dans la réponse de DaveV et dans l'en-tête à tools.ietf.org/html/rfc3023 , la RFC 3023 (citée par la réponse d'Oded, actuellement acceptée) est obsolète. La nouvelle RFC 7303 donne en fait une réponse sensiblement différente à la RFC 3023. Je pense qu'il serait donc utile aux futurs lecteurs que vous acceptiez la réponse de DaveV, afin que les informations les plus à jour soient conservées en haut de la liste des réponses.
Mark Amery
D'après Dave V ci-dessous et Marián Černý, il semble que l'application / xml soit préférée maintenant si vous faisiez quelque chose de nouveau.
Sql Surfer
text/est destiné aux humains. application/est destiné aux ordinateurs
Ian Boyd

Réponses:

108

C'est une vieille question, mais qui est fréquemment visitée et des recommandations claires sont maintenant disponibles à partir de la RFC 7303 qui rend la RFC3023 obsolète. En bref (section 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".
DaveV
la source
6
Le paragraphe cité mentionne les informations d'enregistrement IANA, qui (en vérifiant la section 9.1) traitent également du codage, il ne devrait donc plus y avoir de différences dans la gestion des jeux de caractères entre application/xmlet text/xml. De plus, je considère que cette partie de l'abrégé: "Cette spécification standardise ... application / xml ... tout en définissant text / xml ... comme alias ..." signifie cela application/xmlet text/xmlest équivalente et il n'y a aucune préférence de l'un sur l'autre.
Marián Černý
427

De la RFC ( 3023 ), sous la section 3, Types de supports XML:

Si un document XML - c'est-à-dire le document XML source non traité - est lisible par des utilisateurs occasionnels, text / xml est préférable à application / xml. Les agents utilisateurs MIME (et les agents utilisateurs Web) qui ne prennent pas explicitement en charge text / xml le traiteront comme text / plain, par exemple, en affichant l'entité XML MIME comme texte brut. Application / xml est préférable lorsque l'entité XML MIME est illisible par les utilisateurs occasionnels.

(c'est moi qui souligne)

Oded
la source
6
@drachenstern - Je pense que les éléments et attributs non descriptifs sont plus susceptibles ( <a1 d="" g="">, par exemple, comme illisibles par les utilisateurs occasionnels ).
Odé le
3
@Mike Bien sûr. Certains fichiers XML sont essentiellement une liste d'enregistrements, comme ceci: msdn.microsoft.com/en-us/library/ms762271%28v=vs.85%29.aspx Ceci est plus susceptible d'être lu et traité par une application. D'autres sont essentiellement du texte avec du balisage, comme une page HTML. L'utilisation de text / xml pour eux semble plus appropriée.
biziclop
5
Veuillez donner un exemple de texte illisible vs lisible. Nous utilisons des fichiers qui sont principalement lisibles mais qui ont des nœuds encodés en base64, etc.
Joe Phillips
5
@JoePhilllips - Voilà. base64 n'est pas lisible par l'homme. Si l'intégralité du document peut être lu et avoir un sens pour un être humain sans outils ou sans regarder un manuel (que xgsfsignifie cette balise?), Alors il est lisible.
Oded
8
@CommaToast Un serveur Web peut renvoyer du XML formaté et en retrait si "text / xml" est Accept, tandis que application / xml peut renvoyer tous les espaces insignifiants supprimés. Dans ASP.NET MVC par exemple, vous pouvez spécifier différents gestionnaires pour différents types MIME.
Novaterata
33

Selon cet article, l' application / xml est préférée.


ÉDITER

J'ai fait un petit suivi sur l'article.

L'auteur affirme que l'encodage déclaré dans les instructions de traitement XML, comme:

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

peut être ignoré lorsque text/xmlle type de support est utilisé.

Ils soutiennent la thèse avec la définition de la text/*spécification de la famille de type MIME dans la RFC 2046 , en particulier le fragment suivant:

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.

Selon eux, de telles difficultés peuvent être évitées lors de l'utilisation du application/xmltype MIME. Que ce soit vrai ou non, je n'irais pas jusqu'à éviter text/xml. À mon humble avis, il est préférable de simplement suivre la sémantique de la lisibilité humaine (non-lisibilité) et n'oubliez pas de spécifier le jeu de caractères.

hardywang
la source
1
+1 pour le lien. Dans vos propres mots, quelle est la conclusion de base à laquelle est parvenu l'article? Peut-être que "l'article indique que l'encodage des fichiers est ignoré, ce qui signifie que vous ne pouvez pas envoyer de données utf-8 et binaires dans un fichier avec un en-tête text / xml" est-ce également vérifié?
Shanimal
Je suis d'accord avec @Shanimal, la réponse devrait inclure l'essentiel de l'article car le lien peut ne pas durer éternellement. Sa disparition rendra la réponse à peu près inutile. Quelqu'un pourrait-il confirmer la déclaration concernant l'ignorance des instructions de traitement XML concernant l'encodage?
toniedzwiedz
1
Selon l'auteur original, cela a été corrigé dans les 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.
versions
Si je charge un fichier XML avec ajax c'est un "document" de type application/xmlmais si j'utilise un élément de formulaire d'entrée c'est un "fichier" de type text/xmlqui ne se traite pas correctement avec mon code. Comment puis-je le convertir dans l'autre format?
Devil's Advocate
5

application/xmlest considéré svncomme un type binaire alors que text/xmlcomme un fichier texte pour lequel un diff peut être affiché.

Michał Kawiecki
la source