使用PHP和AJAX的XML编程(3)

作者:网络 来源:佚名 更新时间:2008-09-19 10:53:30 点击:
  • 本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。
  •   将保单存储在 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” 以获得更详细的信息。