2011-01-28 17 views
342

Esto es más una pregunta general sobre la diferencia entre text/xml y application/xml. Soy bastante nuevo en la redacción de servicios web (REST - Jersey). He estado produciendo application/xml ya que es lo que aparece en la mayoría de los tutoriales/ejemplos de código que he estado usando para aprender, pero recientemente descubrí text/xml y me preguntaba qué es diferente y cuándo lo usaría más de application/xml?Cuál es la diferencia entre texto/xml vs application/xml para la respuesta del servicio web

Respuesta

316

Desde el RFC (3023), en la sección 3, XML tipos de medios:

Si un documento XML - es decir, el documento XML sin procesar, fuente - es legible los usuarios casuales , texto/xml es preferible a application/xml. Los agentes de usuario MIME (y los agentes de usuario web) que no tienen tienen soporte explícito para text/xml lo tratarán como texto/normal, para el ejemplo , mostrando la entidad XML MIME como texto sin formato. Application/xml es preferible cuando la entidad XML MIME es ilegible por usuarios ocasionales.

(énfasis mío)

+1

Entonces, al leer la parte que citó, tenga en cuenta el aspecto que tiene un XML no humano, ya que XML es prácticamente texto. Supongo que si incluyó datos codificados en binary o base64 ... – jcolebrand

+5

@drachenstern - Creo que los elementos y atributos no descriptivos son más probables ('', por ejemplo, ilegibles para los usuarios de _casual_). – Oded

+132

Supongo que por "humano" quieren decir "nerd de la computadora". :) – biziclop

29

Según this article application/xml se prefiere.


EDITAR

Hice un poco de seguimiento sobre el artículo.

El autor afirma que la codificación declarada en instrucciones de procesamiento XML, como:

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

puede ser ignorado cuando se utiliza el tipo text/xml medios de comunicación.

que apoyan la tesis con la definición de especificación del tipo de familia text/* MIME en RFC 2046, específicamente el siguiente fragmento:

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. 

Según ellos, tales dificultades pueden evitarse utilizando las application/xml tipo MIME. Si es verdad o no, no iría tan lejos como para evitar text/xml. En mi humilde opinión, lo mejor es seguir la semántica de la legibilidad humana (no legibilidad) y siempre recordar especificar el juego de caracteres.

+1

+1 para el enlace. En sus propias palabras, ¿cuál es la conclusión básica alcanzada en el artículo? Tal vez "el artículo indica que la codificación de archivo se ignora, lo que significa que no puede enviar datos utf-8 y binarios en un archivo con un encabezado de texto/xml", ¿también se verifica esto? – Shanimal

+0

Estoy de acuerdo con @Shanimal, la respuesta debe incluir la esencia del artículo, ya que el enlace puede no durar para siempre. Su desaparición hará que la respuesta sea bastante inútil. ¿Alguien podría confirmar la afirmación de ignorar las instrucciones de procesamiento de XML con respecto a la codificación? – toniedzwiedz

+0

Según el autor original, esto se ha corregido en las posteriores actualizaciones de las especificaciones 'Actualización: la situación ha cambiado en el nuevo HTTP/1.1 RFC: Se ha eliminado el juego de caracteres predeterminado de ISO-8859-1 para tipos de medios de texto; el valor predeterminado es ahora lo que dice la definición de tipo de medio. – TheNorthWes

48

Esta es una vieja pregunta, pero una que se visita con frecuencia y recomendaciones claras están ahora disponibles en RFC7303 que obsoleta RFC3023. En pocas palabras (sección 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". 
3

application/xml es visto por svn como binario tipo mientras que text/xml como texto archivo para el que se puede visualizar un diff.

Cuestiones relacionadas