通过使用模式,是否有任何简单/容易的方法来验证 xml 消息的编码?
假设 xml 的第一行“不”可信? 例如忽略 ?xml version="1.0"encoding="UTF-8"?
最佳答案
不,除了二进制数据元素类型之外,模式不能规定编码类型,但这种编码仍将被文档本身的高级编码封装。如果您意识到模式应该描述信息而不是传输格式,那么这是有道理的。 XML 规范规定了文档传输信息,例如在最一般意义上如何表示和存储信息。模式用于验证通过 XML 存储的数据是否满足各方之间的某种语法限制。 XML 规范中定义的序言(您提到的第一行)是存在(或不存在)的实体,投诉 XML 读者需要了解文档的编码方式。编码只是端点之间的协议(protocol),以表示正确的 unicode 代码点,而 XML 规范指定如何达成此协议(protocol),而不是模式。
如果您有兴趣,这是 XML 1.1 规范中有关如何达成此协议(protocol)的相关部分,更有趣的是投诉读者如何“猜测”编码,因此足以猜测序言可以读取实际编码属性:http://www.w3.org/TR/xml11/#sec-guessing
关于xml - xsd 模式可以验证编码吗? UTF-8,可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4412343/