DTD约束

WHAT.什么是DTD?

DTD Document Type Definition 文档类型定义。我们在XML中可以自定义标记,那XML解析器怎么认识这些自定义标记并根据自定义标记的处理法则来处理元素呢?

这需要DTD,它是我们用来定义我们自己定义的标记的含义,我们自己定义元素的相关属性的文档。

DTD与XML是类与对象,数据库表结构与记录的关系。

简单实例

student.dtd

<!ELEMENT students (student*) >
<!ELEMENT student (name,age,sex) >
<!ELEMENT name (#PCDATA) >
<!ELEMENT age (#PCDATA) >
<!ELEMENT sex (#PCDATA) >
<!ATTLIST student number ID #REQUIRED>

对应的实例student.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE students SYSTEM "student.dtd">

<students>
	<student number="s001">
		<name>zhangsan</name>
		<age>23</age>
		<sex>male</sex>
	</student>
	<student number="s002">
		<name>lisi</name>
		<age>24</age>
		<sex>female</sex>
	</student>
</students>

WHY.为什么使用DTD?

约束:规定xml文档的书写规则

约束有2种分类:
            1. DTD:一种简单的约束技术
            2. Schema:一种复杂的约束技术(Schema约束

作为框架的使用者(程序员)需要的能力:
            1. 能够在xml中引入约束文档
            2. 能够简单的读懂约束文档

HOW.怎么样使用DTD?

外部dtd:将约束的规则定义在外部的dtd文件中

本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">

网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">

内部dtd:将约束规则定义在xml文档中(比较少使用)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE students [

		<!ELEMENT students (student+) >
		<!ELEMENT student (name,age,sex)>
		<!ELEMENT name (#PCDATA)>
		<!ELEMENT age (#PCDATA)>
		<!ELEMENT sex (#PCDATA)>
		<!ATTLIST student number ID #REQUIRED>


		]>
<students>
	<student number="s001">
		<name>zhangsan</name>
		<age>23</age>
		<sex>male</sex>
	</student>
	<student number="s002">
		<name>lisi</name>
		<age>24</age>
		<sex>female</sex>
	</student>
</students>

语法定义:
​​​​

<!ELEMENT 元素名称 (元素类型+元素数量限定词) >:定义元素
(元素名称):表示复杂元素,内容为子元素
(#PCDATA):表示简单元素,内容为字符串
元素数量限定词:*任意次数,+至少一次,?至多一次

<!ATTLIST 元素名称 属性名称 类型 是否必须>:定义属性

WHERE.在哪里学习DTD?

更加详细的规则可以参考W3CSCHOOL上的规范。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值