dtd 文档类型定义(Document Type Definition)是一套为了进行程序间的数据交换而建立的关于标记符的语法规则。它是标准通用标记语言和可扩展标记语言版规格的一部分,文档可根据某种DTD语法规则验证格式是否符合此规则。
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT classroom (claName,grade,students)>
<!ATTLIST classroom id ID #REQUIRED>
<!ELEMENT claName (#PCDATA)>
<!ELEMENT grade (#PCDATA)>
<!ELEMENT students (student+)>
<!ELEMENT student (id,stuName,age)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT stuName (#PCDATA)>
<!ELEMENT age (#PCDATA)>
如上所示我们定义了一个dtd文件,是一个classroom的
文档,文档中classroom元素有三个子元素
分别是claName,grade,students
classroom元素定义了一个id属性 #required表示的是必须要有的
<!ElLMENT> 定义了元素
<!ATTLIST> 定义了属性
+,*,? 表示通佩符 一次或多次的意思 不可以出现同名元素
如上就是dtd文件我们可以外部引用,也可以定义在内部直接约束,如上所示是外部引用的方式
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE classroom SYSTEM "classroom.dtd">
<classroom id="c1">
<claName>10计算机应用技术</claName>
<grade>2010</grade>
<students>
<student>
<id>1</id>
<stuName>zhangsan</stuName>
<age>12</age>
</student>
<student>
<id>2</id>
<stuName>lisi</stuName>
<age>122</age>
</student>
</students>
</classroom>
如上所示片段是一个针对上面的dtd定义的xml文档
定义的dtd
<?xmlversion="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>
上面所示的是第二中dtd的引入方式与对应的规则的xml文档