1、什么是DTD:Document Type Definition(文档类型定义)
2、 如何在xml中引入DTD
1) 外部引入
当引用的文件在本地时
<!DOCTYPE 文档根结点 SYSTEM "DTD文件的URL">
当引用的文件是一个公共的文件时
<!DOCTYPE 文档根结点 PUBLIC "DTD名称" "DTD文件的URL">
2)内部引入
<!DOCTYPE 根元素 [元素声明]>
外部引入示例
DTD文件
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,出版社,价格)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 出版社 (#PCDATA)>
<!ELEMENT 价格 (#PCDATA)>
xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- 外部引入DTD -->
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架>
<书>
<书名 >Android 开发</书名>
<作者>罗老师</作者>
<出版社>新华书店出版</出版社>
<价格>99.99元</价格>
</书>
<书>
<书名>Java 核心技术</书名>
<作者>sun 公司</作者>
<出版社>新华书店出版</出版社>
<价格>88.98元</价格>
</书>
<书>
<书名>JavaScript 挑战编程</书名>
<作者>老罗</作者>
<出版社>新华书店出版</出版社>
<价格>22.37元</价格>
</书>
</书架>
内部引入示例
<?xml version="1.0" encoding="UTF-8"?>
<!-- 内部引入DTD约束 -->
<!DOCTYPE 科目 [
<!ELEMENT 科目 (英语,高数,概率,拓扑)>
<!ELEMENT 英语 (#PCDATA)>
<!ELEMENT 高数 (#PCDATA)>
<!ELEMENT 概率 (#PCDATA)>
<!ELEMENT 拓扑 (#PCDATA)>
<!-- 内部属性声明
格式:<!ATTLIST 元素名称 属性名称 属性类型 默认值>
属性类型(部分):
CDATA 值为字符数据
(en1|en2|en3...) 枚举类型中的一个
ID 值为唯一的id id只能以字符或者下划线开头
ENTITY 值为实体
ENTITIES 值为实体列表
默认值参数:
#REQUIRED 属性值是必须的
#IMPLIED 属性值不是必须的
#FIXED value 属性值是固定的(没有写出,xml自动定义)
-->
<!ATTLIST 英语
时间 CDATA #REQUIRED
网址 CDATA #FIXED "http://3wshcool"
次数 CDATA "3">
<!ATTLIST 高数
老师 CDATA #REQUIRED
学分 CDATA #FIXED "5.0"
地点 ID #REQUIRED
考试 CDATA #REQUIRED
答疑 (一节课|两节课) #IMPLIED
>
<!-- 内部实体声明
格式:<!ENTITY 实体名称 "实体的值">
-->
<!ENTITY writer "Bolt" >
<!--实体参数
在DTD的内部使用
-->
<!ENTITY % testdate1 "2016.06.20">
]>
<科目>
<英语 时间="123" 次数 ="9"></英语>
<高数
老师="高斯"
地点="a1"
答疑="一节课"
考试="2016/09/12"
>&writer;</高数>
<概率></概率>
<拓扑></拓扑>
</科目>