第八章XML与WEB和XML与数据库第八章XML与WEB和XML与数据库............................................................................18.1XML数据与WEB页面...................................................................................................28.1.1基于XML的WEB体系结构......................................................................................21.XML文档解析原理回顾.............................................................................................22.基于XML的WEB体系结构................................................................................23.WEB系统中访问XML的主要技术.........................................................................43.1页面和页面设计方案.............................................................................................43.2多用户访问XML文档方案................................................................................44.基于XML的网上商场实例.....................................................................................54.1网上商场的WEB体系结构................................................................................54.2网上商场的实现....................................................................................................55.总结.......................................................................................................................................58.1.2XML数据岛―已经介绍.......................................................................................68.1.3XML服务器...........................................................................................................78.1.4XMLHTTP.............................................................................................................88.1.5XSP.........................................................................................................................93XSP语法精要............................................................................................................104示例............................................................................................................................108.2XML与数据存储............................................................................................................128.1XML数据与WEB页面8.1.1基于XML的WEB体系结构1.XML文档解析原理回顾XML数据的一个典型实例是:z有一个描述内容的XML文档(.xml)z有一个描述内容模型的XML模型(.dtd/.xdr/.xsd)z有一个描述格式化样式的XML样式表(.css/.xslt/.xslfo)XML文档本身只不过是一个文本文件,它需要一个能识别XML文档信息的语法解析器(Parser)来解释XML文档,并提取其中的内容。XML解析器根据解析的不同方式,可以分为DOM解析器和SAX解析器。任何XML应用程序都是构建在XML文档解析基础之上的。DOM(DocumentObjectModel,文档对象模型)是访问XML文档的一种重要方法。利用DOM树中的对象,开发人员可以对XML文档进行读取、搜索、修改、添加和删除等操作。DOM为文档导航以及对XML文档内容和结构提供了标准的操纵函数。SAX(SimpleAPIforXML,简单应用程序接口)是另一种访问XML文档的方法。SAX可以看成是一个更低层的分析方法,它比其它分析方法(像DOM)速度更快,占用更少的内存,但需要更多编程工作。实际上,很多DOM解析器就是建立在SAX之上的。在基于XML的WEB体系结构中,XML文档的解析和访问是至关重要的。2.基于XML的WEB体系结构通常的WEB体系结构是一个三层的Client/Server结构。如果将XML技术引入WEB体系结构中,使用XML的有关技术,可以得到一个较为通用的基于XML技术的WEB体系结构。图1显示了本人设计出的基于XML的WEB体系结构。普通浏览器(IE等)数据库服务器.存储XML数据的数据库(如ApacheXindice).扩展了XML功能的数据库(如Oracle9)客户层Web服务层XML容器层数据库层HTTP/FTP/SMTPDOM/SAX/JAXPHTML或XML+XSLT图1基于XML技术的WEB体系结构图Xpath/XUpdateWeb服务器处理HTTP等请求.HTML文档.ASP文件.JSP文件.XSP文件XML服务器(1)XML处理功能(2)XSLT转换功能(3)SOAP服务功能.XML文档.XSLT文档.CSS文档.WebService文档一、客户层客户层是用户使用界面层,用户使用的一般为普通浏览器,如IE6。普通浏览器不支持XML文档的直接格式化显示,客户层向Web服务器提出HTTP等请求,向Web服务器发送的文档可能为HTML文档,也可能为XML文档。例如:或。二、Web服务层Web服务层即为通常的Web服务器,如Apache,它负责接受客户层提出的HTTP等请求,如果该请求中有XML请求,则将该XML请求提交给XML服务器处理。这些XML请求主要有:读取XML文档、XML文档转换、SOAPWeb服务访问请求等等。三、XML容器层XML容器层运行着一个XML服务器,该服务器是运行着XML解析软件的一个应用服务器。目前很多大公司提供了DOMAPI和SAXAPI产品。根据Web功能和XML的技术要求,我们认为XML服务器应该包含下面三个基本功能:(1)XML处理功能。包括装载XML文档、保存XML文档、解析XML文档(结构良好性或可验证性)、用DOM或SAX或其它专用API来操纵(文档的遍历、文档元素的添加删除和内容修改)XML文档数据。在XML服务器上安装DOM引擎、SAX引擎或其它专用API即可操作XML文档。常见的DOM引擎有:MSDOM引擎,它出现在MSXML.DLL中;IBM的XML4J引擎;APACHE的Xerces引擎。常见的SAX引擎有:SUN公司的JAXP(JavaAPIforXMLParsing),IBM的XML4J引擎,MicroStar公司的Aelfred。(2)XSLT转换功能。XML文档格式化技术有两个,一个目前HTML中使用的CSS样式单(CascadingStyleSheets),使用CSS显示XML文档效果很好,但是使用CSS样式单显示XML文档是不是未来Web开发的趋势;另一个是未来的Web开发技术-XSLT(可扩展的样式单转换语言,theeXtensibleStylesheetLanguageTranslation),使用XSLT程序格式化XML文档将会是未来的趋势,目前最主要的浏览器都支持这种技术。XSLT比CSS样式单功能要强大的多。XSLT的主要用途是将XML文档转换成为另外格式的其它如何文档,例如HTML格式的文件、新XML文档,然后再交付给浏览器或应用。根据Web处理数据的特点,XSLT在Web中可以有两种应用方式:1)服务器端转换模式。XML文档在下载到浏览器前先在服务器端转化为HTML,再将HTML送到客户端显示。具体又有两种方式:一是实时动态转换,即请求时转换;另一种是批量转换,即先转换好放在服务器中,客户端直接读取早已转换好的HTML。2)客户端转换模式。XML文档和XSLT程序都发送到客户端,在客户端运行。这时要求浏览器支持XSLT和XML文档。XML服务器中的XSLT转换功能应能支持上述两种应用方式,完成XSLT转换功能的部件称为XSLT处理器。常见的XSLT处理器是Instantsaxon。(3)SOAP服务功能。SOAP是在分散或分布式的环境中交换信息的简单的协议,是一种基于XML的传输层协议。SOAP是一种可以利用XML技术交换复杂的结构数据的XML应用。XML服务器中SOAP服务功能提供对XMLWebServices访问的支持。常见的SOAP服务软件是ApacheSOAP2.1Server,微软的.NETFramework。四、数据库层在一些大型数据处理的系统中,纯粹使用XML文档来存储数据效率不高,还是要使用数据库,因为数据库有自己优化的存储和检索系统。目前XML数据库主要有:z存储XML数据的数据库(NXD),如ApacheXindice。NXD是基于XML文档概念而建立的数据库。z扩展了XML功能的数据库(XEDBs),如Oracle9和SQLSERVER2000。绝大多数主要的RDBMS产品无需改变现有的数据库就可以集成XML数据到程序中,至少XEDBs能够返回XML文档查询的结果。另外很多XEDBs也可以保存XML数据。例如,Oracle提供了一个XML解析器、一个Xpath引擎、一个XSLT处理器、一个XMLSQL工具、以及使用XML的方法。使用关系数据库存储的NXD和存储XML数据的XEDB的区别是:NXD是基于XML文档概念而建立,而XEDBs与XML没有过多的关联。而且很多规范适用于NXD,而XEDBs只适用标准的查询和存储数据规范,比如Xpath。在设计一个XML数据库时,可以使用NXD,XEDBs,或者是二者的结合。3.WEB系统中访问