2010-07-17 13 views

Respuesta

136

El difference between text/xml and application/xml es la codificación de caracteres por defecto si el parámetrojuego de caracteres se omite:

texto/xml y application/xml se comportan de manera diferente cuando no se especifica explícitamente el parámetro charset . Si el juego de caracteres predeterminado (es decir, US-ASCII) para texto/xml es inconveniente por alguna razón (por ejemplo, servidores web malos ), application/xml proporciona una alternativa (consulte "Parámetros opcionales " del registro application/xml en Section 3.2).

Por text/xml:

Conformant con [RFC2046], si una entidad de texto/xml es recibido con el parámetro charset se omite, procesadores MIME y procesadores XML debe utilizar el valor conjunto de caracteres por defecto de " us-ascii "[ASCII]. En los casos donde la entidad XML MIME se transmite a través de HTTP, el valor de conjunto de caracteres predeterminado sigue siendo "us-ascii".

Para application/xml:

Si se recibe una entidad de aplicación/xml donde se omite el parámetro charset , se está proporcionando información acerca de la charset por la cabecera MIME Content-Type. Los procesadores conforme a XML DEBEN seguir los requisitos de la sección 4.3.3 de [XML] que abordan directamente esta contingencia. Sin embargo, los procesadores MIME que no son procesadores XML NO DEBEN asumir un juego de caracteres predeterminado si el parámetro de conjunto de caracteres se ha omitido de una entidad application/xml.

lo tanto, si se omite el parámetro charset , la codificación de caracteres de texto /xml es US-ASCII, mientras que con application/xml la codificación de caracteres se puede especificar en el propio documento.

Ahora, una regla general en Internet es: "Sea estricto con la salida, pero sea tolerante con la entrada". Eso significa que debe cumplir con los estándares tanto como sea posible cuando entregue datos a través de Internet. Pero construya algunos mecanismos para pasar por alto las fallas o adivinar al recibir e interpretar datos a través de Internet.

Así, en su caso sólo debes elegir uno de los dos tipos (recomiendo application/xml) y asegúrese de especificar la codificación de caracteres se utiliza correctamente (recomiendo utilizar la respectiva codificación de caracteres por defecto ir a lo seguro, por lo que en caso de aplicación/xml use UTF-8 o UTF-16).

6

text/xml es para los documentos que serían significativas para un ser humano si se presentan como texto sin procesamiento adicional, application/xml es para todo lo demás

Cada entidad XML es adecuado para su uso con la aplicación/xml medios tipo sin modificación. Pero esto no explota el hecho de que XML se puede tratar como texto sin formato en muchos casos. Los agentes de usuario MIME (y agentes de usuario web) que no tienen soporte explícito para application/xml lo tratarán como application/octet-stream, para el ejemplo , al ofrecer guardarlo en un archivo.

Para indicar que una entidad XML debe tratarse como texto sin formato por predeterminado, utilice el tipo de medio text/xml. Esto restringe la codificación utilizada en la entidad XML a aquellas que son compatibles con los requisitos para tipos de medios de texto como se describe en [RFC-2045] y [RFC-2046], por ejemplo, UTF-8, pero no UTF-16 (a excepción de HTTP).

- http://www.ietf.org/rfc/rfc2376.txt

+0

Aún así, es curioso que el tipo HTML MIME preferido sea 'text/html' y el tipo preferido XHTML MIME es' application/xhtml + xml'. – zneak

+1

No realmente. 'text/html' ha existido por mucho tiempo, y fue un poco tarde para cambiarlo. – Quentin

9

ambos están bien.

text/xxx significa que, en caso de que el programa no comprenda xxx, tiene sentido mostrar el archivo al usuario como texto sin formato. application/xxx significa que no tiene sentido mostrarlo.

Tenga en cuenta que esos tipos de contenido se definieron originalmente para el archivo adjunto de correo electrónico antes de que se utilizaran posteriormente en el mundo web.

22

Como regla general, la apuesta más segura para hacer que su documento se va a tratar adecuadamente por todos los servidores web, servidores proxy y los exploradores de los clientes, es probablemente la siguiente:

  1. Utilice la aplicación/xml contenido de tipo
  2. Incluya una codificación de caracteres en el tipo de contenido, probablemente UTF-8
  3. Incluya una codificación de caracteres coincidente en el atributo de codificación del documento XML en sí.

En cuanto a la RFC 3023 especificación, que algunos navegadores no aplican correctamente, la principal diferencia en los tipos de contenido está en cómo se supone que los clientes para tratar la codificación de caracteres, de la siguiente manera:

Para la aplicación/xml, application/xml-dtd, application/xml-external-parrsed-entity, o cualquiera de los subtipos de application/xml como application/atom + xml, application/rss + xml o application/rdf + xml, el personaje la codificación se determina en este orden:

  1. la codificación indicada en el conjunto de caracteres er del encabezado HTTP Content-Type
  2. la codificación dada en el atributo de codificación de la declaración XML dentro del documento,
  3. utf-8.

Para text/xml, text/xml-externa--entidad analizada, o un subtipo como texto/foo + xml, el atributo de codificación de la declaración XML dentro del documento se ignora, y la codificación de caracteres es:

  1. la codificación dada en el parámetro charset de la cabecera HTTP Content-Type, o
  2. US-ASCII.

La mayoría de los analizadores no implementan la especificación; ignoran el tipo de contexto HTTP y simplemente usan la codificación en el documento. Con tantos documentos mal formados, es poco probable que cambie pronto.

Cuestiones relacionadas