xml编程实验指导书.doc
XML编程实 验 指 导 书杨传健 编 写适用专业: 网络工程 计算机网络技术 滁州学院计算机科学与技术系 年 月目录 实验一:XML基本结构、基本语法4实验二:在XML文档中使用DTD6实验三:在XML文档中使用Schema9实验四:可扩展样式单语言XSL13实验五:级联式样式表CSS17实验六:基于XML的数据交换19实验七:数据岛23实验八:使用JDOM管理XML26实验一:XML基本结构、基本语法实验学时:4实验类型:验证一、实验目的(1)通过本实验,使学生能够熟悉XML文档编辑、解析、浏览工具。(2)掌握XML文档的基本结构和基本语法。(3)能够得到格式良好、有效的XML文档。 二、实验条件配置有windows记事本、写字板 或 XMLSpy 2006开发环境的计算机设备。三、实验原理及相关知识(1)XML名字空间是说明XML文件中的所有标记定义的来源说明(2)XML元素定义不能交叉,必须完全嵌套或不完全不嵌套(3)XML元素标记最好使用与内容相关的定义四、实验步骤(1)下载XMLSpy,并安装(2)在写字版中输入以下“图书信息”的XML文件 <?xml version="1.0" encoding="UTF-8"?><!- 这是一个用XML描述的例子 -><bookcase xmlns:xsi="http:/www.w3.org/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></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></zipcode><E-mail>bjb</E-mail></publishing-house></book></bookcase>(3)在XMLSpy中输入上述“图书信息”XML文件 方法1:从记事本中将上述内容拷贝入XMLSpy中. 方法2:逐步输入,注意XMLSpy中对XML元素标记的补全功能(即开始标记输入完毕后,XMLSpy会自动将结束标记补在输入点之后)。(4)在浏览器(如IE)中打开“图书信息.xml”文件,观察其显示,并反复进行元素的打开、折叠操作,理解XML元素嵌套的含义。(5)在XMLSpy中编写“person.xml”文件,要求该文件中包括五个人(Person)的相关信息,相关信息包括:性别(作为Person的属性)、姓名、年龄、地址(含有省、市、街道和邮编4个子元素)、电话号码、e-mail地址。(6)将编写好的“person.xml”使用XMLSpy 2006进行良构性验证,若有错误,按照提示进行修改。五、思考题及其它(1)如果允许XML中的元素相互交叉,其缺点是什么?(2)XML文件中的名字空间有什么用处?(3)XML的标记与关系数据库中的列名有什么区别?实验二:在XML文档中使用DTD 实验学时:4实验类型:设计一、实验目的(1)通过本实验,使学生能够了解并掌握XML DTD的定义方法及其用途(2)了解并掌握DTD元素声明的基本语法(3)了解并掌握DTD属性声明的基本语法(4)了解并掌握DTD实体声明的基本语法(5)了解并掌握DTD标记声明的基本语法(6)了解并掌握XMLSpy中基于DTD的XML文件输入 二、实验条件配置有windows记事本、写字板 或 XMLSpy 2006开发环境的计算机设备。三、实验原理及相关知识(1)XML DTD是对XML结构进行定义的机制(2)XML DTD本身不符合XML语法四、实验步骤(1)对以下“图书信息.xml”进行DTD定义(设DTD文件名为“图书信息.dtd”) <?xml version="1.0" encoding="UTF-8"?><!- 这是一个用XML描述的例子 -><bookcase xmlns:xsi="http:/www.w3.org/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></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></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文件显示(7)根据实验一中的“person.xml”文件,编写对应的“person.dtd”文件(8)使用XMLSpy 2006对“person.dtd”和“person.xml”进行合法性验证,若有错误,按照提示进行修改。五、思考题及其它(1)为什么要定义DTD?(2)DTD不符合XML语法有什么缺点?实验三:在XML文档中使用Schema实验学时:4实验类型:设计一、实验目的(1)通过本实验,使学生能够了解并掌握XML Schema的定义方法及其用途(2)了解并掌握Schema的基本结构(3)了解并掌握Schema的数据类型(4)了解并掌握Schema的元素声明(5)了解并掌握Schema的属性声明(6)了解并掌握XMLSpy中基于Schema的XML文件输入 二、实验条件配置有windows记事本、写字板 或 XMLSpy 2006开发环境的计算机设备。三、实验原理及相关知识(1)XML Schema是对XML结构进行定义的另一种机制(2)XML Schema本身符合XML语法四、实验步骤(1)对以下“图书信息.xml”进行Schema定义(设Schema文件名为“个人信息.xsd”) <?xml version="1.0" encoding="UTF-8"?><!- 这是一个用XML描述的例子 -><bookcase xmlns:xsi="http:/www.w3.org/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></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></zipcode><E-mail>bjb</E-mail></publishing-house></book></bookcase>(2)书写XML Schema定义头部<?xml version="1.0" encoding="UTF-8"?><!-W3C Schema generated by XMLSpy v2007 ()-><xs:schema xmlns:xs="http:/www.w3.org/2001/XMLSchema"> <xs:annotation> <xs:documentation>JinYanZhong XML File Schema Test </xs:documentation> </xs:annotation> </xs:schema>(3)定义bookcaseType类型(添加在处)<xs:element name="bookcase" type="bookcaseType"/> <xs:attribute name="type"> <xs:simpleType><xs:restriction base="xs:string"> <xs:enumeration value="科技"/> <xs:enumeration value="教育"/></xs:restriction></xs:simpleType> </xs:attribute>(4)定义bookcase元素(紧随bookcaseType类型定义之后) <xs:complexType name="bookcaseType"> <xs:sequence><xs:element name="book" type="bookType"/> </xs:sequence> </xs:complexType>(5)定义bookType元素类型(里面引用定义authorType, pub-houseType) <xs:complexType name="bookType"> <xs:sequence><xs:element name="b-name" type="xs:string"/><xs:element name="author" type="authorType"/><xs:element name="price" type="xs:string"/><xs:element name="publishing-house" type="pub-houseType"/> </xs:sequence></xs:complexType> (6)定义authorType及pub-houseType元素类型 <xs:complexType name="authorType"><xs:sequence><xs:element name="name" type="xs:string"/><xs:element name="E-mail" type="xs:string"/></xs:sequence> </xs:complexType> <xs:complexType name="pub-houseType"><xs:sequence><xs:element name="p-name" type="xs:string"/><xs:element name="address" type="xs:string"/><xs:element name="zipcode" type="xs:string"/><xs:element name="E-mail" type="xs:string"/></xs:sequence> </xs:complexType>(7)在XMLSpy中新创建一个基于“图书信息.xsd”的XML文件,体会该方法的方便快捷。 (8)在IE中打开带有Schema定义的“图书信息.xsd”,观察符合Schema定义及不符合Schema定义的XML文件显示。(9)根据实验一中的“person.xml”文件,编写对应的“person.xsd”文件(10)使用XMLSpy 2006对“person.xsd”和“person.xml”进行合法性验证,若有错误,按照提示进行修改。五、思考题及其它(1)Schema与DTD的共同点和区别是什么?(2)Schema符合XML语法有什么优点?实验四:可扩展样式单语言XSL实验学时:4实验类型:设计一、实验目的(1)掌握使用XSL显示XML文件的基本方法(2)理解CSS与XSL 的区别 二、实验条件包配置有windows记事本、写字板 或 XMLSpy 2006开发环境的计算机设备。三、实验原理及相关知识(1)XSL实际包含三方面的内容:XSLT,XPath以及XSL格式化对象(2)XSL的定义最终是由XSLT来执行完成的(3)XPath对XML文件片段进行查找、定位(4)格式化对象将XSL转换结果进行显示四、实验步骤(1)对以下“图书信息.xml”进行XSL定义(设XSL文件名为“图书信息.xsl”)<?xml version="1.0" encoding="GB2312"?><Booklist> <Book> <BookID></BookID> <BookType>计算机</BookType> <BookName>算法与数据结构</BookName> <Auth>严蔚敏 陈文博</Auth> <Publisher>清华大学出版社</Publisher> <Price>24</Price> <PubDate>2002-1-1</PubDate> <Quantity>10</Quantity> </Book> <Book> <BookID></BookID> <BookType>计算机</BookType> <BookName>软件工程导轮</BookName> <Auth>张海藩</Auth> <Publisher>清华大学出版社</Publisher> <Price>5.4</Price> <PubDate>1987-6-1</PubDate> <Quantity>5</Quantity> </Book> <Book> <BookID></BookID> <BookType>计算机</BookType> <BookName>XML/JSP网页编程教材</BookName> <Auth>吴艾</Auth> <Publisher>北京希望电子出版社</Publisher> <Price>46</Price> <PubDate>2001-7-1</PubDate> <Quantity>15</Quantity> </Book> <Book> <BookID></BookID> <BookType>工具</BookType> <BookName>汉语成语字典</BookName> <Auth>李一华 吕德申</Auth> <Publisher>四川辞书出版社</Publisher> <Price>12</Price> <PubDate>1992-1-1</PubDate> <Quantity>10</Quantity> </Book> <Book> <BookID></BookID> <BookType>机械</BookType> <BookName>机电控制工程</BookName> <Auth>高钟毓 王永梁</Auth> <Publisher>清华大学出版社</Publisher> <Price>19.8</Price> <PubDate>1994-9-1</PubDate> <Quantity>19</Quantity> </Book> <Book> <BookID></BookID> <BookType>工具</BookType> <BookName>英华大字典</BookName> <Auth>郑易里</Auth> <Publisher>商务印书馆</Publisher> <Price>18.5</Price> <PubDate>1984-11-1</PubDate> <Quantity>2</Quantity> </Book></Booklist>(2)书写XSL定义头部<?xml version="1.0" encoding="GB2312"?>(3)编写根节点匹配模板(注意xsl:stylesheet元素是必须要的)<xsl:stylesheet xmlns:xsl="http:/www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> <body> <table border="2" style="position:absolute;top:30px;left:30px;font:15px"> <tr> <td style="text-align:center">BookID</td> <td style="text-align:center">BookType</td> <td style="text-align:center">BookName</td> <td style="text-align:center">Auth</td> <td style="text-align:center">Publisher</td> <td style="text-align:center">Price</td> <td style="text-align:center">PubDate</td> <td style="text-align:center">Quantity</td> </tr> </table> </body> </html> </xsl:template></xsl:stylesheet> (4)编写XPath节点booklist/book的匹配模板(添加在处)<xsl:for-each select="Booklist/Book"> <tr> <td style="text-align:center"><xsl:value-of select="BookID"/></td> <td style="text-align:center"><xsl:value-of select="BookType"/></td> <td style="text-align:center"><xsl:value-of select="BookName"/></td> <td style="text-align:center"><xsl:value-of select="Auth"/></td> <td style="text-align:center"><xsl:value-of select="Publisher"/></td> <td style="text-align:center"><xsl:value-of select="Price"/></td> <td style="text-align:center"><xsl:value-of select="PubDate"/></td> <td style="text-align:center"><xsl:value-of select="Quantity"/></td> </tr> </xsl:for-each> (5)在IE中打开带有XSL定义的“图书信息.xml”,观察文件显示结果(带XSL定义的XML文件头部如下所示)。 <?xml version="1.0" encoding="GB2312"?><xsl:stylesheet xmlns:xsl="http:/www.w3.org/TR/WD-xsl">(6)根据“图书信息.xml”,编写“图书信息查询.xsl”,要求能够以表格方式输出BookName的值是以“算法”开头的图书的所有信息。五、思考题及其它(1)XSLT处理上述“图书信息.xsl”的过程是什么?IE中有XSLT处理器吗?(2)如果只需要显示其中某几本图书,则对应XSL应怎样实现?实验五:级联式样式表CSS实验学时:2实验类型:设计一、实验目的(1)了解并掌握CSS的基本语法及创作步骤(2)了解并掌握XML文档中使用CSS的引入式方法(3)了解并掌握XML文档中使用CSS的嵌入式方法二、实验条件包配置有windows记事本、写字板 或 XMLSpy 2006开发环境的计算机设备。三、实验原理及相关知识(1)CSS是对XML元素的显示进行定义的方法(2) CSS不符合XML语法四、实验步骤(1)对以下“联系人.xml”进行CSS定义(设CSS文件名为“联系人.css”)<?xml version="1.0" encoding="GB2312" standalone="no"?><?xml-stylesheet type="text/css" href="ex5-20.css"?><联系人列表> <联系人> <姓名>李 明</姓名> <电话></电话> </联系人> <联系人> <姓名>林 琳</姓名> <电话></电话> </联系人></联系人列表>(2)定义“联系人列表”元素的显示(由“联系人”组成)联系人列表display:block;(3)定义“联系人”元素的显示联系人 display:block; position:center; (4)定义“姓名”及“电话”元素的显示姓名 display:block; color:blue; font-family:Times,Arial,serif; font-style:normal; font-size:16pt; font-weight:bold; 电话 display:block; color:red; font-family:Times,Arial,serif; font-style:italic; font-size:16pt; font-weight:bold; (5)在XML文件中指定对应CSS样式表<?xml version="1.0" encoding="GB2312" standalone="no"?><?xml-stylesheet type="text/css" href="ex5-20.css"?><联系人列表> <联系人> <姓名>李 明</姓名> <电话></电话> </联系人> <联系人> <姓名>林 琳</姓名> <电话></电话> </联系人></联系人列表>(6)在IE中打开带有CSS定义的“联系人信息.xml”,观察显示结果。五、思考题及其它(1)CSS的基本作用是什么?(2)CSS中元素显示定义之间有嵌套关系吗?实验六:基于XML的数据交换实验学时:4实验类型:综合一、实验目的(1)通过本实验,使学生能够了解基于XML数据交换的基本原理(2)掌握基于SQL Server进行XML数据发布的方法(3)掌握基于XML数据交换的基本方法 二、实验条件包配置有windows记事本、写字板或XMLSpy 2006、IIS、SQL Server开发环境开发环境的计算机设备。三、实验原理及相关知识(1)利用关系数据库发布XML数据(2)发布为XML格式的数据可以进行交换四、实验步骤(1)配置IIS服务器:建立用于映射虚拟目录的文件夹;创建通过IIS访问的数据库;配置虚拟目录。(2)使用HTTP查询SQL Server直接在浏览器地址输入带有查询语句的URL,以对SQL Server数据库执行查询操作,并将查询结果返回到浏览器中,如下图所示(3)查询SQL Server 2000 pubs数据库中的Astock_cus表内容,并以XML格式返回http:/localhost/sqliis?sql=select * from Astock_cus for xml auto &root = A_H_stockinfohttp:/localhost/sqliis?sql=select * from Astock_cus for xml auto, elements & root = A_H_stockinfo(4)返回结果还可包括schema内容http:/localhost/sqliis?sql=select * from Astock_cus for xml auto, xmldata,elements &root=A_H_stockinfo&outputencoding=gb2312 (5)首先建立一个数据查询界面,它由HTML网页实现;当点击查询界面中的执行按钮时,查询语句作为参数被传送至服务器端调用一个ASP程序来处理,该程序通过ADO接口与指定数据库联接,执行查询语句,并按XML格式将查询结果返回到客户端浏览器中HTML文档代码<html><body><h2>ADO查询系统示例</h2><form action="http:/localhost/myiis/ado_sql03.asp“ method="get"><p>sql查询命令:<input type="text" size="100" name="editbox"></p><input type="submit" value="执行"></form></body></html>Asp程序清单<%Response.contentType="text/xml"%><?xml version="1.0" encoding="gb2312"?><客户持股信息><%set cn=Server.CreateObject("adodb.connection")cn.Open "Driver=SQL Server;Server=GU-01;Uid=gu02;Pwd=gu02;Database=pubs;"strSQL=request("editbox")set objRs=cn.Execute(strSQL)do while not objRs.Eof%><客户><客户姓名><%=objRs("name")%></客户姓名><股东代码><%=objRs("stockholder")%></股东代码><浦发银行><%=objRs("A")%></浦发银行><大连热电><%=objRs("A")%></大连热电><华工科技><%=objRs("A")%></华工科技><兴和基金><%=objRs("A")%></兴和基金></客户><% objRs.movenextLoopobjRs.Closecn.Close set cn=nothing%></客户持股信息>查询操作及客户端得到返回结果五、思考题及其它(1)利用XML进行数据交换的优点是什么?(2)将XML中的内容导入关系数据库中应该使用什么方法?实验七:数据岛实验学时:4实验类型:设计一、实验目的(1)了解并掌握内部数据岛的定义及使用方法(2)了解并掌握外部数据岛的定义及使用方法 (3)了解并掌握记录集的使用方法二、实验条件包配置有windows记事本、写字板 或 XMLSpy 2006开发环境的计算机设备。三、实验原理及相关知识(1)数据岛是存在于HTML网页中的XML代码段(2)数据岛通过在HTML网页中使用<XML>标记使HTML与XML的优势互补四、实验步骤(1)输入以下带有内部数据岛的HTML文件<html><head><title>数据岛示例</title></head><body><xml id="stock"> <stockholder> <name>张祥</name> <A>10000</A> <A>8000</A> <A>15000</A> <A>6000</A> </stockholder></xml><p>tagname的值:<input type=text size="10" name="t1"></p><p>text的值:<input type=text size="50" name="t2"></p><p><input type="button" value="数据岛演示" name="show"></p></body> </html>(2)在IE中打开上述文件,观察效果(3)输入以下XML文件(作为外部数据岛stock.xml)