我应该为我的XML站点地图发送类型值?

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


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

当charset参数未明确指定时,Text / xml和application / xml的行为会有所不同。 如果text / xml的默认字符集(例如US-ASCII)由于某种原因(例如,糟糕的Web服务器)不方便,application / 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处理器不应该假定默认字符集。

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

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

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


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

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

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

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

  • 在Content-Type HTTP头的charset参数中给出的编码,或者
  • US-ASCII。
  • 大多数解析器不执行规范; 他们忽略了HTTP Context-Type,并在文档中使用编码。 有那么多不合格的文件,这不太可能很快改变。


    两者都很好。

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

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

    链接地址: http://www.djcxy.com/p/45477.html

    上一篇: Type value should I send for my XML sitemap?

    下一篇: Parsing CSV files in C#, with header