XML声明节点是强制性的吗?
我与我的一位同事讨论了XML声明节点(我正在讨论这个=> <?xml version="1.0" encoding="UTF-8"?>
)。
我相信对于被称为“有效的XML”的东西,它需要一个XML声明节点。
我的同事指出XML声明节点是可选的,因为默认编码是UTF-8,版本始终为1.0
。 这是有道理的,但标准说了什么?
总之,给出以下文件:
<books>
<book id="1"><title>Title</title></book>
</book>
我们可以这样说:
非常感谢你。
这个:
<?xml version="1.0" encoding="UTF-8"?>
不是一个处理指令 - 它是XML声明。 其目的是在开始阅读文档的其余部分之前正确配置XML解析器。
它看起来像一个处理指令,但与实际处理指令不同,它不会成为解析器创建的DOM的一部分。
对于“有效的”XML来说不是必需的。 “有效”意味着“代表一个明确定义的文档类型,如DTD或模式中所述”。 没有模式或DTD,“有效”这个词就没有意义。
当许多人真正的意思是“格式良好”时,就会误用“有效”。 一个格式良好的XML文档是一种服从XML基本语法规则的文档。
由于version
和encoding
都有默认值(分别为1.0
和UTF-8
/ UTF-16
),所以文档格式良好也不需要XML声明。 如果文件中存在Unicode BOM(字节顺序标记),则确定编码。 如果没有BOM并且没有XML声明,则假定UTF-8。
这里是关于如何在XML文件中编码声明和检测的规范线程。 默认编码(UTF-8)在XML声明中的默认方式是什么?
对你的问题:
没有DTD或架构就无法回答这个问题。 尽管如此,它是完美的。
节点是与文档的内存表示(DOM)相关的概念。 这段代码可以被解析为一个节点,因为它是格式良好的。
见#1。
您在这里混淆了一些XML概念(不用担心,这种混淆是常见的,部分原因是这些概念重叠,名称经常被误用)。
根据2008年11月26日的W3C推荐标准XML(可扩展标记语言)1.0(第五版),部分:http://www.w3.org/TR/2008/REC-xml-20081126/#sec-prolog-dtd
没有xml声明,它是无效的(即使它是格式良好的,完整的)。
该规范指出:
定义:XML文档应该以一个XML声明开始,该声明指定了正在使用的XML版本。
而且为了使文件有效,它应该有与之相关的文件类型声明。 您在这里展示的片段似乎是一个良好的节点,但绝不是有效的文档。
链接地址: http://www.djcxy.com/p/29829.html