1.1 XML简介
1、XML(eXtensible Markup Language,可扩展标记语言),可以自定义标签。
2、基于文本格式,所以XML可以跨平台、跨语言
3、标签没有预定义,需要自定义
4、XML用来保存和传输数据,不是用来显示数据的。(HTML用来显示数据)
5、XML是元语言(可以通过此语言创造其他语言的语言成为元语言)
1.2 XML文档结构
1、第一行是XML声明,包括版本和字符编码
<?xml version="1.0" encoding="utf-8" ?>
2、XML文档是一个树型结构,它总是从“树根”开始,然后扩展到树叶。
3、XML文档必须要包含根元素。
1.3 XML节点的分类
<stu id="001"> 小明 </stu>
1、stu 为元素节点
2、小明 为值节点
3、 id 为属性节点
1.4 数据的分类
1、PCDATA:parse character data(可解析字符数据)由解析器解析
2、CDATA:character data,不会由解析器解析
3、元素后一般是PCDATA,属性后一般是CDATA
1.5 DTD
1、DTD:document type definition(文档类型定义)
2、DTD用来验证XML文档是否有效
3、DTD可以是一个独立的文件(外部DTD),也可以是嵌套在XML文档中(内部DTD)
1.5.1 语法:
<!ELEMENT 元素 (子元素) >
<!ELEMENT 元素 (#PCDATA)>
<!ELEMENT 元素 EMPTY> 空标记
<!ELEMENT 元素 ANY >
1.5.2 引用外部DTD
引用外部DTD有两个关键字
1、SYSTEM:引用自定义的DTD文件
<!DOCTYPE 根元素 SYSTEM “文件名”>
2、PUBLIC:引用互联网的DTD文件
<!DOCTYPE HTML PUBLIC "DTD名称" "dtd的域名地址">
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE movies [
<!ELEMENT movies (movie+)>
<!ELEMENT movie (title,actor+,rating)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT actor (#PCDATA)>
<!ELEMENT rating (#PCDATA)>
]>
<?xml version="1.0" encoding="UTF-8"?>
<movies>
<movie>
<title>西游记</title>
<actor>六小龄童</actor>
<actor>马德华</actor>
<rating>大家一起看</rating>
</movie>
<movie>
<title>水浒传</title>
<actor>宋江</actor>
<rating>大人陪同</rating>
</movie>
</movies>
1.5.3 引用内部DTD
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE movies [
<!ELEMENT movies (movie+)>
<!ELEMENT movie (title,actor+,rating)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT actor (#PCDATA)>
<!ELEMENT rating (#PCDATA)>
]>
<movies>
<movie>
<title>西游记</title>
<actor>六小龄童</actor>
<actor>马德华</actor>
<rating>大家一起看</rating>
</movie>
<movie>
<title>水浒传</title>
<actor>宋江</actor>
<rating>大人陪同</rating>
</movie>
</movies>
1.6 实体
实体又分为:一般实体,参数实体。
一般实体中分为:预定义实体,自定义实体。
1.6.1 预定义实体
实体名称 字符
lt ---------- <
gt --------- >
amp ------ &
quot ------- “
apos ------- ‘
1.6.2 自定义实体
语法:<!ENTITY 实体名 实体值 >
调用实体:&实体名;
1.6.3 参数实体
参数实体和一般实体声明的时候很相似,区别是参数实体前面有”%”
语法:<!ENTITY % 实体名 ‘实体默认值’>
例子:
<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY % p 'test'>
<!ELEMENT roster ((%p;)+)>
<!ELEMENT %p; (name,sex,birthday,score?,skill+)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ELEMENT birthday (#PCDATA)>
<!ELEMENT score (#PCDATA)>
<!ELEMENT skill (#PCDATA)>
<!ATTLIST %p; id ID #REQUIRED>
XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE roster SYSTEM "10-demo.dtd"[
<!ENTITY % p "teacher">
]>
<roster>
<teacher id="t001">
<name></name>
<sex></sex>
<birthday></birthday>
<skill></skill>
<skill></skill>
</teacher>
</roster>