我的知识库

知识等于力量

« 设计高性能可扩展互动网站通用权限管理系统设计篇(三)——概要设计说明书 »

DTD语法概述

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名称

Search

导航

热门文章

最新文章

Powered By duduwolf's wiki 1.0

Copyright 1999-2007 duduwolf.com Some Rights Reserved.