《XML技术报告面向图书管理信息的XML程序设计.doc》由会员分享,可在线阅读,更多相关《XML技术报告面向图书管理信息的XML程序设计.doc(30页珍藏版)》请在三一办公上搜索。
1、重庆科技学院XML技术报告 院(系):电气与信息工程学院 班 级: 学生姓名: 学 号: 课程名称:_ _ XML技术_ _ 报告题目: 面向图书管理信息的XML程序设计_ _ 完成日期: 2010年 11月 22日 指导教师评语: _ _ _ _ _ _ 报告成绩:_ _ _ 教师签名:_ _ 摘 要随着印刷技术的发展,知识的不断翻新,以前的四书五经上的东西已经再也不能够满足中国人类发展的需要。学生需要的更多的读书来充实自己的知识库,了解世界的最新信息,所以有必要为图书馆设定一套管理系统,面向图书馆的信息的XML的程序设计被提了出来。这项设计旨在针对各大高校的图书馆书籍信息的管理,为了使系统
2、管理员更方便的操作书籍信息,达到书籍信息的快速查询,添加,修改等。该文档包含了丰富的XML知识,其中有XML文件组织数据、DTD文件检测XML文件有效性、XSL样式表文件显示数据格式、Java版的DOM解析器设计解析XML文件,该项设计将面向图书管理信息的数据组织技术解析得非常透彻,清晰的设计思路能够让XML程序设计人员和读者获益匪浅。关键词:书籍信息,XML程序设计目 录摘 要I目 录II1需求分析11.1设计的目的11.2设计的基本要求12概要设计32.1 根树形结构图32.2 子节点树形结构图32.2.1书籍详细结构图32.2.2 管理员信息结构图63详细设计73.1 Java DOM解
3、析器程序设计73.1.1 自定义类设计73.1.2 主函数设计83.1.3 程序流程图83.2 XSL样式表调用设计104系统测试114.1 XML文件规范性测试114.2 XSL样式表文件显示测试134.3 XML有效性验证134.4 Java DOM解析器测试145 各模块代码文件155.1 xml关联文件155.2 xsl关联文件175.3 DTD关联文件225.4 Java程序源代码23总 结25致谢26参考文献271需求分析1.1设计的目的本套信息管理系统旨在为图书馆书籍信息提供更好的信息管理,使用xml语言描述图书馆内书籍的详细信息。1.2设计的基本要求1、 选用合适的编辑器,编写
4、一个XML文件,应至少包括下述信息内容: 该图书馆的基本信息:图书馆的名字、地点、容量、开放时间等。书目 书目1 书目基本信息(书籍名称、单价、ISBN、书目类别、作者、书籍编号) 入库信息(入馆时间、入馆数量、经办人) 书目2书目3书目N出版社信息 出版社基本信息(名称、地点、标志、联系方式(电话、网址、传真、email) 出版社主要出版图书信息(书目类型、出版方向,丛书名称)管理员信息(编号、姓名、联系方式、管理的范围)2、针对该XML文件,画出其相应的树状结构图。3、针对所编写的XML文件,编写其相应的DTD文件 ,并使用解析器验证其有效性,对验证结果抓图。4、针对所编写的XML文件,编
5、写合适的XSL文件,将书目基本信息打印成表格,并用IE浏览器进行浏览并截图。5、使用JAVA编程语言,对XML文件进行解析: 1)显示该xml文件的所有节点、属性的名字; 2)同时显示该xml文件所有标记的文本数据; 3)计算书的平均单价并进行输出。1.3 xml程序代码要求1、xml文件中应该包括文本内容、标记、属性、命名空间,混合标记等的内容。2、dtd文件应该有相应的结果截图。3、xsl文件应用到规范中的常用技巧,例如模板调用、for-each、value-of、xsl标记等。4、解析器结果应该有抓图。5、形成的代码交老师验证。2概要设计本套xml文件系统的源文件中,包含一个xml文件,
6、里面详细的记录了这套管理系统的结构设计模型,使得整个设计看起来相当清晰。2.1 根树形结构图由于本次程序设计是针对图书馆而设计的,所以根节点是图书馆,从实验的需求上面可以看见,下面所包含的分支节点,他们分别是:名字、地点、容量、开放时间、书目、出版社信息和管理员信息等,如下图所示:图书馆名 字地 点开放时间书目信息出版社信息管理员信息图2.1 根树形节点图2.2 子节点树形结构图2.2.1书籍详细结构图图书馆根节点包括5个详细信息,其中书籍具有书籍基本信息以及入库信息,如下图所示:书目信息图2.2 书目节点信息书籍信息入库信息其中书籍基本信息有包括:书籍名称、单价、ISBN、书目类别、作者和书
7、籍编号,如图2.3所示:书籍基本信息书籍名称单 价书籍类别作 者书籍编号图2.3 书籍基本信息节点图而“入库信息”有包括:入库时间,如宽数量,经办人等。如下图所示:入库信息入库时间入库数量经办人图2.4 入库信息节点图“出版社信息”包含的子节点有:出版社基本信息和出版社主要出版图书信息,而“出版社基本信息”包含的子节点有:名称、地点、标志和联系方式,“出版社主要出版图书信息”包含的子节点有:书目类型、出版方向和丛书名称,如图2.5:出版社基本信息名 称地 点标 志联系方式图2.5 出版社信息出版社信息2.2.2 管理员信息结构图“管理员信息”包含的子节点有“管理员”,该子节点包含的子节点有:编
8、号、姓名、联系方式和管理范围等,如下图所示:管理员信息编 号姓 名联系方式管理区域图2.6 管理员信息结构图3详细设计3.1 Java DOM解析器程序设计DOM解析器设计的主要目地是解析XML文件中的数据。使用JAVA编程语言,对XML文件进行解析:1、显示该xml文件的所有节点、属性的名字;2、同时显示该xml文件所有标记的文本数据;3、计算书的平均单价并进行输出。XMLInfo.java文件(见附录)中,能够显示所有节点名、属性名和文本数据,同时输出了所有书籍的平均价格。3.1.1 自定义类设计在TestValidate.java文件中,自定义类为GiveData。GiveData,包含
9、私有成员:private ArrayList bookCount = new ArrayList(); private ArrayList price = new ArrayList(); bookCount是记录每一类书的数量,而price是记录每一类书的单价。GiveData,包含方法:public double getAverage(); public void showPrice();public void output(NodeList nodeList);getAverage()方法返回书籍的平均单价,showPrice()方法在屏幕上显示平均单价,output( NodeList
10、 nodeList) 函数是递归输出和nodeList中保存的Node类型节点相关的数据,当节点类型是Element节点时,输出节点名字,当节点类型是Text时就输出节点中的数据。3.1.2 主函数设计1) 主函数中,先构造一个GiveData类的对象giveData。2)DocumentBuilderFactory.newInstance3)factory.setIgnoringElementContentWhitespace(true)对输出做空白处理。4)factory.newDocumentBuilder()实例化DocumentBuilder类的对象domParser 。5)domP
11、arser对象的parse方法(参数为File类的对象)实例化Document的一个对象document。6)document对象的getDocumentElement()方法实例化Element的对象root,再将root所获取的子节点放在NodeList的对象nodeList对象中。7)调用giveData的output()方法显示XML文件信息,然后调用giveData的showPrice()方法显示书籍的平均单价。8)捕获异常。3.1.3 程序流程图TestValidate.java文件中,主函数程序流程图开 始GiveData类对象实例化DocumentBuilderFactory类
12、对象输出空白处理实例化DocumentBuilder类对象实例化Document类对象实例化Element类对象将获取的子节点存入NodeList的对象中output()方法显示XML文件信息showPrice()方法显示平均单价结 束图3.1 主函数程序流程图3.2 XSL样式表调用设计面向图书管理信息的XML程序设计中包含了xsl_file.xsl文件(见附录),能够使书目基本信息非常漂亮地显示在浏览器中。 首先在XSL编码中添加一个首行为一列,第二行为六列(书籍名称,单价(元/本),书目类别,作者,书籍编号)的Table表,然后在第二行下添加代码: xsl:for-each循环调用模板。
13、添加两个非主模板,代码如下: 第一个模板的作用是寻找“书目基本信息”下所有子节点标记,第二个模板的作用是显示子标记的内容。4系统测试4.1 XML文件规范性测试用VS2005编写完xml_file.xml文件后,点击运行,在浏览器中截图如下。行xml_file.xml文件声明和节点数据显示如图4.1。 图4.1 声明和节点信息显示图“书目”节点数据显示如图7.2。图4.2 书目节点信息显示图“出版社信息”节点数据显示如图4.3。图4.3 出版社信息节点显示图“管理员信息”节点数据显示如图4.4。图4.4 管理员节点信息显示图4.2 XSL样式表文件显示测试XSL语言为XML提供显示数据的外观,
14、按照要求将书目基本信息打印成表格,在VS2005下运行xml_file.xml文件,显示如图4.5。图4.5XSL样式表显示测试4.3 XML有效性验证将newxml.xml文件路径输入到验证XML文件有效性的Java程序中,其结果显示如图4.6所示。图4.6 XML有效性验证4.4 Java DOM解析器测试用Java语言编写DOM解析器对XML文件进行解析。显示xml_file.xml文件的所有节点名、属性名和文本数据的显示图如下。5 各模块代码文件5.1 xml关联文件 科院图书馆 大学城科技学院 早上8:00-晚上21:00 幸福像花儿一样红 0001 鲁迅 55 人民出版社 北京 1
15、3123456789 WWW 45666655 jhaskjabk 20080910 1000 小小洪 坏蛋是怎样炼成的 0002 谢文东 111 电子出版社 上海 # 13987564222 WWW 89955258 gangtie 20100101 20000 王五 花儿问什么这样红 0003 阳静 66 哈尔滨出版社 哈尔滨 ¥ 13555225559 WWW 84684641 jhaskjabk 20090110 300 小小黑 110 刘真 固定电话=13246666555 手机=1311111111 一楼管理员 111 刘欢 固定电话=13123654564 手机=13856246
16、236 二楼管理员 112 魏世红 固定电话=15455451512 手机=13545454545 三楼管理员 5.2 xsl关联文件 图书馆 图书馆 图书馆基本信息 图书馆名字 图书馆地点 开放时间 书名 书籍编号 作者 单价 出版社信息 管理员信息 编号 姓名 联系 管理范围 图书馆 图书馆 图书馆基本信息 名字 地点 开放时间 书名 书籍编号 作者 单价 !- 管理员信息 编号 姓名 联系方式 管理范围 !- 5.3 DTD关联文件5.4 Java程序源代码import javax.xml.parsers.*;import org.xml.sax.helpers.*;import org
17、.xml.sax.*;import java.io.*;import org.w3c.dom.*;import java.util.Scanner;public class TestValidate public static void main(String args) String fileName=null; try Scanner reader=new Scanner(System.in); System.out.print(请输入要验证有效性的XML文件的名字:); fileName=reader.nextLine(); DocumentBuilderFactory factory=
18、DocumentBuilderFactory.newInstance(); factory.setValidating(true); DocumentBuilder domParser= factory.newDocumentBuilder(); MyHandler handler=new MyHandler(); domParser.setErrorHandler(handler); Document document=domParser.parse(new File(fileName) ; if(handler.errorMessage=null) System.out.println(fileName+文件是有效的); else System.out.println(fileName+文件不是有效的); catch(Exception e)