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

我以为我应该发送“文本/ XML”,但后来我读到,我应该发送“应用程序/ XML”。 有关系吗? 有人可以解释这个区别吗?

如果省略charset参数,则text / xmlapplication / xml之间的区别是缺省字符编码:

当charset参数未明确指定时,Text / xml和application / xml的行为将有所不同。 如果text / xml的默认字符集(例如US-ASCII)由于某种原因(例如,糟糕的Web服务器)不方便,应用程序/ xml提供了一个替代方法(请参阅3.2节中的application / xml注册的“可选参数”)。

对于text / xml

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

对于application / xml

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

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

现在互联网上的一个经验法则是:“严格要求输出,但要容忍input。”这意味着当通过互联网传输数据时,要尽可能地符合标准。 但是build立一些机制来忽略错误,或者在互联网上接收和解释数据时进行猜测。

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

作为一个经验法则,所有Web服务器,代理和客户端浏览器都要正确处理您的文档,这可能是以下几点:

  1. 使用application / xml内容types
  2. 在内容types中包含字符编码,可能是UTF-8
  3. 在XML文档的编码属性中包含匹配的字符编码。

根据RFC 3023规范(某些浏览器未能正确实现),内容types的主要区别在于客户端如何处理字符编码,如下所示:

对于application / xml,application / xml-dtd,application / xml-external-parsed-entity或任何application / xml的子types,如application / atom + xml,application / rss + xml或application / rdf + xml ,字符编码按此顺序确定:

  1. 在Content-Type HTTP报头的字符集参数中给出的编码
  2. 在文档中的XML声明的编码属性中给出的编码,
  3. UTF-8。

对于text / xml,text / xml-external-parsed-entity或者像text / foo + xml这样的子types,文档中XML声明的encoding属性将被忽略,字符编码为:

  1. 在Content-Type HTTP头的charset参数中给出的编码,或者
  2. US-ASCII。

大多数parsing器不执行规范; 他们忽略HTTP上下文types,只使用文档中的编码。 有这么多不合格的文件,这不太可能改变。

都很好。

文本/ xxx意味着如果程序不理解xxx,则将文件以纯文本forms显示给用户是有意义的。 应用程序/ xxx意味着显示它是毫无意义的。

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

text / xml用于文档,对于人类来说是有意义的,如果不经过进一步处理就以文本forms呈现,application / xml适用于其他任何

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

为了指示默认情况下应该将XML实体视为纯文本,请使用text / xml媒体types。 这将XML实体中使用的编码限制为与[RFC-2045]和[RFC-2046]中描述的文本媒体types的要求兼容的编码,例如UTF-8,而不是UTF-16 HTTP)。

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

Interesting Posts