Qual è la differenza tra text / xml vs application / xml per la risposta al servizio web


495

Questa è più una domanda generale sulla differenza tra text/xmle application/xml. Sono abbastanza nuovo a scrivere servizi web (REST - Jersey). Ho prodotto application/xmldal momento che è quello che appare nella maggior parte dei tutorial / esempi di codice che ho usato per imparare, ma di recente ho scoperto text/xmle mi chiedevo cosa c'è di diverso e quando lo useresti application/xml?


Come indicato nella risposta di DaveV e nell'intestazione di tools.ietf.org/html/rfc3023 , RFC 3023 (citato dalla risposta di Oded, attualmente accettata) è obsoleto. La più recente RFC 7303 in realtà fornisce una risposta significativamente diversa a questa domanda rispetto alla RFC 3023. Penso che sarebbe quindi utile per i futuri lettori se accettassi la risposta di DaveV, in modo che le informazioni più aggiornate siano mantenute in cima all'elenco delle risposte.
Mark Amery, il

Basato su Dave V di seguito e Marián Černý sembra che application / xml sia preferito ora se stavi facendo qualcosa di nuovo.
Sql Surfer,

text/è pensato per l'uomo. application/è pensato per computer
Ian Boyd,

Risposte:


108

Questa è una vecchia domanda, ma che viene frequentemente visitata e sono ora disponibili chiare raccomandazioni da RFC 7303 che oscura RFC3023. In breve (sezione 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
Il paragrafo citato menziona le informazioni di registrazione IANA, che (controllando la Sezione 9.1) si occupa anche della codifica, quindi non dovrebbero esserci più differenze nella gestione dei set di caratteri tra application/xmle text/xml. Inoltre, ritengo che questa parte del abstract: "Questa specifica standardizza ... application / xml ... mentre la definizione di text / xml ... come alias ..." per significare che application/xmle text/xmlsono equivalenti e non v'è alcuna preferenza l'uno sull'altro.
Marián Černý,

427

Dall'RFC ( 3023 ), nella sezione 3, Tipi di media XML:

Se un documento XML, ovvero il documento XML di origine non elaborato, è leggibile da utenti occasionali, è preferibile text / xml a application / xml. Gli user agent MIME (e gli user agent web) che non hanno un supporto esplicito per text / xml lo tratteranno come text / plain, ad esempio, visualizzando l'entità XML MIME come testo semplice. Application / xml è preferibile quando l'entità XML MIME è illeggibile da utenti occasionali.

(enfatizzare il mio)


6
@drachenstern - Penso che elementi e descrizioni non descrittivi siano più probabili ( <a1 d="" g="">ad esempio come illeggibili dagli utenti occasionali ).
Oded,

3
@Mike Certo. Alcuni file XML sono sostanzialmente un elenco di record, come questo: msdn.microsoft.com/en-us/library/ms762271%28v=vs.85%29.aspx È più probabile che questo venga letto ed elaborato da un'applicazione. Altri sono fondamentalmente testo con markup, come una pagina HTML. L'uso di text / xml per loro sembra più appropriato.
biziclop,

5
Fornisci un esempio di illeggibile o leggibile. Utilizziamo file che sono per lo più leggibili ma hanno nodi codificati in base64, ecc.
Joe Phillips,

5
@JoePhilllips - Ecco qua. base64 non è leggibile dall'uomo. Se l'intero documento può essere letto e ha senso per un essere umano senza strumenti o guardando un manuale (che cosa xgsfsignifica quel tag?), Allora è leggibile.
Oded,

8
@CommaToast Un server Web potrebbe restituire XML formattato e rientrato se "text / xml" è Accetta, mentre application / xml potrebbe restituire tutti gli spazi vuoti insignificanti rimossi. In ASP.NET MVC, ad esempio, è possibile specificare gestori diversi per mimetipi diversi.
Novaterata,

33

Secondo questo articolo si preferisce application / xml.


MODIFICARE

Ho fatto un piccolo seguito sull'articolo.

L'autore afferma che la codifica dichiarata nelle istruzioni di elaborazione XML, come:

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

può essere ignorato quando text/xmlsi utilizza il tipo di supporto.

Supportano la tesi con la definizione delle text/*specifiche della famiglia di tipi MIME in RFC 2046 , in particolare il seguente frammento:

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.

Secondo loro, tali difficoltà possono essere evitate quando si utilizza il application/xmltipo MIME. Che sia vero o no, non vorrei andare fino in fondo per evitare text/xml. IMHO, è meglio seguire la semantica della leggibilità umana (non leggibilità) e ricordarsi sempre di specificare il set di caratteri.


1
+1 per il collegamento. In parole tue, qual è la conclusione di base raggiunta nell'articolo? Forse "l'articolo afferma che la codifica dei file viene ignorata, il che significa che non è possibile inviare utf-8 e dati binari in un file con un'intestazione text / xml" anche questo è verificato?
Shanimal,

Sono d'accordo con @Shanimal, la risposta dovrebbe includere l'essenza dell'articolo in quanto il link potrebbe non durare per sempre. La sua scomparsa renderà la risposta praticamente inutile. Qualcuno potrebbe confermare l'affermazione sull'ignorare le istruzioni di elaborazione XML relative alla codifica?
toniedzwiedz,

1
Secondo l'autore originale, questo è stato corretto nei successivi giri delle specificheUpdate: 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

Se carico un file XML con ajax è un "documento" di tipo application/xmlma se utilizzo un elemento del modulo di input è un "file" di tipo text/xmlche non viene elaborato correttamente con il mio codice. Come posso convertirlo nell'altro formato?
Devil's Advocate,

5

application/xmlè visto svncome tipo binario mentre text/xmlcome file di testo per il quale è possibile visualizzare un diff.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.