目录
一、XML的简介
什么是XML?
Xml的全称为Extensiable Markup Language,意思是可扩展的标记语言。XMl的语法上和HTML比较相似,但是html标签都是规定好了的,而XML是可以随意定义标签的。
为什么要学习XML?
可扩展标记语言极其简单易于掌握和使用
语法格式较严格,是常用的配置文件
XML里面的DTD(下面讲了)可以定义规范,作用相当于接口,即只有使用这个规范才可以实现XML的功能
XML的作用
- 用来保存数据,而且这些数据具有自我描述性
- 可以作为项目或者模块的配置文件
- 还可以用来做网络传输数据的格式(现在用不多了,都是JSON为主)
标准的XML格式
- 有且只有一个根元素
- XML标签区分大小写
- 正确使用结束标签
- 正确嵌套标签
- 使用了合法的标签名
- 定义有效的属性
二、元素的定义
什么是DTD?
-
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块
-
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用
在XML中加入DTD声明
<!DOCTYPE 根节点[ ]>
[]里写要定义的元素
元素的分类
空元素: <!ELEMENT element-name EMPTY>
文本元素: <!ELEMENT element-name (#PCDATA)>
混合元素: <!ELEMENT element-name (e1,e2)>
元素的限制
与:,
或者:|
次数
0或1:?
0~N:*
1~N:+
案例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons[
<!ELEMENT persons (person+)>
<!ELEMENT person (name,age,contact,br*)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT contact (phone|email)>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT br EMPTY>
]>
<persons>
<person>
<name>张小明</name>
<age>10</age>
<contact>
<phone>1234567</phone>
</contact>
<br/>
</person>
<person>
<name>张大明</name>
<age>35</age>
<contact>
<email>123@qq.com</email>
</contact>
</person>
</persons>
三、属性定义
语法结构
<!ATTLIST element-name att_name type desc>
- element-name 元素名称
- att_name 属性名称
- type 属性类型
- desc 属性描述
属性类型
ID (不可重复)
(男|女)
CDATA(文本)
IDREF(引用)
reference
属性描述
#REQUIRED:必填
#IMPLIED:非必填
‘默认值’ 注意:只有type(男|女)类型时,desc才可以用默认值的方式
案例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons[
<!ELEMENT persons (person+)>
<!ELEMENT person (name,age,contact,br*)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT contact (phone|email)>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT br EMPTY>
<!ATTLIST person
pid ID #REQUIRED
sex (男|女) '男'
qq CDATA #IMPLIED
parent IDREF #IMPLIED
>
]>
<persons>
<person pid="p1" sex="男" qq="aaa" parent="p2">
<name>张小明</name>
<age>10</age>
<contact>
<phone>1234567</phone>
</contact>
<br/>
</person>
<person pid="p2">
<name>张大明</name>
<age>35</age>
<contact>
<email>123@qq.com</email>
</contact>
</person>
</persons>