XML文档定义的几种形式和本质区别
XML文档定义的形式
两种定义形式:DTD、Schema
DTD:数据类型定义(Data Type Definition),用以描述XML文档的文档结构,是早期的XML文档定义形式。
Schema:其本身是基于XML语言编写的,在类型与语法上的限定能力比DTD强,处理也比较方便,因为这个正逐渐代替DTD成为新的模式定义语言
XML文档定义形式的区别
两种本质区别:
Schema本身是xml文档结构的定义和描述,其最重要的作用是用来约束XML文件,并且验证XML文件的有效性。
DTD的作用是定义XML的合法构建模块,它使用一系列的合法元素来定义文档结构。他们之间的区别有以下几点。
1、Schema本身就是XML文档,DTD定义跟XML没有什么关系,Schema在理解和实际应用有很多的好处。
2、DTD文档的结构是“平铺型”的,如果定义很复杂的XML文档,很难把握各元素之间的嵌套关系,Schema文档结构性强,各元素之间的嵌套关系非常直观。
3、DTD只能指定元素含有文本,不能定义元素文本的具体类型,如字符型,整型,日期型,自定义类型等。Schema在这方面比DTD强大。
4、Schema支持元素节点顺序的描述,DTD没有提供无序情况的描述,要定义无序必需穷举排列的所有情况。
5、对命名空间的支持。DTD无法利用XML的命名空间,Schema很好满足命名空间。
解析XML文档的几种方式
主要有三种方式:DOM、SAX、STAX。
1、DOM
处理大型文件时其性能下降的非常厉害,这个问题是由DOM的树结构所造成的,这种机构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问。
2、SAX
不现于DOM,SAX是事件驱动型的XML解析方式,它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它就会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问。
3、STAX
Streaming API For XML(Stax)