目录
一、DTD约束
1.什么是DTD约束
用来限定xml文件中可使用的标签以及属性
2.创建DTD约束文档的步骤
(1)创建一个文件,后缀名为.dtd
(2)看xml文件中使用了哪些标签,用<!ELEMNET>可以定义标签
(3)判断标签是简单标签还是复杂标签
- 简单标签:没有子标签
- 复杂标签:有子标签
3.代码示例:
persons 是根标签,person、name、age是其子标签,#PCDATA代表其内容是字符串
<!ELEMNET persons (person)> //注意persons与小括号之间有空格
<!ELEMNET person (name,age)>
<!ELEMNET name(#PCDATA)>
<!ELEMNET age(#PCDATA)>
4.引入DTD约束文档的三种方法
(1)引入本地DTD约束文档
在xml文件的声明下一行,格式如下:
<!DOCTYPE 根标签 SYSTEM 'dtd文件路径'>
SYSTEM表示本地引入dtd文件
<?xml version="1.0" encoding="UTF-8" ?>
<!--DTD约束文档的引入方法一:本地引入(SYSTEM表示本地引入dtd文件)-->
<!--
<!DOCTYPE 根标签 SYSTEM ‘dtd文件路径’ >用来引入DTD文件
-->
<!DOCTYPE persons SYSTEM 'D:\IdeaProjects\BasicCode\myXML\xml\persondtd.dtd'>
<persons>
<person>
<name>张三</name>
<age>23</age>
</person>
</persons>
(2)在xml文件内部引入
即dtd文件与xml文件写在一起,格式如下:
<!DOCTYPE 根标签 []> []内传入dtd文件约束内容即可
<?xml version="1.0" encoding="UTF-8" ?>
<!--DTD约束文档的引入方法二:在xml文件内部引入-->
<!--
<!DOCTYPE 根标签 []> []内传入dtd文件约束内容即可
-->
<!DOCTYPE persons [
<!ELEMENT persons (person)>
<!ELEMENT person (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>
<persons>
<person>
<name>张三</name>
<age>23</age>
</person>
</persons>
(3)从网络引入dtd文件
格式如下:
<!DOCTYPE persons PUBLIC "dtd文件的名称" "dtd文档的URL">
<?xml version="1.0" encoding="UTF-8" ?>
<!--DTD约束文档的引入方法三:引入网络dtd-->
<!--
<!DOCTYPE persons PUBLIC "dtd文件的名称" "dtd文档的URL">
-->
<!DOCTYPE persons PUBLIC "dtd文件的名称" "dtd文档的URL">
<persons>
<person>
<name>张三</name>
<age>23</age>
</person>
</persons>
二、DTD语法规则
DTD定义元素(标签):
1.图解
2.符号
,:表示子标签的顺序,顺序出错,则报错
| :表示只能有一个子标签出现
?:子标签只能出现零次或一次
+:子标签能出现一次或多次
* :子标签能出现零次或多次
若不写,则标签只能出现一次
DTD定义属性:
1.图解
<!ATTLIST person CDATA #FIXED "p1"> 表示给标签person定义一个id属性,这个属性类型是普通的字符串,属性值p1是固定的
2.定义属性的格式
<!ATTLIST 标签名称 属性名称 属性的类型 属性的约束>