Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网站建设 > ASP > DTD语法介绍
【标  题】:DTD语法介绍
【关键字】:DTD
【来  源】:http://blog.csdn.net/zhangjunhd/archive/2006/12/13/1441999.aspx

DTD语法介绍

Your Ad Here

DTD语法介绍

简单的介绍一下DTD语法。

author: zhangjunhd@gmail.com 06-12-13

Blog: http://blog.csdn.net/zhangjunhd/

1.前言

XML作为一门标记语言,它就需要一种文档(即文档类型定义DTD)来定义,DTD可以看作是一类XML文档的模板。它定义了文档的逻辑结构,规定了 XML文档中所使用的元素,实体,元素的属性,元素与实体之间的关系。它使得数据交流与共享得以正常进行,验证了数据的有效性。DTD可以是一个完全独立的文件,也可以在XML文件中直接设定。所以,DTD分为外部DTD(在XML文件中调用另外已经编辑好的DTD)和内部DTD(在XML文件中直接设定 DTD)两种。

 

1.1内部DTD

如果DTD被包含在XML源文件中,它将通过以下语法格式来在"DOCTYPE"中定义:
<!DOCTYPE root-element [element-declarations]>

1:
<?xml version="1.0"?>
<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend</body>
</note>
上述包含有DTDXML文档解释如下
<!DOCTYPE note    (
在第2) 定义这是一个类型为note的文档.
<!ELEMENT note    (
在第3) 定义 note 有四个元素: "to,from,heading,body".
<!ELEMENT to        (
在第3) 定义 to 元素类型为 "#PCDATA".
<!ELEMENT from    (
在第4) 定义 from 元素类型为 "#PCDATA".
......

 

1.2外部DTD

如果DTDXML源文件的外部,它将通过以下语法格式来在"DOCTYPE"中定义:
<!DOCTYPE root-element SYSTEM "filename">

2:
此例XML文档与例1相同,但是使用的是外部的DTD
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

文件note.dtd包含定义的DTD
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>

 

2DTD示例

在一些有相互业务往来的公司,如果他们使用的电子文档是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<!ELMENT 学号 #PCDATA)>

-4<!ELMENT 姓名 #PCDATA)>

-5<!ELMENT 班级 #PCDATA)>

-6<!ELMENT 学生 (学号,姓名,班级)>

-7<!ELMENT 学生名单 (学生,学生)>

-8]>

 

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

 

21元素声明

格式:<!ELMENT 元素名称 元素的内容格式的定义>
(1)
基本元素声明:<!ELMENT 学号 #PCDATA)>    元素名称后直接跟的是数据类型则为基本元素。

(2)复合元素声明:<!ELMENT 学生 (学号,姓名,班级)> 学生元素是复合元素,它包含学号,姓名,班级三个基本元素。其实根元素是复合元素的一个特例,所有的元素都直接或间接地包含在根元素中。

 

22元素出现次数的控制(见表1

 

1

符号

代表标记出现的次数

不出现或只出现一次

*

不出现或可出现多次

+

必须出现一次以上

无符号

只能出现一次

 

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

 

23选择性元素

"|"限定,如 <!ELMENT 学生(姓名,性别,(优秀|良好|中等))>

 

24空元素

空元素是通过关键字EMPTY来声明的。

 

语法格式为:
<!ELEMENT element-name EMPTY>

:
<!ELEMENT br EMPTY>
XML文档中使用为
<br />

 

25含有任意内容的元素

含有任意内容的元素是通过关键字ANY来声明的。所谓任意内容是指能够包含任何结合的可被解析的数据。

 

语法格式为:
<!ELEMENT element-name ANY>
:
<!ELEMENT note ANY>

 

26属性声明

格式:<!ATTLIST Eltment_name Attribute_name Type [Keyword] [Default_value]> 

 

!ATTLIST 为定义属性的指令,后面是元素的名称,属性名称,属性值类型及默认值的关键字及默认值。

 

如一个学生有性别及班级两个属性,可这样定义:<!ATTLIST  学生 性别 CDATA "" 班级 CDATA "计算机03.2">

 

27属性内定值(见表2

 

2

属性内定值

描述

#REQUIRED

表示在标记中必须出现此属性。

#IMPLIED

标记中可以不出现此属性。

#FIXED

属性的值是固定的某个值。

字符串

标记中如没有指定属性的值,那么此字符串就是此属性的值。

 

必需赋值的属性:加REQUIRED关键字,如:<!ATTLIST  学生 性别 CDATA #REQUIRED "" 班级 CDATA "计算机03.2"> 表示必需给出学生的性别值。可有可无的属性则用IMPLIED关键字,固定取值的属性用FIXED关键字。

 

28属性的类型:在XML中共有10种属性类型,(见表3

 

3

属性值类别

描述

CDATA

属性值仅仅是一般的文字。

Enumerated

列出该属性的取值范围,一次只能有一个属性值能够赋予属性。

NMTOKEN

表示属性值只能由字母、数字、下划线、. 、:、-这些符号组成。

NMTOKENS

表示属性值能够由多个nmtoken组成,每个nmtoken之间用空格隔开。

ID

该属性在xml文件中是唯一的,常用来表示人的身份证号码。

IDREF

表示该属性值是参考了另一个id属性。

IDREFS

表示该属性值是参考了多个id属性,这些id属性的值用空格隔开。

ENTITY

表示该属性的设定值是一个外部的entity,如一个图片文件。

ENTITYS

该属性值包含了多个外部entity,不同的entity之间用空格隔开。

NOTATION

属性值是在dtd中声明过的notation(声明用什么应用软件解读某些二进制文件,如图片)。

 

 

网页库级垂直搜索引擎技术(一)垂直搜索引擎的选型:【上一篇】
FCKeditor使用手记:【下一篇】
【相关文章】
  • xml dtd 学习小结 By shawl.qiu
  • 关于XML的验证(DTD)一点实践
  • 用DTD验证XML2
  • 用DTD验证XML
  • 文档类型标签(Document Type Definition DTD)
  • DTD的定义认frameset的ID无法生效
  • DTD学习笔记
  • 关于loose.dtd和xhtml1-transitional.dtd等文档类型定义模型中CSS失效的解决办法。
  • xml学习文档 DTD 恐惧
  • Eclipse插件xmlbuddy的DTD文件本地化
  • 【随机文章】
  • Debian tips
  • 如何有效的使用C#读取文件
  • 今天买了4张碟
  • 如果有一天
  • MCU-323多点会议控制器
  • 用Java实现数据库应用系统(1)
  • J2ME 学习积累(1)
  • 笔记本基础知识35问答
  • 浏览长文档不再是负担
  • ASN.1协议下载
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.