DTD语法概述

XML作为一门标记语言,它就需要一种文档(即文档类型定义DTD)来定义,DTD可以看作是一类XML文档的模板。它定义了文档的逻辑结构,规定了XML文档中所使用的元素,实体,元素的属性,元素与实体之间的关系。它使得数据交流与共享得以正常进行,验证了数据的有效性。DTD可以是一个完全独立的文件,也可以在XML文件中直接设定。所以,DTD分为外部DTD(在XML文件中调用另外已经编辑好的DTD)和内部DTD(在XML文件中直接设定DTD)两种。在一些有相互业务往来的公司,如果他们使用的电子文档是XML文档,那么我们就可以定用一个独立的DTD文档。每次交换和定义时都引用它来验证结构完整性和语法的合法性。比如以下一个XML文档:

None.gif xml version ="1.0" encoding ="GB2312" standalone="yes" ?>
None.gif < 学生名单 >
None.gif < 学生 >
None.gif < 学号 > 2003081205 学号 >
None.gif < 姓名 > 田淋 姓名 >
None.gif < 班级 > 计03.2班 班级 >
None.gif 学生 >
None.gif < 学生 >
None.gif < 学号 > 2003081232 学号 >
None.gif < 姓名 > 杨雪锋 姓名 >
None.gif < 班级 > 计03.2班 班级 >
None.gif 学生 >
None.gif 学生名单 >

它的一个DTD文档如下:

1 None.gif xml version="1.0" encoding="GB2312" standalone="yes" ?> 2 None.gif < !DOCTYPE 学生名单[ 3 None.gif> 4None.gifELEMENT 姓名 (#PCDATA)> 5None.gifELEMENT 班级 (#PCDATA)> 6None.gifELEMENT 学生 (学号,姓名,班级)> 7None.gifELEMENT 学生名单 (学生,学生)> 8None.gif]> 9None.gif10None.gif11None.gif

2为DTD定义开始标记,学生名单为其根元素,3到7都是元素定义 ,8是结束标记。下面将介绍一下元素声明的语法及注意事项。

元素声明格式:
(1)基本元素声明: 元素名称后直接跟的是数据类型则为基本元素。
(2)复合元素声明:ELEMENT 学生 (学号,姓名,班级)> 学生元素是复合元素,它包含学号,姓名,班级三个基本元素。其实根元素是复合元素的一个特例,所有的元素都直接或间接地包含在根元素中。

元素出现次数的控制

加"?"表示些元素可出现0次或1次;加"*"表示可出现任意次;加"+"表示至少要出现一次。如:None.gifELEMENT 学生 (学号?,姓名,班级,爱好*)>则表示一个学生只有唯一的学号,或者还未分配学号,即学号元素出现0次或1次,而爱好可以没有,也可以有好几方面的,所以用*(任意次)限定。
选择性元素 用"|"限定,如

属性声明
格式:
!ATTLIST 为定义属性的指令,后面是元素的名称,属性名称,属性值类型及默认值的关键字及默认值。
如一个学生有性别及班级两个属性,可这样定义:
必需赋值的属性:加REQUIRED关键字,如: 表示必需给出学生的性别值。可有可无的属性则用IMPLIED关键字,固定取值的属性用FIXED关键字。属性的类型:在XML中共有10种属性类型,如下表:

类型含义
CDATA字符数据
Enumerated可能的取值的列表
ID唯一的数字
IDREFID类型属性的值
IDREFS由空格分开的若干个ID
ENTITY实体
ENTITYS若干个实体
NMTOKENXML名称
NOTATIONDTD中声明的注释名
NMTOKENS多个XML名称


上一篇:XML语法概述



From:

http://www.cnblogs.com/yxfqust/archive/2006/08/10/468878.html

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27681/viewspace-987035/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/27681/viewspace-987035/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值