第三章数据描述与数据交换_第1页
第三章数据描述与数据交换_第2页
第三章数据描述与数据交换_第3页
第三章数据描述与数据交换_第4页
第三章数据描述与数据交换_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据描述与数据交换XML简介(1)

XML(eXtensibleMarkupLanguage)是由W3C于1998年2月发布的一种标准。它是SGML的一个简化子集,它将SGML的丰富功能与HTML的易用性结合到Web应用中,以一种开放的自我描述方式定义数据结构,在描述数据内容的同时能突出对结构的描述,从而体现出数据之间的关系。以XML为基础的新一代WWW环境是直接面对Web数据的,不仅可以很好地兼容原有的Web应用,而且可以更好地实现Web中的信息共享与交换。

XML简介(2)XML的主要特点如下:(1)可扩展性:XML是一种元标记语言,用户可以根据自己的需要和习惯来定义标记和属性,从而可以以一种更有意义的方式描述信息,这方面与HTML存在根本性的区别。XML中的标签是用来标识数据内容本身的,就像我们在程序中给变量取一个比较容易理解的名称一样。例如:<姓名>小明</姓名>

XML简介(3)(2)结构性:XML数据存储格式不受显示格式的制约,一般包括三个要素:数据、结构以及显示方式。XML把文件的三要素独立开来,分别处理。首先把显示格式从数据内容中独立出来,保存在样式文件(StyleSheet)中,这样如果需要改变文档的显示方式,只要修改样式文件就行了。于是就把资料的内容和其表现形式合理地隔开,从而大大提高XML数据的可理解性、可交换性和重用性。

XML简介(4)(3)平台独立性:XML文件是纯文本,独立于平台和应用。

由于上述特点,XML目前正在迅速成为网络数据描述和交换的标准。

XML文件的正规性和有效性(1)与HTML相比,XML的格式要严格的多。它包括两方面的要求,即格式的正规性和文件的有效性。

实际使用的XML文件必须是一个格式正规的XML文件,否则,解析器或应用程序就不能对其进行有效的分析与处理。

XML文件的正规性和有效性(2)格式正规的XML文件的主要要求:每个元素都要有一个起始标签和一个结束标签;每个XML文档都要有一个唯一的根元素;元素和属性的名字区分大小写;元素必须正确的嵌套,在结构上不能交迭,如下的嵌套是不正确的:<a>..<b>..</a>..</b>;有些字符内容不能直接使用,必须由其它的字符组合代替(例如使用<;代替<);属性的值必须包含在引号(单引号或双引号)之中;空元素可以用简单的方式描述(如<a></a>可以简化成<a/>)。XML文件的正规性和有效性(3)格式正规的XML文件由三部分组成:(1)序言(可选)指出现在文件的开始标签或根元素之前的信息,由它们提供有关XML文件总体情况的信息,如编码方式、样式表等。(2)文件元素其定义形式是一个简单的层次树,每个文档都有且仅有一个根结点,称其为文件根。(3)尾声(可选)出现在文件元素之后的内容,可包含注释或空白。XML文件的正规性和有效性(4)元素是xml文件的组成部分,元素可由其它元素、其它类型数据等组成。XML元素间的关系:由于XML元素必须规定根元素,所以根元素以下的元素都为子元素,相互之间为兄弟元素关系。为了数据存储方便,应确保子元素内容与根元素相关,并且各个兄弟元素间最好也有逻辑上的关联。XML元素内容:XML文件是用于存储数据的,因此它一定要有内容,内容可以是空白内容,也可以是简单的文本或单一数据,也可以是复杂的多个数据列,甚至还可以是其它的分类子元素。XML元素命名规则:同Java、C等命名规则类似,可以是英文字母或中文,可以用数字和字母作为名字开头,但名称中不能出现空格,可以用下划线取代空格的功能来进行详细命名,而且在名称中严禁出现冒号。

属性是包含关于元素的额外信息的元素部分。在XML中,属性值可以被用来为元素添加额外的说明信息。

XML文件的正规性和有效性(5)<?XMLversion=“1.0”,encode=“GB2312”?><booklist><book><书名>计算机网络</书名><作者>谢希仁</作者><出版社>电子工业出版社/</出版社></book><book><书名>微机原理及应用</书名><作者>周明德</作者><出版社>清华大学出版社</出版社></book></booklist>XML文件的正规性和有效性(6)booklistbook书名计算机网络作者谢希仁出版社电子工业出版社book书名微机原理及应用作者出版社周明德清华大学出版社XML文件的正规性和有效性(7)

有时,XML文件是正规的还不够,还要求它是有效的,即要遵循有关的DTD或Schema所建立的规则。一个有效的XML文件只能包含DTD或Schema所规定的元素和属性,而且还要符合它们所确定的嵌套规则和数据类型。

当我们利用DTD或Schema检查XML文件的有效性时,就是对XML文件的确认。文档类型定义DTD

XML不同于HTML,XML并没有自己固定标准的标记以及属性。而用户要使用自己的标记、属性或者是实体参考等就要自行定义它们。而这些定义的工作要在DTD文档类型定义中进行。DTD为XML文件定义了该文件中应该包含的或者是可以包含的元素、标记、属性和实体的一个清单以及它们之间的相互关系。

XMLschema

XMLSchema为一类文件建立了一个模式,规范了文件中的标签和文本可能的组合形式。它不仅包括了DTD能实现的所有功能,而且它本身就是规范的XML文件。XMLSchema提供了一系列新特色,大大弥补了DTD的不足:支持数据类型、支持属性分组、可以更新定义的内容模式、支持名字空间(名字空间的作用是指明元素是属于哪个文件的)。XML的应用领域(1)描述数据。与样式表相结合形成形式多样的数据表现形式。(2)通过对XML文档的操作实现数据传输。(3)通过统一的DTD或Schema产生的XML文件完成对异构数据源的数据采集和数据整合,消除已有的数据孤岛,有利于网络环境下的系统集成。(4)使用XML数据形式产生图形、动画、声音。ASP简介

ASP(ActiveServerPage)是一种服务器端的开发环境,利用它开发者可以把超文本、任何脚本和ActiveX组件组合在一起,从而生成动态的、交互的Web应用程序。ASP目前已经成为Web应用程序开发的主流环境。ASP的基本工作原理

ASP文件的扩展名均为.ASP,一个ASP文件相当于一个可执行文件,它必须被放在Web服务器上一个有执行权限的目录下。当用户从客户端浏览器输入一个ASP文件的地址后,浏览器就将这个URL请求发给Web服务器,Web服务器开始调用指定的ASP文件,并由嵌入Web服务器的ASP解释程序将被请求的ASP文件从头读到底,执行每一条命令,然后动态生成一个HTML页面并传送给客户端浏览器。ASP中的XML应用(采用VBScript语言)通过ADO获取数据库的信息产生XML数据岛使用DOM对XML文件进行解析和处理ADO简介

ADO(ActiveXDataObject)又称ActiveX数据对象,是微软推出的一项数据库链接技术,它提供了程序开发人员实时存取各类数据库(如Access、Oracle、SQLServer、Sybase)的能力,使用ADO可以轻松地完成对各类数据库的查询、存取等操作。

通过ADO连接数据库

首先,通过ODBC设置源数据库db1,然后,声明一个Connection对象cn_ebookstore,用来连接数据库:Setcn_ebookstore=CreateObject("ADODB.Connection")再通过以下语法连接到数据库db1:cn_ebookstore.Open(DNS=“db1”)查询需要的信息

假设通过产品名查询。数据库中的“产品”表记录了产品的详细信息。Session("query")="SELECT*FROM产品"&_“WHEREchanmingLIKE‘%”&Request(“txtQuery”)&“%‘”将查询得到的记录保存在recordset对象rsBookdetail中。

SetrsBookdetail=cn_ebookstore.Execute(Session(“query”))XML数据岛

XML数据岛是将XML与HTML结合最直接的方法,它允许直接编写script来浏览XML文件而不需要通过对象标记<OBJECT>的引导。大多数属于Well-FormedXML文件的内容都可以放在XML数据岛之中。对IE5.x而言,可在HTML网页中使用标记<XML>来建立一个XML数据岛,并将XML内容放置于该<XML>标记之内。除此之外,也可通过<XML>标记的SRC属性来指定一个外部的XML文件作为XML数据岛的内容。要引用XML数据岛内的数据,可以使用HTML的某些特定标记来对应XML数据岛的某些标记,则HTML标记就会自动获取该XML标记的数据。制作XML数据岛

制作一个XML数据岛,其内容就是Recordset对象rsBookdetail的各个字段值,也就是该产品的详细信息。<xmlid="Detailsdso"><?xmlversion="1.0"?><business><产品名称><%=rsBookdetail("chanming")%></产品名称><产地><%=rsBookdetail("chandi")%></产地><等级><%=rsBookdetail("dengji")%></等级><计价单位><%=rsBookdetail("jijiadanwei")%></计价单位><单价><%=rsBookdetail("danjia")%></单价><规格><%=rsBookdetail("guige")%></规格></business></xml>DOM简介

DOM(DocumentObjectModel)即文档对象模型,也可以说是一种API的标准。当我们将文件视为一个文档对象(DOM)时,我们就可以通过(script)程序语言调用DOM对象,来对该文件做数据的访问,并且利用程序对获取的对象数据做进一步的应用操作。

各种DOM对象Node:(1)Document文档对象,也是树状结构的根结点。(2)Element元素结点对象,代表的是XML的某一元素。(3)Attr属性结点对象,代表的是XML的某一个元素中的某一个属性。(4)Text文字结点对象,也就是XML元素或属性的内容。Nodelist:结点列表对象,是由一些结点所组成的集合,可以通过索引方式,获取其中的单一结点。ParseError:剖析对象,可以用来剖析XML文件。XMLDOM

XMLDOM的设计思路为:将所有的文件放入树的各个结点之中。由于结点是一个Node对象,因此提供了很多函数和属性(如firstChild、lastChild、previousSibling、nodeName、nodeValue、nodeType等),通过这些函数与属性,配合Script程序,将可以完成所需要的各项工作。结点对象的各项属性说明属性返回对象说明范例ownerDocumentDocument对象返回拥有该结点的文件对象currentNode.ownerDocumentParentNodeNode对象返回该结点的父结点对象currentNode.parentNodeChildNodesNodelist对象返回该结点的所有子结点所形成的结点列表对象,并可利用索引方式取出各个子结点。currentNode.childNodes(0)currentNode.childNodes(1)……currentNode.childNodes(n)FirstChildNode对象返回第一个子结点对象currentNode.firstChildLastChildNode对象返回最后一个子结点对象currentNode.lastChildpreviousSiblingNode对象返回上一个兄弟结点对象currentNode.previousSiblingNextSiblingNode对象返回下一个兄弟结点对象currentNode.nextSibling通过DOM对象读取XML数据岛

建立一个文档对象,并通过该对象读取XML数据岛的数据。//声明了一个XMLDOM文档对象docBook,并直接设置为XML数据岛Detailsdso的属性XMLDocument的返回值,也就是整个XML数据岛的内容SetdocBook=detailsdso.XMLDocument解析XML文件

当DOM树产生之后,所有的数据都放在该树的某些结点中,于是可以通过对象的相关属性来读取这些数据或浏览其他的结点。

setrootNode=docBook.documentElement//获取根结点//观看根元素下的各个子元素i=0forEachchildinrootNode.childNodessetC1=rootNodes.childNodes.item(i)MsgBoxC1.xmli=i+1Next

数据整合XML数据岛xmldso(数据来自本地端数据库)<xmlid="xmldso"><?xmlversion="1.0"?><employeelist><employee><员工编号>1</员工编号><姓名>丁当</姓名><出生年月>1979-4-4</出生年月><工资>1600</工资></employee>……</employeelist></xml>XML数据岛xmldso2(数据来自远程数据库)<xmlid="xmldso2"><?xmlversion="1.0"?><employeelist><employee><员工编号>1</员工编号><家庭地址>南京理工大学</家庭地址><邮箱>aaa@</邮箱></employee>……</employeelist></xml>整合XML文件(1)利用XMLDOM将两个数据岛xmldso和xmldso2整合在一起,xmldso和xmldso2分别为人员基本情况信息。Setdoc=CreateObject("Microsoft.XMLDOM")Setdoc=xmldso.XMLDocumentSetdoc2=CreateObject("Microsoft.XMLDOM")Setdoc2=xmldso2.XMLDocument

因此,doc和doc2分别具体化为代表XML数据岛xmldso和xmldso2的Document对象。

整合XML文件(2)使用selectNodes函数来获取所有“employee”元素结点所形成的结点列表对象。Setemployeelist1=doc.selectNodes("//employee")Setemployeelist2=doc2.selectNodes("//employee")整合XML文件(3)i=0ForEachnode1inemployeelist1eno1=node1.selectSingleNode("员工编号").firstchild.nodevaluecount=node1.childnodes.length-1ForEachnode2inemployeelist2eno2=node2.selectSingleNode("员工编号").firstchild.nodevalueif(eno1=eno2)thenFork=1Tonode2.childnodes.length-1text=node2.childnodes.item(k).firstchild.nodevaluename=node2.childnodes.item(k).nodenameSetnamenode=doc.createElement(name)Settextnode=doc.createTextNode(text)namenode.appendChildtextnodeemployeelist1.item(i).insertBeforenamenodeemployeelist1.item(i).childnodes.item(count)Nexti=i+1EndIfNextNext整合XML文件(4)经过数据整合后得到的新的XML数据岛为:<xmlid="xmldso"><?xmlversion="1.0"?><employeelist><employee><员工编号>1</员工编号><姓名>丁当</姓名><出生年月>1979-4-4</出生年月><工资>1600</工资>

<家庭地址>南京理工大学</家庭地址><邮箱>aaa@</邮箱></employee>……</employeelist></xml>JSP简介

JSP(JavaServerPage)是ASP的Java版本,它提供了许多和ASP一样的功能,但是也有很多明显的区别:ASP适用于Windows平台,在非Windows平台上,JSP的使用比ASP多得多。现在JSP的脚本语言只限于Java,将来将支持更多的脚本语言。JSP允许创建新标签,允许扩展语言本身。JSP中的XML应用通过JDBC连接数据库,获取数据库的信息动态产生XML文件使用DOM对XML文件进行解析和处理JDBC简介

JDBC(Java数据库连接,JavaDatabaseConnectivity)是一种基于X/Open的SQL命令级接口,它由一组用Java语言编写的类和接口组成,使得程序开发人员可以建立一个与数据库无关、与平台无关的编程接口来建立数据库应用程序。

使用JDBC连接数据库

//加载驱动程序,下面的代码为加载MySQL驱动程序Class.forName("com.mysql.jdbc.Driver");//注册MySQL驱动程序DriverManager.registerDriver(newcom.mysql.jdbc.Driver());//用适当的驱动程序连接到数据库StringdbUrl="jdbc:mysql://localhost:3306/DB?useUnicode=true&characterEncoding=GB2312";StringdbUser="dbuser";StringdbPwd="1234";//建立数据库连接con=java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);//创建一个JDBC声明stmt=con.createStatement();生成XML文件(1)

//首先获得一个XML文件的解析器,并解析XML文件生成DOM文档的接口类,以便访问DOM。DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();DocumentBuilderbuilder=factory.newDocumentBuilder();//然后,定义一个Document接口描述对应于整个XML文件的文档树,并创建一个根元素。Documentdocument=builder.newDocument();Elementroot=document.createElement(“公文”);//新建结点root1,节点名称为“公文信息”。Elementroot1=document.createElement(“公文信息”);//新建节点item,节点名称为”保密期限“,将变量baomiqixian的值作为一个文字节点的值,并将此文字节点作为item的子节点。而”保密期限“又作为”公文信息“的子节点。Elementitem=document.createElement(“保密期限”);item.appendChild(document.createTextNode(baomiqixian));root1.appendChild(item);root.appendChild(root1);生成XML文件(2)//类TransformerFactory实现获得将DOM文档转化为XML文件的转换器TransformerFactorytfactory=TransformerFactory.newInstance();//类Transformer实现转化APITransformertransformer=tfactory.newTransformer();//将DOM对象转化为DOMSource类对象,该对象表现为转化成别的表达方式的信息容器DOMSourcesource=newDOMSource(document);//获得一个StreamResult类对象,该对象是DOM文档转化成的其他形式的文档的容器。此处将转化为gongwen1.xml文件。StreamResultresult=newStreamResult(newFile("gongwen1.xml"));//调用API,将DOM文档转化为XML文件transformer.transform(source,result);生成XML文件范例<?xmlversion="1.0"encoding="GB2312"?><公文><公文信息><公文标题>数据交换平台测试通知</公文标题>

<撰文时间>2006-6-1</撰文时间>

<主题词>通知</主题词>

<公文字号>0001号</公文字号>

<保密期限>1年</保密期限>

<密级>机密</密级>

<文种>通知</文种>

<紧急程度>紧急</紧急程度>

<发文单位>网管中心</发文单位>

<发送单位>XXX市财政局</发送单位>

<抄送单位>XXX市房产管理局</抄送单位>

<公文正文>正文(略)</公文正文>

</公文信息>

</公文>遍历XML文件以范例的XML文件为例://获得根元素的子节点列表NodeListnodelist=document.getElementByTagName(“公文”);//用递归方法实现DOM文档的遍历GetElement(nodelist);//GetElement方法PublicstaticvoidGetElement(NodeListnodelist){for(inti=0;i<nodelist.getLength();i++){Nodecnode=nodelist.item(i);//如果节点为元素节点,则递归调用GetElementif(cnode.getNodeType()==Node.ELEMENT_NODE){GetElement(cnode.getChildNodes());}elseif(cnode.getNodeType()==Node.TEXT_NODE){//如果节点为文字节点,则显示信息System.out.println(cnode.getNodeValue().trim();}}}增加节点(1)

还是以范例的XML文件为例,要在公文中增加一个新的公文的信息。//获得根对象,此处“公文”为根元素。Elementroot=document.getDocumentElement();//在DOM文档中增加一个Element节点“公文信息”。Elementxinxi=document.createElement(“公文信息”);//在DOM文档中增加一个Element节点“公文标题”。Elementtitle=document.createElement(“公文标题”);//在DOM文档中增加一个Text节点。TexttextMsg=document.createTextNode(“公务员录取通知”);title.appendChild(textMsg);//把title节点转化为“公文信息”的子节点。xinxi.appendChild(title);//把“公文信息”转化为根节点“公文”的子节点。root.appendChild(xinxi);

增加节点(2)增加节点后的XML文件如下(增加的节点用红色字表示):<?xmlversion="1.0"encoding="GB2312"?><公文><公文信息><公文标题>数据交换平台测试通知</公文标题>

<撰文时间>2006-6-1</撰文时间>

<主题词>通知</主题词>

……

</公文信息>

<公文信息><公文标题>公务员录取通知</公文标题>

</公文信息>

</公文>删除节点

假设我们要删除范例中“公文标题”这一节点。//获得根对象。Elementroot=document.getDocumentElement();//获得根元素的子节点,也就是“公文信息”节点Nodenode=element.getFirstChild();//利用removeChild()方法删除”公文标题“子节点对象node.removeChild(node.getFirstChild());

修改节点内容(1)

这里将修改范例XML文件中的“公文标题”的值。//获得根对象,此处“公文”为根元素。Elementroot=document.getDocumentElement();//获得根元素的子节点对象,也就是“公文”的子节点Nodenode=root.getFirstChild();//获得“公文信息”的第一个子节点,也就是“公文标题”子节点。Nodenode1=node.getFirstChild();//在DOM文档中新建一个Text节点TexttextMsg=document.createTextNode(“数据修改通知");//获得原来“公文标题”的子节点——文字结点对象Nodetext1=node1.getFirstChild();//用新建的文字节点对象替换原有的,达到修改的目的。node1.replaceChild(textMsg,text1);

修改节点内容(2)修改后的XML文件如下所示(红色字表示修改内容):<?xmlversion="1.0"encoding="GB2312"?><公文><公文信息><公文标题>数据修改通知</公文标题>

<撰文时间>2006-6-1</撰文时间>

<主题词>通知</主题词>

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论