XML声明节点是否强制?

我和我的同事讨论了XML声明节点(我在说这个=><?xml version =“1.0”encoding =“UTF-8”?>).

我相信对于被称为“有效XML”的东西,它需要一个XML声明节点.

我的同事指出,XML声明节点是optionnal,因为默认编码是UTF-8,版本总是为1.0.这是有道理的,但标准是什么呢?

简而言之,给出以下文件

<books>
  <book id="1"><title>Title</title></book>
</book>

我们可以说:

>它是有效的XML?
>它是一个有效的XML节点?
>它是一个有效的XML文档?

非常感谢你.

这个:
<?xml version="1.0" encoding="UTF-8"?>

不是处理指令 – 它是XML声明.其目的是在开始阅读文档的其余部分之前正确配置XML解析器.

它看起来像一个处理指令,但与实际处理指令不同,它不会是解析器创建的DOM的一部分.

“有效”XML不是必需的. “有效”表示“表示定义良好的文档类型,如DTD或模式中所述”.没有模式或DTD,单词“有效”没有意义.

当他们真正意味着“形成良好”时,许多人误用“有效”.格式良好的XML文档遵循XML的基本语法规则.

由于存在版本和编码的默认值(分别为1.0和UTF-8),所以文档没有必要的XML声明.

对你的问题:

>它是有效的XML?
如果没有DTD或模式,则无法应答.但是,它是完好的.
>它是一个有效的XML节点?
节点是与文档(DOM)的内存中表示相关的概念.这个代码片段可以被解析成一个节点,因为它是一个很好的形式.
>它是一个有效的XML文档?
见#1.

您在这里混淆了几个XML概念(不用担心,这种混淆是常见的,部分原因在于这些概念重叠,名称被误用而非常常).

>所有这些都由以组织为树的名称,值和属性组成的结构化数据开始.> XML最基本的意思是以文本形式表示这种结构化数据的语法(它是一种“标记语言”).这是当你将树序列化成一串字符时可以得到的,它可以用来将一串字符反序列化到树中.>文档通常是指代表序列化树的一串字符.它可以存储在通过网络发送或在内存中创建的文件中.>序列化和反序列化的规则是非常严格的.可以成功地将序列化成树的文档(“字符串”)据说是格式正确的.>这种树的语义(允许的元素,元素数量和顺序,命名空间,任何数量的复杂规则,真的)可以在所谓的DTD或模式中定义.如果一棵树遵循一套明确定义的语义,那么它被认为是有效的.>文档对象模型(DOM)一词是指结构化数据的标准化内存内表示.它是使用标准化方法访问此树的定义良好的API的名称.>节点是文档对象模型的基本数据结构.

相关文章

引言 NOKIA 有句著名的广告语:“科技以人为本”。任何技术都是为了满足人的生产生活需要而产生的。具体...
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. 文章...
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. 文章...
http://blog.jobbole.com/79252/ 引言 NOKIA 有句著名的广告语:“科技以人为本”。任何技术都是为了满...
(点击上方公众号,可快速关注) 公众号:smart_android 作者:耿广龙|loonggg 点击“阅读原文”,可查看...
一、xml与xslt 相信所有人对xml都不陌生,其被广泛的应用于数据数据传输、保存与序列化中,是一种极为强...