【问题标题】:Is the XML declaration tag case sensitive?XML 声明标签是否区分大小写?
【发布时间】:2010-10-29 14:57:06
【问题描述】:

我有一个可能非常简单、深奥的问题,但我无法在任何地方找到答案,我需要对此非常确定。

我有来自不同供应商的各种 XML 文件。供应商之一为我提供了一个 XML 文件,其中包含日文字符。最初,我在处理 XML 文件时遇到了问题(我使用的是MSXML SDK)。字符会出现错误。我发现如果将以下内容添加到 XML 文件中,一切都会很好。

<?xml version="1.0" encoding="UTF-16"?>

所以我要求供应商将此添加到他们的文件中。但是他们用小写的编码添加了它:

<?xml version="1.0" encoding="utf-16"?>

当我使用这个声明加载这个新文件时,我遇到了与没有这个声明时相同的问题。

我想要弄清楚(肯定)是该编码属性是否区分大小写(或者是其他问题)。 他们将“utf-16”与“UTF-16”放在一起重要吗?

更新:在这些发布答案的人的建议下,我设置并执行了测试。一个文件为小写 utf-16,另一个为大写。除此之外,文件是相同的。 这并没有解决问题,也不是问题所在。我的结论是,MSXML 不像规范那样区分大小写,并在答案中声明。

【问题讨论】:

  • 显然,如果问题在一个版本而不是另一个版本中消失,那么它确实很重要......

标签: xml encoding utf-16


【解决方案1】:

我想问题不是真的“标准区分大小写吗?”但是“MSXML SDK中的编码是否区分大小写?”

来自bytes.com

XML 规范说处理器“应该”匹配编码名称 不区分大小写。 “应该”是一个技术术语,强度低于 “必须”,但我看不出处理器不这样做的任何原因。

但是,我们知道这在实践中可能并不总是正确的。如果您可以同时尝试两者,请这样做并告诉我们结果如何。

【讨论】:

  • 我可以而且愿意。设置它只需要相当多的努力。我希望有人对 MSXML 有详细的了解......
【解决方案2】:

来自XML specs

XML processors SHOULD match character encoding names in a case-insensitive way

所以它不是必需的,但建议不区分大小写,根据RFC 2119

  1. 应该这个词,或形容词“推荐”,意味着 可能存在正当理由 特殊情况忽略a
    特定的项目,但完整的 含义必须被理解和
    在选择之前仔细权衡 不同的课程。

【讨论】:

  • 虽然您和 JoshJordan 的答案大致相同,但我将给出“答案”给他,因为他指出这在实践中可能不是真的,我们应该尝试一下——旁边。但是,我确实适合你留下一个适当的答案,我会为此 +1。再次感谢您。
猜你喜欢
  • 2018-09-07
  • 2011-11-16
  • 2015-08-24
  • 2021-09-21
  • 2021-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多