1.什么是DTD?
文档类型定义(约束)
2.什么是XML?
HTML:超文本标记语言 a/b/c/z
XML:可扩展标记语言
3.XML的两种文档约束
DTD
Schema
4.XML格式要求(合法XML)
1)有且只有一个根节点;
2)由开始标签和结束标签组成;
3)XML标签区分大小写;
4)正确嵌套标签;
5.使用DTD
5.1 在XML中加入DTD申明
1)内部申明:<! DOCTYPE root[]>
2)外部申明:<!DOCTYPE 文档根节点 SYSTEM “DTD文件名”>
5.2 元素定义语法(DTD对元素的限制)
基本语法:<! ELEMENT 元素名称 元素类型 >
元素分类:EMPTY 空元素
(#PCDATA) 文本元素
(e1,e2) 混合元素
元素限制:,(顺序)、|(或,多选一)、?(0或1次),*(1*0=0,0次或多次), +(1+0=1,1次或多次)
5.3 属性定义语法(DTD对属性的限制)
基本语法:<!ATTLIST 元素名称 属性名称 属性类型 设置说明>
属性类型:ID/CDATA/ENUM (男|女)
设置说明:#REQUIRED(必须)/#IMPLIED(可选)
person.xml
person.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 1)Dtd
2)内部声明<!DOCTYPE 根标签[]>
3)外部声明<!DOCTYPE 根节点 SYSTEM "DTD外部文件路径">
2.元素定义
1)语法:<!ELEMENT 元素名称元素类型>
2)类型
2.1)空元素:EMPTY
2.2)文本元素:(#PCDATE)
2.3)混合元素:(e1,e2,e3,e4,...)
3)设置说明:
3.1)必须:#REQUIRED required
3.2)#IMPLIED
4)特殊字符转义
-->
<!DOCTYPE Persons[
<!ELEMENT persons (person+)>
<!ELEMENT person (name,age,contact,br?)>
<!ELEMENT name (#PCDATE)>
<!ELEMENT age (#PCDATE)>
<!ELEMENT contact (phone|mail)>
<!ELEMENT phone (#PCDATE)>
<!ELEMENT mail (#PCDATE)>
<!ELEMENT br EMPTY>
<!ATTLIST person
pid ID #REQUIRED
paddr CDATE #IMPLIED
psxe (男|女|妖)"男"
>
]>
<persons>
<person pid="p01" paddr="123" psxe="男">
<name>张三</name>
<age>22</age>
<contact>
<phone>select * from t_book where price > 200 and price<300</phone>
</contact>
<br />
</person>
<person pid="p02">
<name>李四</name>
<age>23</age>
<contact>
<mail>123@qq.com</mail>
</contact>
</person>
</persons>
3)外部声明<!DOCTYPE 根节点 SYSTEM "DTD外部文件路径">
person1.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Persons[
<!ELEMENT persons (person+)>
<!ELEMENT person (name,age,contact,br?)>
<!ELEMENT name (#PCDATE)>
<!ELEMENT age (#PCDATE)>
<!ELEMENT contact (phone|mail)>
<!ELEMENT phone (#PCDATE)>
<!ELEMENT mail (#PCDATE)>
<!ELEMENT br EMPTY>
<!ATTLIST person
pid ID #REQUIRED
paddr CDATE #IMPLIED
psxe (男|女|妖)"男"
>
]>
<!DOCTYPE persons SYSTEM "text.xml"/>
<persons>
<person pid="p01" paddr="123" psxe="男">
<name>张三</name>
<age>22</age>
<contact>
<phone>select * from t_book where price > 200 and price<300</phone>
</contact>
<br />
</person>
<person pid="p02">
<name>李四</name>
<age>23</age>
<contact>
<mail>123@qq.com</mail>
</contact>
</person>
</persons>
text.xml
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT persons (person+)>
<!ELEMENT person (name,age,contact,br?)>
<!ELEMENT name (#PCDATE)>
<!ELEMENT age (#PCDATE)>
<!ELEMENT contact (phone|mail)>
<!ELEMENT phone (#PCDATE)>
<!ELEMENT mail (#PCDATE)>
<!ELEMENT br EMPTY>
<!ATTLIST person
pid ID #REQUIRED
paddr CDATE #IMPLIED
psxe (男|女|妖)"男"
>
5.4 特殊符号转义
&(逻辑与) --> &
>(大于) --> >
<(小于) --> <
‘(单引号) --> '
“(双引号) --> "