我相信对于被称为“有效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的名称.>节点是文档对象模型的基本数据结构.