使用PHP和AJAX的XML编程
发布时间:2006-09-09 02:08:23 来源:IBM 网友评论 0 条 将保单存储在 DB2 中
PHP 应用程序将传入的 XML 文档直接存储在数据库中,而不需要解析它(见清单 3)。DB2 的 pureXML 支持将隐式地解析传入的 XML,并将其存储在一个类 DOM 的分层结构中。现在,可以在 XQuery 语句中使用 XPath 之类的 XML 导航技术(就像在 DOM 中使用的那样)来查询 XML。DB2 9 还提供了在该层次结构中的任何节点上索引的能力。

公开 XML 文档上的服务
新的保单存储在 DB2 9 中以后,保险代理可以查询该保单,以决定是否接受这个保险。用于获得关于新保单报告的查询通过 Web 服务公开给客户机应用程序。
这个例子中的 Web 服务是用 PHP 编写的,它为调用实现服务的业务和转换逻辑的 DB2 存储过程提供了一个简洁的接口。每个 DB2 存储过程由一个 SQL/XML 查询组成,它过滤和转换存储在数据库中的 XML 保单,以创建一个输出 XML 文档。然后,该 PHP Web 服务将 XML 文档返回给客户机。
我们来分析每个存储过程,看看那些有效地组成 Web 服务实现的查询。

列出所有新客户保险的 DB2 查询。包含该查询的存储过程是listAllNewCustomers(见清单 4)。该查询搜索 ACORD 表的 INFO 列中的所有保单文档。在每个 XML 文档中,DB2 进一步向下分析,以便只返回 PolicyStatus/@tc 属性的代码值被设为 12(也就是建议的值)的那些文档。查询输出是一个 XML 文档,它有一个根节点 newpolicylist,该节点包含一系列的用于每个新保单的 TXLife 子节点(见图 4)。
图 4. 返回新保单列表的 SQL/XML 查询

注意这个查询第一次如何使用 DB2 XQuery 函数 db2-fn:xmlcolumn 来导航关系模式,以定位到 XML 列 DB2ADMIN.ACORD.INFO。当它到达 XML 列时,它进一步使用 XPath 在 XML 模式中导航到适当的节点(类似于使用 PHP、JavaScript 或其他语言导航 DOM)。
列出有风险客户的提议保险的 DB2 查询。该查询只列出有风险的新客户(也就是说,他们对于某个医疗问题的回答是 yes)。该查询包含在一个名为 listAtRiskNewCustomers 的存储过程中(见清单 5)。 注意:WHERE 子句同时检查答案和保单状态。

评估有风险新客户的风险度的 DB2 查询。对于以上列表中的每个保单,在保单的健康风险区域只能列出回答为 yes 的问题。该查询还返回 policytype,以显示该保单值多少钱,以便评估风险。包含该查询的存储过程(见清单 6)是 getRiskQuestions(guid)。 注意:您需要一个支持 XML 类型的 DB2 驱动程序版本。否则,在每个存储过程中都需要使用 XMLSerialize 来从 XMLQuery 中串行化 XML 值。请参阅 developerWorks 文章 “结合使用 DB2 原生 XML 与 PHP” 以获得更详细的信息。

PHP 应用程序将传入的 XML 文档直接存储在数据库中,而不需要解析它(见清单 3)。DB2 的 pureXML 支持将隐式地解析传入的 XML,并将其存储在一个类 DOM 的分层结构中。现在,可以在 XQuery 语句中使用 XPath 之类的 XML 导航技术(就像在 DOM 中使用的那样)来查询 XML。DB2 9 还提供了在该层次结构中的任何节点上索引的能力。

公开 XML 文档上的服务
新的保单存储在 DB2 9 中以后,保险代理可以查询该保单,以决定是否接受这个保险。用于获得关于新保单报告的查询通过 Web 服务公开给客户机应用程序。
这个例子中的 Web 服务是用 PHP 编写的,它为调用实现服务的业务和转换逻辑的 DB2 存储过程提供了一个简洁的接口。每个 DB2 存储过程由一个 SQL/XML 查询组成,它过滤和转换存储在数据库中的 XML 保单,以创建一个输出 XML 文档。然后,该 PHP Web 服务将 XML 文档返回给客户机。
我们来分析每个存储过程,看看那些有效地组成 Web 服务实现的查询。

列出所有新客户保险的 DB2 查询。包含该查询的存储过程是listAllNewCustomers(见清单 4)。该查询搜索 ACORD 表的 INFO 列中的所有保单文档。在每个 XML 文档中,DB2 进一步向下分析,以便只返回 PolicyStatus/@tc 属性的代码值被设为 12(也就是建议的值)的那些文档。查询输出是一个 XML 文档,它有一个根节点 newpolicylist,该节点包含一系列的用于每个新保单的 TXLife 子节点(见图 4)。
图 4. 返回新保单列表的 SQL/XML 查询

注意这个查询第一次如何使用 DB2 XQuery 函数 db2-fn:xmlcolumn 来导航关系模式,以定位到 XML 列 DB2ADMIN.ACORD.INFO。当它到达 XML 列时,它进一步使用 XPath 在 XML 模式中导航到适当的节点(类似于使用 PHP、JavaScript 或其他语言导航 DOM)。
列出有风险客户的提议保险的 DB2 查询。该查询只列出有风险的新客户(也就是说,他们对于某个医疗问题的回答是 yes)。该查询包含在一个名为 listAtRiskNewCustomers 的存储过程中(见清单 5)。 注意:WHERE 子句同时检查答案和保单状态。

评估有风险新客户的风险度的 DB2 查询。对于以上列表中的每个保单,在保单的健康风险区域只能列出回答为 yes 的问题。该查询还返回 policytype,以显示该保单值多少钱,以便评估风险。包含该查询的存储过程(见清单 6)是 getRiskQuestions(guid)。 注意:您需要一个支持 XML 类型的 DB2 驱动程序版本。否则,在每个存储过程中都需要使用 XMLSerialize 来从 XMLQuery 中串行化 XML 值。请参阅 developerWorks 文章 “结合使用 DB2 原生 XML 与 PHP” 以获得更详细的信息。

- 推荐阅讯
- PHP中通过Web 执行C/C++应用程序
- PHP下一代的五个framework介绍
- 通过缓存数据库结果提高PHP性能
- 用PHPdig打造属于你自己的Google
- php5手动最简安装方法
- PHPUnit袖珍指南之PHPUnit的目的
- 五个常见 PHP 数据库问题
- 如何利用PHP和CSS改变网页文字大小
- 谈网页编程PHP语言的发展
- PHPUnit袖珍指南之自动测试
- 阅读排行
- 1.实例学习PHP之表单处理篇(一)
- 2.实例学习PHP之表单处理篇(二)
- 3.结合AJAX进行PHP开发之入门
- 4.PHP V5.0.5下载列表
- 5.用PHP读取和编写XML DOM
- 6.使用"函数递归"实现动态树型菜单
- 7.PHP环境下配置在线编辑器FCKeditor
- 8.利用PHP和AJAX创建RSS聚合器
- 9.实例学习PHP之投票程序篇(二)
- 10.实例学习PHP之投票程序篇(一)
- 专题教程
- Windows Server-Windows Server文档-Windows Server新闻-Windows Ser PostgreSQL-PostgreSQL文档-PostgreSQL新闻-PostgreSQL专家
- WebLogic-WebLogic文档-WebLogic新闻-WebLogic专家 FreeBSD-FreeBSD文档-FreeBSD新闻-FreeBSD专家
- Linux-内核 GUI KDE Gnome DNS FTP 安全 安装-Linux专区 Windows-AD IIS ServerCore 虚拟化 安全 HPC-Windows专区
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
