这次我们将学习以下内容
- 什么是XML?什么是DTD?什么是Schema?
- 什么是DOM?有什么作用?
- 什么是SAX?简述其作用
- 实现一访问XML文档的DOM程序。
- 实现一访问XML文档的SAX程序。
XML
eXtensible Markup Language ,XML 可拓展标记语言,和HTML和JSON同属于标准通用标记语言SGML的一个简化子集
那为什么需要XML而不用HTML呢?
- HTML智能显示内容却不能表达数据内容;
- HTML不能描述矢量图形、数学公式、化学符号等特殊对象;
- HTML的可扩展性差,用户不能根据自己的需求定义有意义的标记
并且XML的优势之一是允许建立适合应用需求的标记集,数据格式不受显示格式限制
文档三要素:
- 数据
- 结构
- 显示方式
HTML的显示方式嵌在数据中,创建文本的时候不需要考虑输出格式,如果有需要对相同的内容进行不同格式的显示则需要重新建立文档,重复量大
XML把三要素单独处理,利用样式表文件定义文档的显示方式:需要改变显示方式只需要改变样式表文件即可
下面来看看XML长啥样
一开始是xml声明,可以涉及三个属性:
- version:XML版本号
- standlone:是否和另外一个独立的dtd标记类型声明文件配合使用,yes表示自成一体,没有另外的dtd。no表示有一个dtd供该xml文件使用,默认是yes。
- encoding 编码标准
然后就是元素了,元素里面还可以嵌套其他元素,并且元素中可以有属性,属性是如下面一样的name-value对
<order orderNO ="12345"
customer="Hohn Smith"
date ="October 15,2009">
<item itemNo="a528" quantity ="1"/>
<item itemNo="c817" quantity ="3"/>
</order>
这里就是元素order中嵌套两个item
并且order有三个属性
item有两个属性,但是item是空元素
但是上面的也可以只用嵌套元素的形式表示
<order>
<orderNO>12345</orderNO>
customer<Hohn Smith"customer
date<October 15,2009">date
<item>
<itemNo>a528</itemNo>
<quantity>1</quantity>
</item>
<item>
<itemNo>c817</itemNo>
<quantity>3</quantity>
</item>
</order>
哪种方法按照自己喜欢,但是属性不可以嵌套
DTD
简单来说DTD文档类型定义,就是来定义XML文档的规则的,DTD分为内部DTD和外部DTD。
如果一个XML文档包含了DTD声明,则这个DTD叫做内部DTD,一般放在XML声明之后,并且在standalone=“yes”,不能放在XML数据之后以及XML声明之前。
外部DTD的好处是多个XML文档可以共享,standalone=“no”
由于xml standlone 默认值是 “yes”,所以book.dtd是外部DTD。
这个就是外部的DTD
语法看这里,本文不介绍。
DOM SAX
DOM解析XML文档的时候是:一次读入、随机访问
而SAX解析XML的时候是:顺序访问,触发读入
代码请看这里:XML文件解析DOM解析和SAX解析