I need to follow my heart

不要让任何人的意见淹没了你内在的心声
posts - 16, comments - 39, trackbacks - 1, articles - 1
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

DTD语法概述

Posted on 2006-08-10 21:13 野娃 阅读(11559) 评论(20)  编辑 收藏 网摘 所属分类: XML

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

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

它的一个DTD文档如下:

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

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

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

元素出现次数的控制

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

选择性元素 用"|"限定,如 <!ELEMENT 学生(姓名,性别,(优秀|良好|中等))>

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

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

上一篇:XML语法概述



Feedback

#1楼   回复  引用    

2006-08-15 23:00 by 谜谜猫[未注册用户]
好无奈啊
>_<..抓狂...
我都不懂啊....你下次弄点关于艺术的东东好不好....
@_@晕了
re: DTD语法概述 trackbacks - 0, articles - 1

#3楼   回复  引用    

2006-08-17 22:55 by 谜谜猫[未注册用户]
0
00
000
0000
00000
000000

#4楼   回复  引用    

2006-09-19 18:41 by Y[未注册用户]
我还没有入门哦,有点看不懂

#5楼   回复  引用    

2006-12-08 17:38 by YUNWY[未注册用户]
写得不错,够清楚

#6楼   回复  引用    

2006-12-08 17:43 by YUNWY[未注册用户]
属性声明要是能够再具体点就好了,谢谢斑竹,让我对这个清楚多了

#7楼   回复  引用    

2006-12-13 15:38 by BAD_J[未注册用户]
好文收藏!

#8楼   回复  引用    

2006-12-27 13:09 by xc[匿名][未注册用户]
thank you very much!!

#9楼   回复  引用    

2006-12-27 15:15 by zuoxiouqi[未注册用户]
写的非常好
有空再写一些关于xml schema的文章

#10楼   回复  引用    

2007-01-22 18:00 by jobsen[未注册用户]
ELMENT写错了应该是 ELEMENT

#11楼   回复  引用    

2007-01-25 13:48 by 瓶子[匿名][未注册用户]
very good!!

#12楼   回复  引用    

2007-02-12 11:25 by harmon[未注册用户]
<!ELMENT 学生名单 (学生,学生)> can be replaced by
<!ELEMENT 学生名单(学生*)>

#13楼   回复  引用    

2007-02-27 13:41 by 11[未注册用户]
好文章

#14楼   回复  引用    

2007-03-21 10:41 by yxfqust[未注册用户]
谢谢指正。

#15楼   回复  引用    

2007-03-30 16:38 by ABCTJPU[未注册用户]
好文章!
jiayou

#17楼   回复  引用    

2007-04-27 17:59 by 知识库[未注册用户]
讲的不错 ;D

#18楼   回复  引用    

2007-06-05 08:29 by lxn[未注册用户]
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

#19楼   回复  引用    

2007-07-12 15:31 by 入门[未注册用户]
不错哦,顶一个



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 468878




相关文章:

相关链接: