我应该为XML站点地图发送什么内容类型值?

时间:2010-07-17 17:28:05

标签: xml mime-types sitemap xml-sitemap

我以为我应该发送“text / xml”,但后来我读到我应该发送“application / xml”。有关系吗?有人可以解释这个区别吗?

5 个答案:

答案 0 :(得分:151)

如果省略 charset 参数,则difference between text/xml and application/xml是默认字符编码:

  

text / xml和application / xml在charset时表现不同   未明确指定参数。如果是默认字符集(即   用于text / xml的US-ASCII)由于某些原因(例如,糟糕的网络)是不方便的   application / xml提供了另一种选择(参见“可选   参数“在3.2节中的application / xml注册。”

text/xml

  

符合[RFC2046],如果接收到text / xml实体   省略了charset参数,MIME处理器和XML处理器   必须使用“us-ascii”[ASCII]的默认字符集值。在案件   XML MIME实体通过HTTP传输的默认设置   charset值仍然是“us-ascii”。

application/xml

  

如果收到了一个application / xml实体的字符集   参数被省略,没有提供有关的信息   MIME Con​​tent-Type标头的charset。符合XML   处理器必须遵循[XML] 4.3.3节的要求   直接解决这种意外情况。但是,MIME处理器   那些不是XML处理器的人不应该假设一个默认的字符集   application / xml实体中省略了charset参数。

因此,如果省略 charset 参数,则 text / xml 的字符编码为US-ASCII,而 application / xml 则为字符编码编码可以在文档中指定。

现在互联网上的一条经验法则是:“严格控制输出,但要容忍输入。”这意味着确保在通过互联网传输数据时尽可能满足标准。但建立一些机制来忽略错误或猜测何时通过互联网接收和解释数据。

所以在你的情况下只选择两种类型中的一种(我推荐 application / xml )并确保正确指定使用的字符编码(我建议使用相应的默认字符编码来播放安全,所以在 application / xml 的情况下使用UTF-8或UTF-16)。

答案 1 :(得分:24)

根据经验,所有Web服务器,代理和客户端浏览器都能正确处理您的文档的最安全措施可能如下:

  1. 使用application / xml内容类型
  2. 在内容类型中包含字符编码,可能是UTF-8
  3. 在XML文档本身的编码属性中包含匹配的字符编码。
  4. 就某些浏览器无法正确实现的RFC 3023规范而言,内容类型的主要区别在于客户端应如何处理字符编码,如下所示:

    对于application / xml,application / xml-dtd,application / xml-external-parsed-entity,或者application / xml的任何一个子类型,例如application / atom + xml,application / rss + xml或application / rdf + xml,字符编码按以下顺序确定:

    1. Content-Type HTTP标头的charset参数中给出的编码
    2. 文档中XML声明的encoding属性中给出的编码
    3. UTF-8。
    4. 对于text / xml,text / xml-external-parsed-entity或text / foo + xml这样的子类型,文档中XML声明的编码属性将被忽略,字符编码为:

      1. Content-Type HTTP标头的charset参数中给出的编码,或
      2. US-ASCII。
      3. 大多数解析器都没有实现规范;他们忽略HTTP Context-Type,只使用文档中的编码。有这么多不合格的文件,这不太可能很快改变。

答案 2 :(得分:9)

两个都很好。

text / xxx表示如果程序不理解xxx,则将文件作为纯文本显示给用户是有意义的。 application / xxx意味着展示它是毫无意义的。

请注意,这些内容类型最初是为电子邮件附件定义的,之后才会在Web世界中使用。

答案 3 :(得分:6)

text / xml适用于对人类有意义的文档,如果以文本形式呈现而无需进一步处理,则application / xml适用于其他所有文档

  

每个XML实体都适合与application / xml媒体一起使用     类型无需修改。但这并没有利用这一事实     在许多情况下,XML可以被视为纯文本。 MIME用户代理     (和Web用户代理)没有明确的支持     application / xml会将其视为application / octet-stream,for     例如,提供将其保存到文件中。

     

表示应将XML实体视为纯文本     默认情况下,使用text / xml媒体类型。这限制了编码     在XML实体中使用的那些与那些兼容的     [RFC-2045]和[RFC-2045]中描述的文本媒体类型的要求     [RFC-2046],例如UTF-8,但不是UTF-16(HTTP除外)。

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

答案 4 :(得分:0)

这里的其他答案解决了XML响应正确的Content-Type是什么的一般问题,并得出结论(与What's the difference between text/xml vs application/xml for webservice response一样)text/xmlapplication/xml都是允许的。但是,没有人解决是否有特定于 sitemaps 的规则。

答案:没有。该站点地图规范为https://www.sitemaps.org,使用Google site:搜索时,您可以确认其中不包含 mime mimetype ,< em> content-type , application / xml text / xml 随处可见。换句话说,对于应该使用什么Content-Type来投放站点地图这一话题完全没有提及。

如果站点地图规范中没有任何评论可以直接解决此问题,我们可以安全地假定与选择任何其他XML文档的Content-Type时使用相同的规则-即它可以是{{ 1}}或text/xml