1. 什么是xml文件?
xml:可扩展标记语言 (Extensible Markup Language, XML) ,标准通用标记语言的子集,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
2. xml的特点
可以跨越互联网任何的平台,不受编程语言和操作系统的限制。可扩展性良好,内容与形式分离,遵循严格的语法要求,保值性良好等优点,是可扩展的标记语言,主要用途作为配置文件和网络传输数据。
3. xml文件组成
xml是由文档声明,指令,标签,属性和文本组成
- 文档声明般是xml文档的第一行,包含xml版本信息及字符编码方式
- 处理指令,简称PI (processing instruction)。处理指令用来指挥解析引擎如何解析XML文档内容。
- 标签:标签名称自定义的规则:
* 名称可以包含字母、数字以及其他的字符
* 名称不能以数字或者标点符号开始
* 名称不能以字母 xml(或者 XML、Xml 等等)开始
* 名称不能包含空格
- 属性:id属性值唯一
- 文本:XML 文档中的所有文本均会被解析器解析,只有 CDATA 区段中的文本会被解析器。
4. 解析器
XML 解析器,会解析 XML 文档中所有的文本。当某个 XML 元素被解析时,其标签之间的文本也会被解析。
在xml中,解析器进行解析的内容,称为PCDATA(Parsed CDATA),解析器不会解析的内容,称为CDATA,(Character Data)。
在一些情况下,我们在xml中编写的特殊内容,例如特殊字符、代码等,并不希望解析器去解析,而是希望把这些内容按字符串原样输出即可,不需要做额外任何解析处理。这时候,我们就可以把这些内容,写在指定的CDATA区域内即可。
5. 约束
规定XML文档的书写规则,作为框架的使用者能够在xml中引入约束文档;能够简单的读懂xml文档。
- DTD(Documnet Type Definition)
DTD即文档类型定义,是一种XML约束模式语言,是XML文件的验证机制,属于XML文件组成的一部分。DTD是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。一个DTD文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性、可使用的实体或符号规则。
- XSD(XML Schemas Definition)
XML Schema语言也就是XSD。XML Schema描述了XML文档的结构。可以用一个指定的XML Schema来验证某个XML文档,以检查该XML文档是否符合其要求。文档设计者可以通过XML Schema指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的。XML Schema本身是一个XML文档,它符合XML语法结构。可以用通用的XML解析器解析它。
一个XML Schema会定义:文档中出现的元素、文档中出现的属性、子元素、子元素的数量、子元素的顺序、元素是否为空、元素和属性的数据类型、元素或属性的默认 和固定值。
XSD是DTD替代者的原因,一是据将来的条件可扩展,二是比DTD丰富和有用,三是用XML书写,四是支持数据类型,五是支持命名空间。
- 区别
DTD是使用非XML语法编写的,不可扩展,不支持命名空间,只提供非常有限的数据类型.
XSD(XML Schema)本身就是一个xml文件,他基于xml没有专门的语法,可以同XML文件一样解析和处理;提供了更丰富的数据类型,提供了可扩充的数据模型。
一般在使用过程中,由于DTD方式结果中会将xml文件展开为类似DOM树的文件,从而会占用大量内存空间,而XSD通过一行一行解析的方式进行,耗用内存空间较小。故在移动端常用XSD方式进行解析,服务器端常用DTD方式解析。