标题: PHP网站制作之利用PHP和AJAX的XML编程 [打印本页] 作者: 飘飘悠悠 时间: 2015-2-4 00:14 标题: PHP网站制作之利用PHP和AJAX的XML编程 刚开始觉得自己对这些多少有些基础,很简单,但是看了老师那么熟练的进行网页布局的时候,突然之间发现,其实,我的基础并没有自己想像的那么好,自己设计的页面其实并不好看,就连表格的边框为1像素都不会弄。ajax|xml|编程 在 SOA 架构中,法式员常常利用 XML 在使用法式之间互换布局化和半布局化的数据。XML 及其相干手艺 ― 文档对象模子(Document Object Model,DOM)、XPath、HTTP、XQuery 和可扩大款式表言语转换(Extensible Stylesheet Language Transformations,XSLT) ― 为疾速使用法式开辟供应了一个壮大的情况。构建在这些手艺之上的使用法式将占用更小的内存空间,需求更低的保护本钱,同时又具有更高的品德和天真性。
DB2 和其他关系数据库的 XML 方面的特征已相当做熟,因而除存储和办理关系数据以外,它们仍是存储和办理 XML 数据的幻想选择。DB2 9 XML 撑持(称为 pureXML)供应了以纯 XML 的模式(换句话说,就是带正文的、树型的分层存储)存储 XML 的才能。在 DB2 9 中,XML 数据可以用 XML 形式索引,可以从关系数据组合而成,可以分化为关系数据,可以查询和转换,可以自力宣布,或经由过程夹杂利用 SQL/XML 和 XQuery 与关系数据组合起来。
Web 阅读器也正在为客户机剧本供应更多的功效来无效地处置 XML。经由过程利用异步 JavaScript 和 XML(Asynchronous JavaScript and XML,Ajax),Web 页面如今可以直接对使用办事器停止近程进程挪用,而且可以在任何前往的 XML 数据上利用 DOM API。
本文将展现若何使用 DB2 XML、Ajax 和 PHP Hypertext Preprocessor (PHP) 供应的功效来编写复杂的基于 XML 的使用法式。经由过程示例场景的匡助,您将进修若何在 JavaScript 中挪用 PHP 使用法式;若何利用 DOM 和 SimpleXML API 修正 XML 数据;若何将 XML 从客户机传送到使用法式再到数据库;和若何创立 PHP Web 办事来利用 SQL/XML 和 XQuery 宣布关于 XML 数据的呈报。
将 XML 引入架构中可觉得暗示营业数据带来一种尺度化的体例。XML 可以供应数据的布局;XML 形式施加布局和格局化划定规矩;DOM API 和 XQuery、XPath 及 XSLT 之类的言语使营业逻辑可以无效地把持、宣布和串行化数据。因为营业数据的 XML 暗示在客户机、两头层和数据库中都是分歧的,因而把持这些对象的代码也是相似的。
我将展现若何在三层情况中构建基于 XML 的使用法式,这个三层情况由以下几个局部构成:
・Web 客户机:Asynchronous JavaScript and XML (Ajax),DOM
・使用办事器:PHP 和 SimpleXML
・数据库: DB2 9 和 SQL/XML,XQuery 基于 ACORD 人寿数据模子的场景
咱们来思索一个复杂的人寿保险场景,在这个场景中,起首创立一个暗示新保单的 XML 文档,然后查询和把持这个文档,别的还将这个文档从一层挪动到另外一层。这个文档基于协作运营研讨与开展协会(Association for Cooperative Operations Research & Development,ACORD)用于人寿保险标准的 XML,它界说了安康保险和年金保险需求互换的数据。
为了请求一个新的保险,客户需求供应一些根基信息。局部信息是在一个 PHP 使用法式中填写的,还有一局部是在客户机阅读器中填写的。然后,保单存储在一个 DB2 XML 列中。在 DB2 9 中,XML 类型的列在外部将 XML 数据存储为一棵解析后的树,与关系数据存储在分歧的中央。这类办法是 DB2 9 独有的,更早的 DB2 版本则利用关系存储基本举措措施来存储 XML。
上面是保单 XML 文档在客户机与使用法式之间的流程:
・在 Web 客户机中,客户更新页面并单击 Submit。
・Web 客户机向 PHP 收回一个 XMLHTTP 恳求,以取得新的空白保单文档。
・PHP 使用法式翻开一个空白的保单文档,用一个全局唯一标识符(GUID)更新它,然后将该文档前往给 Web 客户机。
・Web 客户机利用 Ajax 捕获前往的事务,并检索 XML DOM,然后用 Web 页面中输出的信息填充该文档。
关于本文,咱们假定 GUID 是经由过程某种机制(例如工夫和随机数的组合)创立的。更主要的是了解若何将暗示保单的 XML 文档视作内存中的营业对象条理布局,和若何利用 SimpleXML API (或 DOM/XPath)来导航和更新这个对象。
填充根基客户信息
在 Web 客户机中,fillPolicy() 函数读取前往的值。如今,包括前往 XML 的内存中暗示的 DOM 对象可用于把持保单文档。客户在 Web 页面上输出的信息被直接用于更新 DOM。当利用客户信息更新了保单以后,利用 XMLHTTP 将修正后的 DOM 对象提交回 PHP 使用法式(见清单 2)。即便是 HTML 组件值也是用 DHTMLDocument Object Model (DOM) 读取的。
新的保单存储在 DB2 9 中今后,保险代办署理可以查询该保单,以决意是不是承受这个保险。用于取得关于新保单呈报的查询经由过程 Web 办事公然给客户机使用法式。
这个例子中的 Web 办事是用 PHP 编写的,它为挪用完成办事的营业和转换逻辑的 DB2 存储进程供应了一个简约的接口。每一个 DB2 存储进程由一个 SQL/XML 查询构成,它过滤和转换存储在数据库中的 XML 保单,以创立一个输入 XML 文档。然后,该 PHP Web 办事将 XML 文档前往给客户机。
用于 getnewpolicyinfo Web 办事的 PHP 代码是一个瘦包装器,它反省所需保单呈报的类型,并挪用恰当的存储进程。然后,将存储进程所前往的值发送回客户机(见清单 7)。注重用 PHP 创立 Web 办事是何等复杂。最初三即将该功效公然为一个 Web 办事。在任何客户机中,包含在 PHP 使用法式中,都可以挪用 Web 办事,如清单 8 所示。