Pergunta

Achei que deveria enviar "text/xml", mas depois li que deveria enviar "application/xml".Isso importa?Alguém pode explicar a diferença?

Foi útil?

Solução

O diferença entre texto/xml e aplicativo/xml é a codificação de caracteres padrão se o conjunto de caracteres parâmetro é omitido:

Text/xml e application/xml se comportam de forma diferente quando o charset parâmetro não é especificado explicitamente.Se o charset padrão (ou seja, US-ASCII) para texto/xml é inconveniente por algum motivo (por exemplo, web ruim servidores), application/xml fornece uma alternativa (consulte "Opcional parâmetros" do registro application/xml na Seção 3.2).

Para texto/xml:

Em conformidade com [RFC2046], se uma entidade text/xml for recebida com o parâmetro charset omitido, processadores MIME e processadores XML DEVE usar o valor de charset padrão de "us-ascii"[ASCII].Em casos onde a entidade MIME XML é transmitida via HTTP, o padrão O valor do charset ainda é "US-ASCII".

Para aplicativo/xml:

Se uma entidade application/xml for recebida onde o charset parâmetro é omitido, nenhuma informação está sendo fornecida sobre o charset pelo cabeçalho MIME Content-Type.Conformando XML processadores DEVEM seguir os requisitos da seção 4.3.3 de [XML] que tratam diretamente dessa contingência.No entanto, os processadores MIME que não são processadores XML NÃO DEVEM assumir um conjunto de caracteres padrão se O parâmetro charset é omitido de uma entidade application/xml.

Então se o conjunto de caracteres parâmetro for omitido, a codificação de caracteres de texto/xml é US-ASCII enquanto com aplicativo/xml a codificação de caracteres pode ser especificada no próprio documento.

Agora, uma regra prática na internet é:"Seja rigoroso com a saída, mas seja tolerante com a entrada." Isso significa certificar-se de atender aos padrões o máximo possível ao fornecer dados pela internet.Mas crie alguns mecanismos para ignorar falhas ou adivinhar ao receber e interpretar dados pela Internet.

Então no seu caso basta escolher um dos dois tipos (recomendo aplicativo/xml) e certifique-se de especificar a codificação de caracteres usada corretamente (recomendo usar a respectiva codificação de caracteres padrão para jogar pelo seguro, portanto, no caso de aplicativo/xml use UTF-8 ou UTF-16).

Outras dicas

Como regra geral, a aposta mais segura para tornar seu documento ser tratada corretamente por todos os servidores da Web, proxies e navegadores de clientes, é provavelmente o seguinte:

    .
  1. Use o tipo de conteúdo do aplicativo / XML
  2. Inclua uma codificação de caracteres no tipo de conteúdo, provavelmente utf-8
  3. Inclua uma codificação de caractere correspondente no atributo de codificação do próprio documento XML.
  4. em termos do RFC 3023 Spec, que alguns navegadores não são implementados corretamente, o diferença nos tipos de conteúdo é em como os clientes devem tratar a codificação de caracteres, como segue:

    para aplicação / xml, aplicação / xml-dtd, aplicação / xml-entidade externa-analisada ou qualquer um dos subtipos de aplicação / XML, como aplicativo / Átomo + XML, Aplicativo / RSS + XML ou Aplicativo / RDF + XML, a codificação de caractere é determinada nesta ordem:

      .
    1. a codificação dada no parâmetro charset do cabeçalho HTTP do tipo de conteúdo
    2. a codificação indicada no atributo de codificação da Declaração XML dentro do documento,
    3. utf-8.
    4. para texto / XML, texto / xml-entidade externa-parsed, ou um subtipo como texto / foo + xml, o atributo de codificação da declaração XML dentro do documento é ignorado, e a codificação do caractere é:

        .
      1. a codificação fornecida no parâmetro charset do cabeçalho HTTP do tipo de conteúdo ou
      2. US-ASCII.
      3. A maioria dos analisadores não implementa a especificação; Eles ignoram o tipo de contexto HTTP e apenas usam a codificação no documento. Com tantos documentos mal formados lá fora, é improvável que mude em breve.

ambos estão bem.

Texto / XXX significa que, caso o programa não entenda xxx, faz sentido mostrar o arquivo para o usuário como texto simples.Aplicação / XXX significa que é inútil mostrá-lo.

Por favor, note que esses tipos de conteúdo foram originalmente definidos para anexo de e-mail antes de serem mais tarde usados no Web World.

texto / XML é para documentos que seriam significativos para um ser humano se apresentado como texto sem processamento adicional, o aplicativo / XML é para tudo o mais

.

Toda entidade XML é adequada para uso com a mídia de aplicativo / XML Digite sem modificação. Mas isso não explora o fato de que XML pode ser tratado como texto simples em muitos casos. MIME Agentes do usuário (e agentes do usuário da Web) que não têm suporte explícito para Aplicativo / XML irá tratá-lo como aplicação / octeto-stream, para Exemplo, oferecendo para salvá-lo em um arquivo.

Para indicar que uma entidade XML deve ser tratada como texto simples por padrão, use o tipo de mídia de texto / XML. Isso restringe a codificação usado na entidade XML para aqueles que são compatíveis com o Requisitos para tipos de mídia de texto conforme descrito em [RFC-2045] e [RFC-2046], por exemplo, UTF-8, mas não UTF-16 (exceto para HTTP).

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

Outras respostas aqui abordam a questão geral de qual é a solução adequada Content-Type para uma resposta XML é, e concluir (como acontece com Qual é a diferença entre text/xml vs application/xml para resposta de webservice) que ambos text/xml e application/xml são permitidos.No entanto, nenhum aborda se existem regras específicas para mapas de sites.

Responder:não há.A especificação do mapa do site é https://www.sitemaps.org, e usando o Google site: pesquisas você pode confirmar que não contém as palavras ou frases mímica, tipo MIME, tipo de conteúdo, aplicativo/xml, ou texto/xml em qualquer lugar.Por outras palavras, é totalmente silencioso sobre o tema do que Content-Type deve ser usado para veicular mapas de sites.

Na ausência de qualquer comentário nas especificações do mapa do site abordando diretamente esta questão, podemos assumir com segurança que as mesmas regras se aplicam à escolha do Content-Type de qualquer outro documento XML - ou seja,que pode ser qualquer um text/xml ou application/xml.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top