实验二 网络计算 在XML文档中使用DTD 哈理工版本
xml 《DTD》模式简介

DTD 的局限性
由于 DTD 本身并不是专门面向 XML 的数据 模式语言,所以在对 XML 数据进行建模时, 也存在一定的局限性。
DTD 没 有 采 用 XML 的 语 法 形 式 (examples/xslt2/book.dtd)。 DTD 并不能完全满足 XML 自动化处理的要求,例 如不支持 XML 中的命名空间、不能很好实现应用 程序不同模块间的相互协调,缺乏对文档结构、属 性、数据类型等约束的足够描述能力等等。
不受限制的词汇表:可以随意地使用任何元 素、属性名称。 没有任何语法规则:每个元素中都可以包含 任意的内容(混合内容、子元素、文本、或 者为空)。 对于属性没有任何限制:每个元素都可以包 含任意的属性。
数据模式的用途 2
XML 树型模型的表达能力更强,对于相同的 数据可能采取各种不同的表示方式,为信息的 交换和处理带来极大的困难。 需要通过某种方式,定义 XML 数据的词汇表 (可能是针对某个领域),包括元素和属性的 名称、甚至取值,并且需要通过语法规则控制 XML 元素的结构,而实现这项任务的过程, 通常将其称为“XML 文档的数据模式设计”。
(4). 只包含子元素的元素
要声明一个只包含子元素的元素,其语法为:
<!ELEMENT element-name (child1,child2,...)>
其中,(child1,child2,...) 表示一个序列,即内 容模型。 <!ELEMENT student (stu_name, stu_no, stu_bak)> 。这项声明表示 student 元素中必 须包含 stu_name、stu_no、stu_bak 三个子 元素,并且它们的次序不能颠倒。
包含dtd的xml文件课程设计

包含dtd的xml文件课程设计一、课程目标知识目标:1. 学生理解XML的基本概念和用途,掌握XML文档结构。
2. 学生掌握DTD(文档类型定义)的作用和用法,能正确使用DTD定义XML文档的结构。
3. 学生了解XML命名空间的概念,并能在XML文件中使用命名空间。
技能目标:1. 学生能运用所学知识编写符合DTD规范的XML文件。
2. 学生能通过分析XML文件和DTD,判断其有效性,并能进行基本的错误修正。
3. 学生能运用XML解析器对XML文件进行解析,提取所需信息。
情感态度价值观目标:1. 培养学生对计算机编程和信息技术课程的兴趣,提高学习积极性。
2. 培养学生合作学习、探究问题的能力,增强团队协作精神。
3. 培养学生严谨、认真的学习态度,养成规范编写代码的习惯。
课程性质分析:本课程为信息技术课程,旨在帮助学生掌握XML及其DTD的知识,提高学生在实际应用中处理数据的能力。
学生特点分析:学生处于高年级阶段,具备一定的计算机操作和信息处理能力,对编程有一定了解,但可能对XML及其DTD较为陌生。
教学要求:1. 注重理论与实践相结合,通过实例让学生更好地理解XML和DTD的概念。
2. 鼓励学生积极参与课堂讨论,培养学生的独立思考能力和解决问题的能力。
3. 强化实践操作,让学生在实践中掌握XML和DTD的知识,提高应用能力。
二、教学内容1. XML基本概念:介绍XML的定义、作用和与HTML的区别,使学生理解XML在数据交换和存储中的重要性。
教材章节:第一章 XML基础2. XML文档结构:讲解XML文档的结构,包括元素、属性、注释等,让学生掌握编写规范XML文件的基本方法。
教材章节:第二章 XML文档结构3. DTD概述:介绍DTD的概念、作用和基本语法,使学生了解如何使用DTD 定义XML文档的结构。
教材章节:第三章 DTD基础4. DTD定义元素和属性:详细讲解如何使用DTD定义XML元素和属性,包括实体和符号声明等。
DTD(文档类型定义)语法

一简介文档类型定义(DTD)是用来定义一段合法的XML文档块。
它用来验证你的XML 文档是以一系列合法的元素构成的。
DTD可以在XML文档内部定义,也可以在通过外部文件的方式引入1 内部声明方式如果要把DTD包含在你的XML的内部,需要以以下的语法包含一个“DOCTYPE”声明:<!DOCTYPE 根元素 [子元素声明]>下面是一个包含DTD的XML例子:<?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>The DTD above is interpreted like this:以上的DTD声明解释如下:第二行!DOCTYPE note声明这是一个note类型的文档第三行!ELEMENT note声明note元素包含四个子元素:to,from,heading,body 第四行的!ELEMENT to声明to元素的类型是“#PCDATA”第五行的!ELEMENT from声明from元素的类型是“#PCDATA”以此类推... ...2 外部DOCTYPE声明If the DTD is external to your XML source file, it should be wrapped in a DOCTYPE definition with the following syntax:如果DTD是在XML源文件的外部,就需要在XML文件内用以下的语法声明DOCTYPE <!DOCTYPE 根元素 SYSTEM "文件名">以下是一个使用外部DOCTYPE声明的XML例子<?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.dtd 文件的内容:<!ELEMENT note (to,from,heading,body)><!ELEMENT to (#PCDATA)><!ELEMENT from (#PCDATA)><!ELEMENT heading (#PCDATA)><!ELEMENT body (#PCDATA)>3 为什么要使用DTDWith DTD, each of your XML files can carry a description of its own format with it.使用DTD,有以下好处:1,你的每一个XML文件可以描述自身的结构2,使不相关的人对于某种用于交流的数据达成统一的共识3,你的应用程序可以通过一个标准(DTD)对来自于外部的数据(XML文件)进行有效性验证。
第3章 有效的XML文件—DTD

<!ELEMENT bookname(#PCDATA)> 上述bookname可以是空元素也可以包含数据内容,但是一定不能 包含子元素。如果在XML文档中定义子元素,则是非法的,例如:
<bookname> <author>张三</author> <name>XML教程</name>
DTD定义了置标语言、文档结构的语法和词汇表,实际
上是定义了一个语法分析器。
XML基础教程
第3章 有效的XML文件-DTD
第6页
DTD的分类
外 部 DTD 可 以 单 独 形 成 文 件 , 后 缀 名 为.dtd,该文件可以被多个XML文档共享和 DTD调用。 内部DTD是在XML文档中直接定义DTD, 该DTD只能被当前XML文档使用。
XML基础教程
第3章 有效的XML文件-DTD
第12页
DTD基本结构模板
DTD的基本结构包括XML声明、元素声明、属性声明、
实体声明等,DTD基本结构模板如下所示:
<!ELEMENT …> <!ELEMENT …> … <!ATTLIST …> <!ATTLIST …> … <!ENTITY…> … <!NOTATION…> XML基础教程...
XML基础教程
第3章 有效的XML文件-DTD
第17页
Unrestricted元素
Unrestricted 元素表示在XML文档中可以包含任 何在DTD中定义的元素内容。一般情况下,只把 文档的根元素定义为此类型,这样设定后,元素 出现的次数和顺序不受限制。
XML DTD(文档类型定义)

来自 </dtd/dtd_building.asp>
DTD - 元素
例子: <!ELEMENT note (to,from,header,(message|body))> 上面的例子声明了:"note" 元素必须包含 "to" 元素、"from" 元素、"header" 元素,以及非 "message" 元素既 "body" 元素。
声明混合型的内容
例子: <!ELEMENT note (#PCDATA|to|from|header|message)*>
<!DOCTYPE 根元素 SYSTEM "文件名">
这个 XML 文档和上面的 XML 文档相同,但是拥有一个外部的 DTD:(在 IE5 中打开,并选择“查看源代码”命令。) <?xml version="1.0"?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
第三章 XML语法检 查DTD

DTD的属性声明
2、枚举类型 枚举类型并不需要使用一个关键字,它只 是将所有的属性列举出来,并以竖线分隔。枚 举类型的每一个可能值都必须遵循XML的名称 命名规则,然后就可以从这些值中选出一个作 为属性值。 例:<!- - DTD部分 - - > <!ATTLIST PET HOTSELL (TRUE|FALSE) “FALSE” > <!- - 文件元素部分- - > <PET HOTSELL = “TRUE”>热卖中!</PET>
DTD的属性声明
3、NMTOKEN类型 NMTOKEN规定属性值必须是正确的XML名称 (即必须以字母或下划线开头,后面的字符可 以为字母、数字、下划线、连字符和点号,但 不可包含空格)。 如: <!- - DTD部分 - - > <!ATTLIST CUSTOMER COUNTRY NMTOKEN #REQUIRED > <!- - 文件元素部分- - > <CUSTOMER COUNTRY=“CHN”>…… </CUSTOMER>
DTD的元素声明
3、声明空元素的声明格式: <!ELEMENT 元素名 EMPTY> • 该结构当声明的XML文档元素的内容为空时, 有效。如: <!- - DTD部分 - - > <!ELEMENT 位置 EMPTY> <!- - 文件元素部分- - > <位置></位置>
DTD的元素声明
4、声明自由类型元素的格式: <!ELEMENT 元素名 ANY> • 元素的内容可以是任何数据: 任何被声明过的元素,元素出现的顺序和次数不 受限制; 文本内容或CDATA段 例:example3.xml 5、混合类型 若某元素既包含子元素又包含已编译的字符数据,则 该元素具有混合内容。其声明的语法如下: <! ELEMENT pick (#PCDATA | one | two | three)*>
2 有效的XML文档-DTD

1. DTD基本概念
什么是有效的XML文档 文档 什么是有效的
结构良好的XML文档 文档(well-formed) 结构良好的 文档 符合XML基本语法的XML文档; 有效的XML文档 文档(valid) 有效的 文档 符合标记定义的XML文档 DTD(Document Type Definition) 用于为XML文档定义标记集; 是一套不同与XML语法的置标语言。
出现一次或多次 出现零次或多次 可选,不出现或出现一次 OR,只能是其中的一种 AND,要求严格遵从顺序要 求 一组要共同出现的子元素组
成组元素
子元素列表内可以使用括号进一步分组。例如: <!ELEMENT 联系人 (姓名,(HomePage,EMAIL)*)> , , <!ELEMENT 姓名(#PCDATA)> <!ELEMENT EMAIL(#PCDATA)> 例1: <联系人> <姓名>张三</姓名> <HomePage></HomePage> <EMAIL>zhang@</EMAIL> </联系人> 例2: <联系人> <姓名>张三</姓名> </联系人> 例3: <联系人> <姓名>张三</姓名> <HomePage></HomePage> </联系人>
而XML文档client.xml中申明使用上 面的外部DTD的方式为:
<?xml version = "1.0" standalone = "no"?>
<!DOCTYPE 联系人列表 SYSTEM “client.dtd">
第2章 使用DTD规范XML文档

在一个DTD中,具体规定了引用该DTD的XML 文档可使用哪些标记、父元素中能够包括哪些 子元素、各个元素出现的先后顺序、元素可包 含的属性、元素和属性值的数据类型,以及可 使用的实体及符号规则等。 DTD由许多约定和声明语句构成,这些语句可 以包含在XML文档内部,被称为内部DTD;也 可以独立保存为一个文件,而称为外部DTD。
6.空元素的声明
<!ELEMENT Element EMPTY> <!ELEMENT 别名 EMPTY> <别名/>
7.混合型元素的声明
既可以包含字符数据,有可以以任意的 顺序包含指定的一个或多个子元素,也 可以不包含任何内容。 <!ELEMENT Element (#PCDATA| Child_Elenment|…..)*> • <!ELEMENT 学生 ((#PCDATA|姓名|电话 |EMAIL)*>
2.1.2 DTD的基本结构
在一份DTD中,包含了对XML文档所使用 的元素、元素间的关系、元素可用的属 性、可使用的实体等的定义规则。一份 DTD实际上是若干条有关元素、属性、 实体等定义和声明语句的集合。
在DTD中可以包含下列各种声明语句:
DTD声明开始语句 元素类型声明语句 属性列表声明语句 实体声明语句 注释语句
2.ID类型
ID是用属性值的方式为文件中的某个元素定义唯一标识的方法,它的作 用类似于HTML文件中的内部链接。在大多数情况下,ID由处理文件的程 序或脚本语言使用。 <?xml version = "1.0" encoding="GB2312" standalone = "yes"?> <!DOCTYPE 联系人列表[ <!ELEMENT 联系人列表 ANY> <!ELEMENT 联系人(姓名,EMAIL)> <!ELEMENT 姓名(#PCDATA)> (#PCDATA)> <!ELEMENT EMAIL(#PCDATA)> <!ATTLIST 联系人 编号 ID #REQUIRED> ]> <联系人列表> <联系人 编号="1"> <姓名>张三</姓名> <EMAIL>zhang@</EMAIL> </联系人> <联系人 编号="2"> <姓名>李四</姓名> <EMAIL>li@</EMAIL> </联系人> </联系人列表>
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成绩:实验报告
课程名称:网络计算
实验项目:在XML文档中使用DTD
姓名:
专业:
班级:
学号:
计算机科学与技术学院
实验教学中心
年月日
实验项目名称:在XML文档中使用DTD ( 2学时)
一、实验目的
(1)通过本实验,使学生能够了解并掌握XML DTD的定义方法及其用途(2)了解并掌握DTD元素声明的基本语法
(3)了解并掌握DTD属性声明的基本语法
(4)了解并掌握DTD实体声明的基本语法
(5)了解并掌握DTD标记声明的基本语法
(6)了解并掌握XMLSpy中基于DTD的XML文件输入
二、实验内容
一 XML DTD是对XML结构进行定义的机制
二XML DTD本身不符合XML语法
三、实验步骤
(1)对以下“个人信息.xml”进行DTD定义(设DTD文件名为“个人信息.dtd”)
<?xml version="1.0" encoding="UTF-8"?>
<!-- 这是一个用XML描述的例子 -->
<bookcase
xmlns:xsi="/2001/XMLSchema-instance" > <book type="教育">
<b-name>XML实用培训教程</b-name>
<author>
<name>张健飞</name>
<E-mail>zjf@</E-mail>
</author>
<price>27元</price>
<publishing-house>
<p-name>科学出版社</p-name>
<address>北京东皇城根北街16号</address>
<zipcode>100717</zipcode>
<E-mail>yanmc@</E-mail>
</publishing-house>
</book>
<book type="科技">
<b-name> XML网页制作彻底研究</b-name>
<author>
<name>陈会安</name>
<E-mail>cha@</E-mail>
</author>
<price>47元</price>
<publishing-house>
<p-name>中国铁道出版社</p-name>
<address>北京市宣武区右安门西街8号</address>
<zipcode>100054</zipcode>
<E-mail>bjb@</E-mail>
</publishing-house>
</book>
</bookcase>
(2)书写XML DTD定义头部
<?xml version="1.0" encoding="UTF-8"?>
(3)书写XML DTD元素定义
<!ELEMENT bookcase (book*)>
<!ELEMENT book (b-name,author,price,publishing-house)>
<!ELEMENT b-name (#PCDATA)>
<!ELEMENT author (name,E-mail)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT E-mail (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT publishing-house (p-name,address,zipcode,E-mail)> <!ELEMENT p-name (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ELEMENT zipcode (#PCDATA)>
(4)添加XML DTD属性定义(添加在book元素定义之后)
<!ATTLIST book type (edu|tech) "tech">
(5)XMLSpy中新创建一个基于“个人信息.dtd”的XML文件,体会该方法的方便快捷
(6)在IE中打开带有DTD定义的“个人信息.xml”,观察符合DTD定义及不符合DTD定义的XML文件显示(带DTD定义的XML文件头部如下所示)
四、实验结果
(1)为什么要定义DTD?
为了验证XML文档的良构性,方便规格化XML文档。
(2)DTD不符合XML语法有什么缺点?
DTD不遵守XML语法,写XML一个语法,DTD又一个语法,这样就加大了XML开发的复杂度。
在写复制的XML时,DTD的开发成为一种累赘。
五、程序代码
.dtd文件代码
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT bookcase (book*)>
<!ELEMENT book (b-name,author,price,publishing-house)>
<!ELEMENT b-name (#PCDATA)>
<!ELEMENT author (name,E-mail)>
<!ELEMENT name (#PCDA TA)>
<!ELEMENT E-mail (#PCDATA)>
<!ELEMENT price (#PCDA TA)>
<!ELEMENT publishing-house (p-name,address,zipcode,E-mail)>
<!ELEMENT p-name (#PCDA TA)>
<!ELEMENT address (#PCDA TA)>
<!ELEMENT zipcode (#PCDA TA)>
.xml文件代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE bookcase SYSTEM "C:\Documents and Settings\Administrator\桌面\Untitled7.dtd"> <bookcase xmlns:xsi="/2001/XMLSchema-instance">
<book type="教育">
<b-name>XML实用培训教程</b-name>
<author>
<name>张健飞</name>
<E-mail>zjf@</E-mail>
</author>
<price>27元</price>
<publishing-house>
<p-name>科学出版社</p-name>
<address>北京东皇城根北街16号</address>
<zipcode>100717</zipcode>
<E-mail>yanmc@</E-mail>
</publishing-house>
</book>
<book type="科技">
<b-name> XML网页制作彻底研究</b-name>
<author>
<name>陈会安</name>
<E-mail>cha@</E-mail>
</author>
<price>47元</price>
<publishing-house>
<p-name>中国铁道出版社</p-name>
<address>北京市宣武区右安门西街8号</address>
<zipcode>100054</zipcode>
<E-mail>bjb@</E-mail>
</publishing-house>
</book>
</bookcase>。