DTD学习总结

1.DTD简介:

Document Type Definition ,文档类型定义

2.DTD的两种形式

(1)作为单独文件编写

(2)嵌入在XML文件中编写

3.DEMO

有如下的XML文档:book.xml

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
	<book>
		<name>Thinking in Java</name>
		<author>Eckel</author>
		<price>99.0</price>
	</book>
	
	<book>
		<name>C++ Premiere</name>
		<author>somebody</author>
		<price>89.0</price>
	</book>
</bookstore>

(1)将DTD作为单独文件编写:book.dtd

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT bookstore (book+)>
<!ELEMENT book		(name,author,price)>
<!ELEMENT name 		(#PCDATA)>
<!ELEMENT author 	(#PCDATA)>
<!ELEMENT price 	(#PCDATA)>

在book.xml中需加入:

<?DOCTYPE bookstore SYSTEM "book.dtd"?>


(2)将DTD嵌入在XML文件中

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE bookstore [
	<!ELEMENT bookstore (book+)>
	<!ELEMENT book 		(name,author,price)>
	<!ELEMENT name 		(#PCDATA)>
	<!ELEMENT author 	(#PCDATA)>
	<!ELEMENT price 	(#PCDATA)>
]>
<bookstore>
	<book>
		<name>Thinking in Java</name>
		<author>Eckel</author>
		<price>99.0</price>
	</book>
	
	<book>
		<name>C++ Premiere</name>
		<author>somebody</author>
		<price>89.0</price>
	</book>
</bookstore>

 

使用 <!ELEMENT ...> 语句定义一个元素
(#PCDATA) 用于表示元素中嵌套的内容是普通文本字符串
<!ELEMENT book(name,author,price)> 表示嵌套name,author,price三个子元素
(book+) 表示子元素book可以出现多次

4.DTD的引入规则

(1)引入外部DTD文件

<!DOCTYPE 文档类型名称 SYSTEM "DTD文件的URL">
<!DOCTYPE 文档类型名称 PUBLIC "DTD名称" "DTD文件的URL">

一般用XML文档的根元素作为文档类型名称

SYSTEM 表明XML文件遵循的是本地或组织内容所编写和使用的DTD文件(由本公司内部编写和使用)
PUBLIC 表明是权威规范的DTD文件(由国际组织编写,供全球使用)

(2)在XML中嵌入DTD定义语句

<!DOCTYPE 根元素名 [
 DTD定义语句
 ……
]>

 

5.DTD的基本编写语法

(1)元素定义

<!ELEMENT 元素名称 使用规则>

DTD通过定义元素的使用规则来描述整个XML文件的文档结构,并对文档结构中的每一个细节进行说明。可以包括如下一些规则:
(#PCDATA) 普通文本字符串(Parsed Character Data,被解析的字符数据)
(子元素1,子元素2,...) 子元素
EMPTY 空元素
ANY  任何类型的子元素和普通文本字符串或混合(不建议使用)

(子元素1,子元素2,子元素3,。。。) XML文档中必须严格按顺序组织子元素
(子元素1 子元素2 子元素3 。。。) XML文档可以按任意顺序组织子元素
(子元素1|子元素2|子元素3|。。。) 任选其一

(元素+) 元素可以出现1次或多次
(元素*) 元素可以出现0,1或多次
(元素?) 元素可以出现0或1次

(2)属性定义

<!ATTLIST 元素名
 属性1 属性类型 设置说明
 属性2 属性类型 设置说明
 ……
>

属性类型:
CDATA 普通文本字符串
ENUMERATED 枚举类型
 <!ATTLIST 肉 品种 (鸡肉 | 牛肉 | 猪肉) "鸡肉">
 默认值为鸡肉,设置时只能从三种中选择一个
ID
……
 
设置说明:
#REQUIRED 必须设置该属性
#IMPLIED 可设置,也可不设置
#FIXED  固定为默认值
直接使用默认值

(3)实体定义

实体的根本作用是为一段文本内容创建一个别名,供以后方便引用。便于XML文档对相同内容的维护和修改。

   (1)引用实体
 <!ENTITY 实体名称 "实体内容">
 <!ENTITY 实体名称 SYSTEM "外部XML文档的URL">
 
 引用方式
 &实体名称;
 
   (2)参数实体
 参数实体被DTD问及自身使用,格式为:
 <!ENTITY % 实体名称 "实体内容">
 
 引用方式:
 %实体名称;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值