如何根据DTD文件创建出满足该DTD的XML文件的应用示例
- 格式:pdf
- 大小:240.09 KB
- 文档页数:6
xml 数据格式标准XML(可扩展标记语言)是一种用于存储和传输数据的格式,它使用标签来描述数据,并可以嵌套使用。
以下是一些XML数据格式的标准:1、文档类型声明(DTD):DTD定义了XML文件的语法和结构,它允许您指定哪些元素可以出现在XML文件中,以及这些元素之间的关系。
例如,下面是一个简单的DTD示例:xml<!DOCTYPE note SYSTEM “Note.dtd”>2、元素:XML文件是由元素组成的,元素可以包含属性、文本内容和嵌套元素。
元素必须被正确地嵌套,并且必须有一个结束标签。
例如:xml<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don’t forget me this weekend!</body></note>3、属性:属性提供有关元素的额外信息,它们必须赋值,并且必须包含在元素的开始标签中。
例如:xml<paging type="simple"/>4、文本内容:文本内容可以包含在XML元素中,它可以是任何字符串数据。
例如:xml<title>My Title</title>5、注释:注释用于解释XML文件中的特定部分,并被包含在“<!--”和“-->”之间。
例如:xml<!-- This is a comment -->6、空白符:在XML中,空白符(包括空格、换行符和制表符)通常被忽略。
例如:xml<name>John Smith</name> <!-- This is a comment --> <age>30</age>。
包含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元素和属性,包括实体和符号声明等。
XMLDTD详解XML DTD详解 ⼀个有效的XML⽂档必然是结构正规的,结构正规的XML⽂档不⼀定是有效的,即有效的是格式正规的⼀个⼦集。
本⽂详细介绍DTD,包括其对元素的定义,属性的定义,以及实体的定义。
元素的定义DTD中的修饰符号: 这部分符号可以联系正则表达式的符号来记忆。
属性的定义属性类型——CDATA ⽐如:<!ATTLIST title name CDATA #REQUIRED> 定义了⼀个属性,是属于title元素的,属性名叫name,类型是字符串(包括数字和中⽂),并且是⼀个必须要有的属性。
属性类型——NMTOKEN/NMTOKENS 左边图中因为加了空格⽽出错。
属性类型——ID 类型为ID的属性取值必须是唯⼀的。
从这个例⼦还可以看到同⼀个元素可以⼀次定义多个属性,多个属性之间⽤空格分隔即可。
属性类型——IDREF/IDREFS (“⼉⼦”后⾯漏掉了⼀个斜线)属性类型——Enumerated 实现定义好⼀些值,属性的值必须在所列出的值的范围内。
属性的特点#REQUIRED 元素的所有实例都必须有该属性的值(NOT NULL)。
语法:<!ATTLIST 元素名属性名属性类型 #REQUIRED> DTD⽰例:<!ATTLIST person number CDATA #REQUIRED> XML⽰例:<person number="6788"/>#IMPLIED 元素的实例中可以忽略该属性(NULL)。
语法:<!ATTLIST 元素名属性名属性类型 #IMPLIED> DTD⽰例:<!ATTLIST contact fax CDATA #IMPLIED> XML⽰例:<contact fax="888-228833"/> 没有这个属性也是对的。
#FIXED value 元素实例中该属性的值必须为指定的固定值。
JSP XML 使用DTD规范XML文档
DTD可以指定用在XML文档中的元素、属性和实体,以及这三者之间的联系等,使XML文档具有预定义的逻辑层次结构,从而更容易实现数据共享。
本练习使用DTD来规范XML文件的学生信息。
具体步骤如下所示:
(1)确定与学生有关的核心信息。
与学生有关的信息可以有很多,这里可以简化为包括信息有:姓名、编号、性别、年龄等信息。
(2)编写DTD文件。
学生是学校中的一员,具有层次结构,所以通过班级把
在上述声明中规定,根过元素为“学校”,“学校”可以有一个或多个“班级”子元素,同时“学校”也有自己的属性“编号”;“班级”可以有一个或多“学生”子元素,“班级”也有自己的属性“编号”;同样“学生”可以包含子元素“姓名”、“性别”、“年龄”各一个,同时“学生”也有自己的属性“编号”。
(3)编写XML文档。
在与student.dtd文件所在的目录下创建XML文件:stu
上述XML文件中引用外部DTD规范,使用浏览器中打开XML文档,如图7-21所示。
图7-21 学生信息。
DTD规范XML文档DTD是一套关于标记的语法规则,它定义了文档的逻辑结构,规定了文档中所使用的元素、实体、元素的属性、元素与实体之间的关系。
一引入DTD(3种方式)1 内部DTD——内部的DTD紧跟在XML声明和处理指令之间。
< ? xml version=”1.0” encoding=”GB2312” standalone=”yes” ?><! DOCTYPE 根元素名称 [<! ELEMENT 子元素名称 (#PCDATA)>]>2 外部DTD外部文件类型定义存在于独立文件中,文件扩展名为“dtd”。
外部DTD的了处:可以方便地被多个XML文档共享,只需要定义一份DTD文档,即可为多个XML文档定义语义约束。
<!DOCTYPE 根元素名 SYSTEM " DTD-URL ">SYSTEM:关键字,指该外部DTD是私有的DTD-URL:通过URL将外部DTD引用到XML文档中,可以是绝对地址也是可以相对地址。
3公用DTD<!DOCTYPE 根元素名 PUBLIC " DTD-NAME ““DTD-URL”>公用DTD与外部DTD区别在于:公用DTD使用PUBLIC代替了原来的SYSTEM,并增加了DTD标识名。
二 DTD文档的结构<?xml version="1.0" encoding="UTF-8"?> DTD声明部分,DTD注释与XML 注释的语法完全相同<!ELEMENT …>定义一个XML元素<!ELEMENT …>…<!ATTLIST …>定义一个XML元素定义了一个属性<!ATTLIST …>…<!EMTITY…>定义一个实体…<!NOTATION…>定义一个符号...三 DTD对元素声明【重点】使用ELEMENT声明XML元素的语法, <!ELEMENT 元素名元素内容> 注:元素声明以“<!”开始,以“>”结束;元素声明指令“ELEMENT”为关键字,必须大写;元素名:为当前元素指定的元素名称;元素内容:元素名后面的内容用来指定元素的内容类型,可分为EMPTY(空)、子元素类型,混合型、ANY(任意)和#PCDATA 五种类型;DTD必须定义XML文档中允许出现的所有元素。
实验2、按照下列内容要求,编写DTD和有效的xml实例文档。
要求:能合理体现下列数据的语义学生信息:学号(声明为id类型属性),姓名,性别,出生日期课程信息:课程编号(声明为id类型属性),课程名,学分,课程说明成绩信息:成绩(考虑补考及重修)实例文档:多个学生、多门课程的成绩(不少于8个学生3门课程)DTD文档:<?xml version="1.0" encoding="UTF-8"?><!--声明跟元素--><!ELEMENT s_grade_report (students,courses,grades)><!ELEMENT students (student)+><!ELEMENT student (s_number,s_name,gender,birthday)><!ELEMENT s_number EMPTY><!--把s_no.属性定义为ID类型--><!ATTLIST s_number s_no. ID #REQUIRED><!ELEMENT s_name (#PCDATA)><!ELEMENT gender (#PCDATA)><!ELEMENT birthday (#PCDATA)><!ELEMENT courses (course)+><!ELEMENT course (c_number,c_name,credit,c_description)><!ELEMENT c_number EMPTY><!--把c_no.属性定义为ID类型--><!ATTLIST c_number c_no. ID #REQUIRED><!ELEMENT c_name (#PCDATA)><!ELEMENT credit (#PCDATA)><!ELEMENT c_description (#PCDATA)><!ELEMENT grades (grade)*><!ELEMENT grade (c_grade)*><!--引用s_no.属性的值--><!ATTLIST grade s_no. IDREF #REQUIRED><!ELEMENT c_grade (final_examination,make-up_examination?,rebuild_examination?)> <!--引用c_no.属性的值--><!ATTLIST c_grade c_no. IDREF #REQUIRED><!ELEMENT final_examination (#PCDATA)><!ELEMENT make-up_examination (#PCDATA)><!ATTLIST make-up_examination m_name CDATA #FIXED "补考"><!ELEMENT rebuild_examination (#PCDATA)><!ATTLIST rebuild_examination r_name CDATA #FIXED "重修"> XML实例文档:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE s_grade_report SYSTEM "test2.dtd"><s_grade_report><students><student><s_number s_no.="S0001"/><s_name>A</s_name><gender>male</gender><birthday>19910101</birthday></student><student><s_number s_no.="S0002"/><s_name>B</s_name><gender>male</gender><birthday>19910101</birthday></student><student><s_number s_no.="S0003"/><s_name>C</s_name><gender>male</gender><birthday>19910101</birthday></student><student><s_number s_no.="S0004"/><s_name>D</s_name><gender>female</gender><birthday>19910101</birthday></student><student><s_number s_no.="S0005"/><s_name>E</s_name><gender>female</gender><birthday>19910101</birthday></student><student><s_number s_no.="S0006"/><s_name>F</s_name><gender>male</gender><birthday>19910101</birthday></student><student><s_number s_no.="S0007"/><s_name>G</s_name><gender>female</gender><birthday>19910101</birthday></student><student><s_number s_no.="S0008"/><s_name>H</s_name><gender>male</gender><birthday>19910101</birthday></student></students><courses><course><c_number c_no.="C001"/><c_name>XML</c_name><credit>3</credit><c_description>略</c_description></course><course><c_number c_no.="C002"/><c_name>UML</c_name><credit>3</credit><c_description>略</c_description></course><course><c_number c_no.="C003"/><c_name>English</c_name><credit>4</credit><c_description>略</c_description></course></courses><grades><grade s_no.="S0001"><c_grade c_no.="C001"><final_examination>90</final_examination></c_grade><c_grade c_no.="C002"><final_examination>56</final_examination><make-up_examination m_name="补考">60</make-up_examination> </c_grade><c_grade c_no.="C003"><final_examination>65</final_examination></c_grade></grade><grade s_no.="S0002"><c_grade c_no.="C001"><final_examination>58</final_examination><make-up_examination m_name="补考">60</make-up_examination> </c_grade><c_grade c_no.="C002"><final_examination>70</final_examination></c_grade><c_grade c_no.="C003"><final_examination>80</final_examination></c_grade></grade><grade s_no.="S0003"><c_grade c_no.="C001"><final_examination>80</final_examination></c_grade><c_grade c_no.="C002"><final_examination>76</final_examination></c_grade><c_grade c_no.="C003"><final_examination>52</final_examination><make-up_examination m_name="补考">56</make-up_examination><rebuild_examination r_name="重修">60</rebuild_examination> </c_grade></grade><grade s_no.="S0004"><c_grade c_no.="C001"><final_examination>45</final_examination><make-up_examination m_name="补考">55</make-up_examination><rebuild_examination r_name="重修">60</rebuild_examination> </c_grade><c_grade c_no.="C002"><final_examination>90</final_examination></c_grade><c_grade c_no.="C003"><final_examination>75</final_examination></c_grade></grade><grade s_no.="S0005"><c_grade c_no.="C001"><final_examination>50</final_examination></c_grade><c_grade c_no.="C002"><final_examination>56</final_examination><make-up_examination m_name="补考">60</make-up_examination> </c_grade><c_grade c_no.="C003"><final_examination>62</final_examination></c_grade></grade><grade s_no.="S0006"><c_grade c_no.="C001"><final_examination>70</final_examination></c_grade><c_grade c_no.="C002"><final_examination>80</final_examination></c_grade><c_grade c_no.="C003"><final_examination>90</final_examination></c_grade></grade><grade s_no.="S0007"><c_grade c_no.="C001"><final_examination>35</final_examination><make-up_examination m_name="补考">55</make-up_examination><rebuild_examination r_name="重修">60</rebuild_examination> </c_grade><c_grade c_no.="C002"><final_examination>45</final_examination><make-up_examination m_name="补考">60</make-up_examination> </c_grade><c_grade c_no.="C003"><final_examination>80</final_examination></c_grade></grade><grade s_no.="S0008"><c_grade c_no.="C001"><final_examination>90</final_examination></c_grade><c_grade c_no.="C002"><final_examination>85</final_examination></c_grade><c_grade c_no.="C003"><final_examination>49</final_examination></c_grade></grade></grades></s_grade_report>。
XML(⼆)有效的XML:DTD(⽂档类型定义)介绍与三种使⽤⽅式有效的XML: DTD(⽂档类型定义)介绍有效(Valid)的XML⽂档: ⾸先,XML⽂档是个格式正规的(Well-formed)XML⽂档; 其次,需要满⾜DTD的要求,这样的XML⽂档称为有效的(Valid)XML⽂档。
DTD DTD,即⽂档类型定义——Document Type Definition。
DTD⽤来描述XML⽂档的结构, ⼀个DTD⽂档包含: 元素(ELEMENT)的定义规则; 元素之间的关系规则; 属性(ATTLIST)的定义规则; 可使⽤的实体(ENTITY)或符号(NOTATION)规则。
DTD⽂档与XML⽂档实例的关系 类与对象; 数据库表结构与数据记录; 有了DTD,每个XML⽂件可以携带⼀个⾃⾝格式的描述。
有了DTD,不同组织的⼈可以使⽤⼀个通⽤DTD来交换数据。
应⽤程序可以使⽤⼀个标准DTD校验从外部世界接收来的XML数据是否有效。
可以使⽤DTD校验⾃⼰的XML数据。
如何⽣成DTD⽂档DTD⽂档有三种应⽤形式: 1.内部DTD⽂档<!DOCTYPE 根元素[定义内容]> 2.外部DTD⽂档<!DOCTYPE 根元素 SYSTEM "DTD⽂件路径"> 3.内外部DTD⽂档结合<!DOCTYPE 根元素 SYSTEM "DTD⽂件路径" [定义内容]>内部DTD ⼀个内部DTD的例⼦: 上半部分是DTD,下⾯是XML⽂档,⽂档要符合DTD。
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE poem [<!ELEMENT poem (author, title, content)><!ELEMENT author (#PCDATA)><!ELEMENT title (#PCDATA)><!ELEMENT content (#PCDATA)>]><!--为元素poem定义了三个⼦元素author title content,这三个元素必须要出现并且必须按照这个顺序少元素不⾏,多元素也不⾏--><!--指明author,title,content⾥⾯的内容是字符串类型--><poem><author>王维</author><title>⿅柴</title><content>空⼭不见⼈,但闻⼈语声。
1.1如何根据DTD文件创建出满足该DTD的XML文件的应用示例1.1.1根据DTD文件创建出满足该DTD的XML文件(完全可视化)
1、再新建一个新的XML文件newdbConnectionConfig.xml
(1)添加一个XML文件
(2)点击“Next”按钮
(3)再点击“Next”按钮,并选择目标DTD文件
(4)再点击“Next”按钮
(5)最后点击“Finish”按钮后,最后出现下面的结果
2、再修改该XML文件中的值为所期望的值
1.1.2根据DTD文件创建出满足该DTD的XML文件(半可视化)1、添加一个XML文件newdbConnectionConfig.xml
2、为该空的XML文件添加DTD的引用
3、再在DTD的监控下输入各个标签
(1)输入根标签,可以充分地应用辅助帮助
或者
(2)再输入根标签内的各个子标签
1.1.3体验在DTD中自定义实体的应用示例1、在DTD中添加自定义实体
编辑修改该实体
最后出现下面的结果
2、在XML文件中引用该实体。