用XML做通讯录实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
综
合
性
实
验
报
告
学院:
专业:
学号:
姓名:
计算机与信息技术学院综合性、设计性实验报告
专业:年级/班级:学年第学期
课程名称XML基础指导教师
本组成员
学号姓名
实验地点实验时间
项目名称个人通讯薄一的设计与实现实验类型综合性
一、实验目的
1、掌握XML文档的基本语法,能够得到格式良好的XML文档;
2、能够了解并掌握XML DTD的定义方法及其用途;
3、能够熟练使用XMLSPY来创建DTD文件及对应的有效的XML文件,并进行验证;
二、实验仪器或设备
学院提供公共机房,1台学生微型计算机。
三、总体设计(设计原理、设计方案及流程等)
设计原理:按照XML、DTD的语法规则来编写、保存文件XML、DTD文件。
设计方案及流程:
利用XML文档作为存储载体来存储个人通讯薄,按照以下要求设计并实现该通讯薄:
1、内含同学(classmate)、朋友(friend)、家人(home)等人员。
每条通讯录至少包
含以下信息:
a、姓名(name):必须有一个,其中包含一个枚举类型的性别(sex)属性;
b、性别(sex):必须有一个;
c、联系方式(tel):必须有一个;
d、QQ号:一个或多个;
e、地址(address):一个或多个;
f、备注(other):一个或多个;
g、根据需要可添加其它字段。
2、为该XML文档,编写DTD文档。
四、实验步骤(包括主要步骤、代码分析等)
1、按照以上设计编写一个规范的XML文档
<?xml version="1.0" encoding="UTF-8"?>
这句话放为XML文件的声明,作为文件的第一行,在其前面不能有空白、其他处理指令或注释。
XML声明以<?xml标识开始、以?>标识结束。
在该XML声明中,属性version 的值为1.0,指出了该XML文件使用的XML版本,目前该属性的值只可以取1.0。
属性encoding规定XML文件采用哪种字符集进行编码,在这encoding的值为“UTF-8”,那么标记的名字以及标记包含的文本内容中就可以使用汉字、日文、英文等。
最后,文件在保存的时候必须选择UTF-8编码来保存,否则会出错。
如果在XML声明中没有指定encoding的值,那么该属性的默认值为UTF-8。
在XML文档中,有且仅有一个根标记,其他标记都必须封装在根标记中如图所示:
在该XML文件中,根标记的名字为“txl”,在根标记中封装了一个或多个名字为“title”、“classmate”、“friend”、“home”的标记。
在名为“classmate”、“friend”、“home”
的标记下,又都包含了名为“name”、“sex”、“tel”、“QQ”、“address”、“other”的子标记,他们分别包含了姓名、性别、联系方式、QQ号、地址、备注这些信息。
至此,该XML文件可以称为一个规范的XML文件。
使用XMLSpy,使用按钮检验XML文件的规范性,所得结果为:
2、为该XML文档编写DTD文档,使其成为一个有效的XML文档
一个有效的XML文件如果和某个DTD文件相关联,并遵守该DTD文件规定的约束条件,就称为有效的XML。
DTD通过其中的元素来限制XML文件中的标记。
下列元素:<!ELEMENT txl (title,classmate+,friend+,home+)>约束XML文件的根标记“txl”可以有一个名为“title”的子标记,一个或多个名为“classmate”、“friend”、“home”的子标记,不可以有任何其他名称的子标记。
下列元素:<!ELEMENT classmate (name,sex,tel,QQ+,address+,other+)>
<!ELEMENT friend (name,sex,tel,QQ+,address+,other+)>
<!ELEMENT home (name,sex,tel,QQ+,address+,other+)>
约束了XML文件中名称为“classmate”、“friend”、“home”的标记恰好顺序地包含有名称分别为“name”、“sex”、“tel”、“QQ”、“address”和“other”子标记,而且约束名称为“classmate”、“friend”、“home”的标记包含的内容不可以有可显示的字符(允许含有空格、回行等空白字符)。
下列元素:<!ELEMENT title (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ELEMENT tel (#PCDATA)>
<!ELEMENT QQ (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ELEMENT other (#PCDATA)>
分别约束了XML文件中名称为“name”、“sex”、“tel”、“QQ”、“address”和“other”的标记所包含的内容只可以是文本数据,不可以包含有子标记。
在该XML文档中,name的sex属性是枚举类型,那么该属性只可以是枚举给出的值,即属性可以取的值是用符号“|”分隔的几个字符串中的任何一个。
下列元素:
<!ATTLIST name sex (男|女) #REQUIRED>约束了约束了sex属性值可以是男/女。
在保存DTD文件时,要选择“UTF-8”编码方式保存(在保存DTD文件时所选择的编码必须和它要约束的XML文件保持一致)。
在XML文件中,可以使用“文档类型声明”使当前XML文件与一个DTD文件相关联。
如:<!DOCTYPE txl SYSTEM "TXL.dtd"> 其中txl为XML文件的根标记,“TXL.dtd”是与该XML文件相关连的DTD的URI,即使用SYSTEM文档类型声明的格式为:<!DOCTYPE 根标记的名称 SYSTEM “DTD文件的URI”>。
使用XMLSpy,用按钮检验XML文件的有效性,所得结果为:
,所以,现在得到的XML文件是一个有效的XML文件。
五、结果分析与总结
一个规范的XML文件,应当满足以下语法规则:XML文件用“XML声明”开始;XML 文件有且仅有一个根标记;XML的非根标记必须封装在根标记中;非空标记必须由“开始标签”和“结束标签”构成;空标记没有“开始标签”和“结束标签”;XML文件中的全体标记必须形成树形结构,即标记不允许出现交叉。
在编写的XML文件中,如果选择的编码方式为“UTF-8”,XML文件必须选择UTF-8编码来保存;如果选择的编码方式为“gb2312”或“ISO-8859-1”,XML文件必须选择ANSI编码保存。
如果不按以上方式保存,会出错。
如果在要XML文档中使用特殊字符,可以使用字符引用或CDATA段。
如以下代码(CDATA段)
在浏览器中显示效果如下:
以下代码(实体引用):
显示如下:
在DTD文件中,元素的定义以“<!ELEMENT”开始,以“>”结束,其中,“<!ELEMENT”中的“<”、“!”和“ELEMENT”之间不能有空格。
在DTD文件中,用关键字ELEMENT定义一个元素(<!ELEMENT 标记名称标记的约束条件>)时,“<!ELEMENT”、“标记名称”和“标记的约束条件”之间必须有空格,若没有,则会报错。
如:把以上DTD文件中的
<!ELEMENT other (#PCDATA)>改为<!ELEMENTother(#PCDATA)>,打开XML文件时,会出现以下结果:
除此之外,DTD文件中元素的作用与其在DTD文件中的书写位置无关,DTD文件中不允许使用多个元素约束同一个标记。
需要特别注意的是:DTD文件是由元素构成的文本文件,需要使用文本编辑器编写、保存,在保存DTD文件时,选择的编码必须和它要约束的XML文件保持一致。
如不一样,检验有效性时会报错,例如本应该以“UTF-8”编码保存的,用“ANSI”编码保存,在
有汉字的地方会报错:
要想完成一个规范的、有效的XML文件,必须要按照XML、DTD的语法规则来编写、保存文件,这样才能避免出错。
教师签名:
年月日。