XML
1.1 xml简介
(1)xml,eXtensible Markup Language,可扩展标记语言
(2)xml是一种非常灵活的语言,没有固定的标签,所有的标签都可以自定义
(3)通常,xml被用于信息的记录和传递。因此,xml经常被用于充当配置文件。(比Oracle数据库方便,用记事本就可以打开)
1.2 有效的xml文档
1、标题格式良好的xml
(1)声明信息,用于描述xml的版本和编码方式
<?xml version="1.0" encoding="UTF-8"?>
(2)xml有且仅有一个根元素
(根元素:根元素的上面没有其他元素了,即没有被其他元素包围起来)
(3)xml是大小写敏感的
(4)标签是成对的,而且要正确嵌套
(5)属性值要使用双引号
(6)注释的写法:
<!-- 这里是注释 -->
2、使用DTD和XSD(XML Schema)定义语义约束
DTD
2.1 DTD简介
(1)DTD,Document Type Definition,文档类型定义
(2)DTD用于约束xml的文档格式,保证xml是一个有效的xml
(3)DTD可以分为两种,内部DTD(定义在xml里面),外部DTD(相对xml,是另一个单独的文件)
2.2 使用DTD
2.2.1 内部DTD的定义
(1)语法如下:
<!DOCTYPE 根元素 [元素声明]>
(2)元素声明语法:
<!ELEMENT 元素名 (子元素[, 子元素...])>
(#PCDATA) 表示元素内容只能是文本,不能再在里面设置子元素
(3)数量词
+ 表示出现1次或多次,至少一次
? 表示出现0次或1次
* 表示出现任意次
(4)属性声明语法:
<!ATTLIST 元素名称 属性名称 属性类型 默认值>
属性类型:CDATA,表示字符数据(character data)
默认值:
- #REQUIRED 表示必须出现
- #IMPLIED 表示不是必须的
(5)带DTD的完整xml代码举例:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 声明内部DTD -->
<!DOCTYPE scores [
<!ELEMENT scores (student+)>
<!ELEMENT student (name, course, score)>
<!ATTLIST student id CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT course (#PCDATA)>
<!ELEMENT score (#PCDATA)>
]>
<scores>
<student id="1">
<name>王同</name>
<course>java</course>
<score>89</score>
</student>
<student id="2">
<name>李佳</name>
<course>sql</course>
<score>58</score>
</student>
</scores>
2.2.2 外部DTD的定义
(1)创建一个独立的DTD文件
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT scores (student+)>
<!ELEMENT student (name, course, score)>
<!ATTLIST student id CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT course (#PCDATA)>
<!ELEMENT score (#PCDATA)>
(2)在xml中引入外部DTD文件
<!-- 引入外部DTD文件 -->
<!DOCTYPE scores SYSTEM "scores.dtd">
约束和验证XML
XSD
- XML Schema 是DTD的替代者
- 不仅可以定义XML文档的结构,还可以规范文档的内容
- XSD本身也是XML文档
- XSD采用XML文档来定义语义约束,比DTD要复杂一些,但是功能强大的多
- 支持丰富的数据类型
- 允许开发者自定义数据类型
- 可读性强
- 可针对未来需求进行扩展