2011-01-28 13 views
342

Questa è una domanda più generale sulla differenza tra text/xml e application/xml. Sono abbastanza nuovo nello scrivere webservices (REST - Jersey). Ho prodotto application/xml poiché è ciò che viene visualizzato nella maggior parte degli esempi di tutorial/codice che ho utilizzato per imparare, ma recentemente ho scoperto circa text/xml e mi chiedevo cosa c'è di diverso e quando lo useresti su application/xml?Qual è la differenza tra testo/xml vs application/xml per la risposta del servizio web

risposta

316

Dal RFC (3023), ai sensi dell'articolo 3, XML Tipi di supporto:

Se un documento XML - che è, il non trasformati, fonte documento XML - è leggibile dagli utenti occasionali , text/xml è preferibile a application/xml. Gli agenti utente MIME (e gli agenti utente Web) che non hanno il supporto esplicito per text/xml lo considerano text/xml, per esempio , visualizzando l'entità XML MIME come testo normale. L'applicazione/xml è preferibile quando l'entità XML MIME è illeggibile da utenti occasionali.

(enfasi mia)

+1

Quindi, leggendo la parte che hai citato, calcola che aspetto abbia un XML non leggibile, dal momento che XML è praticamente un testo. Suppongo che abbiate incorporato dati codificati in binario o base64 ... – jcolebrand

+5

@drachenstern - Penso che elementi e attributi non descrittivi siano più probabili ('', ad esempio illeggibile dagli utenti _casual_). – Oded

+132

Immagino che per "umano" intendano "nerd informatico". :) – biziclop

29

Secondo this article application/xml è preferito.


EDIT

ho fatto un po 'di follow-up su questo articolo.

L'autore sostiene che la codifica dichiarata in istruzioni di elaborazione XML, come:

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

può essere ignorato quando si utilizza il tipo text/xml supporto.

Essi sostengono la tesi con la definizione di specifica del tipo di famiglia text/* 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 utilizzando application/xml tipo MIME. Se sia vero o no, non andrei così lontano da 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. Con 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 puoi inviare dati utf-8 e binari in un file con un'intestazione text/xml" inoltre è verificato? – Shanimal

+0

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

+0

Secondo l'autore originale, questo è stato corretto nei successivi revs delle specifiche. Aggiornamento: la situazione è cambiata nel nuovo RFC HTTP/1.1: il set di caratteri predefinito di ISO-8859-1 per i tipi di supporto di testo è stato rimosso; il default è ora qualunque sia la definizione del tipo di supporto. – TheNorthWes

48

Questa è una vecchia domanda, ma che viene visitata di frequente e sono ora disponibili raccomandazioni chiare da RFC7303 quali obsolete RFC3023. In un (sezione 9.2) poche parole:

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". 
3

application/xml è visto da svn come binario tipo mentre text/xml come testo file per il quale può essere visualizzato un diff.

Problemi correlati