¿Cuál es la diferencia entre text / xml y application / xml para la respuesta del servicio web?

495

Esta es una pregunta más general sobre la diferencia entre text/xmly application/xml. Soy bastante nuevo en escribir servicios web (REST - Jersey). He estado produciendo application/xmlya que es lo que se muestra en la mayoría de los tutoriales / ejemplos de código que he estado usando para aprender, pero recientemente me enteré text/xmly me preguntaba qué hay de diferente y cuándo lo usarías application/xml.

Miguel
fuente
Como se señaló en la respuesta de DaveV, y en el encabezado de tools.ietf.org/html/rfc3023 , RFC 3023 (citado por la respuesta de Oded, actualmente aceptado) es obsoleto. El nuevo RFC 7303 en realidad da una respuesta significativamente diferente a esta pregunta que el RFC 3023. Por lo tanto, creo que sería útil para los futuros lectores si aceptaras la respuesta de DaveV, para que la información más actualizada se mantenga en la parte superior de la lista de respuestas.
Mark Amery
Según Dave V a continuación y Marián Černý, parece que la aplicación / xml se prefiere ahora si estaba haciendo algo nuevo.
Sql Surfer
text/está destinado a los humanos. application/está destinado a computadoras
Ian Boyd

Respuestas:

108

Esta es una pregunta antigua, pero una que se visita con frecuencia y ahora hay recomendaciones claras disponibles en RFC 7303, 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".
DaveV
fuente
66
El párrafo citado menciona la información de registro de la IANA, que (verificando la Sección 9.1) también se ocupa de la codificación, por lo que no debería haber más diferencias en el manejo del juego de caracteres entre application/xmly text/xml. Además, considero que esta parte del resumen: "Esta especificación estandariza ... aplicación / xml ... mientras define texto / xml ... como alias ..." para significar eso application/xmly text/xmlson equivalentes y no hay preferencia de uno sobre el otro.
Marián Černý
427

Del RFC ( 3023 ), en la sección 3, Tipos de medios XML:

Si un documento XML, es decir, el documento XML de origen no procesado, puede ser leído por usuarios ocasionales, el texto / xml es preferible a la aplicación / xml. Los agentes de usuario MIME (y los agentes de usuario web) que no tienen soporte explícito para text / xml lo tratarán como texto / sin formato, por ejemplo, al mostrar la entidad XML MIME como texto sin formato. La aplicación / xml es preferible cuando los usuarios ocasionales no pueden leer la entidad XML MIME .

(énfasis mío)

Oded
fuente
66
@drachenstern: creo que los elementos y atributos no descriptivos son más probables ( <a1 d="" g="">por ejemplo, como ilegibles para usuarios ocasionales ).
Oded
3
@ Mike Por supuesto. Algunos archivos XML son básicamente una lista de registros, como este: msdn.microsoft.com/en-us/library/ms762271%28v=vs.85%29.aspx Esto es más probable que sea leído y procesado por una aplicación. Otros son básicamente texto con marcado, como una página HTML. Usar text / xml para ellos suena más apropiado.
biziclop
55
Por favor, da un ejemplo de ilegible vs legible. Utilizamos archivos que son en su mayoría legibles pero que tienen nodos codificados en base64, etc.
Joe Phillips
55
@JoePhilllips - Ahí tienes. base64 no es legible por humanos. Si todo el documento puede leerse y tener sentido para un humano sin herramientas o mirando un manual (¿qué xgsfsignifica esa etiqueta?), Entonces es legible.
Oded
8
@CommaToast Un servidor web puede devolver XML formateado y sangrado si "text / xml" es el Accept, mientras que application / xml puede devolver todos los espacios en blanco insignificantes eliminados. En ASP.NET MVC, por ejemplo, puede especificar diferentes controladores para diferentes tipos de mime.
Novaterata
33

De acuerdo con este artículo , se prefiere la aplicación / xml.


EDITAR

Hice un pequeño seguimiento del artículo.

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

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

se puede ignorar cuando text/xmlse usa el tipo de medio.

Apoyan la tesis con la definición de la text/*especificación de la familia de tipos 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 se pueden evitar al usar el application/xmltipo MIME. Si es verdad o no, no iría tan lejos como para evitarlo text/xml. En mi humilde opinión, es mejor seguir la semántica de la legibilidad humana (no legibilidad) y recordar siempre especificar el juego de caracteres.

hardywang
fuente
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 establece que se ignora la codificación de archivos, lo que significa que no puede enviar datos binarios y utf-8 en un archivo con un encabezado de texto / xml" ¿también se verifica esto?
Shanimal
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 declaración sobre ignorar las instrucciones de procesamiento XML relativas a la codificación?
toniedzwiedz
1
Según el autor original, esto se ha solucionado en 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.
revisiones
Si cargo un archivo XML con ajax, es un "documento" de tipo, application/xmlpero si uso un elemento de formulario de entrada, es un "archivo" de tipo text/xmlque no se procesa correctamente con mi código. ¿Cómo puedo convertirlo a otro formato?
Abogado del Diablo
5

application/xmlse ve svncomo un tipo binario, mientras que text/xmlcomo un archivo de texto para el que se puede mostrar una diferencia.

Michał Kawiecki
fuente