新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> XML与e-Business, e-Government
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 XML在电子商务与电子政务中的应用 』 → 可视化的 XML 工具: 用 XML 搭建电子商务应用 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 20038 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 可视化的 XML 工具: 用 XML 搭建电子商务应用 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     anchen0617 帅哥哟,离线,有人找我吗?双子座1983-6-17
      
      
      威望:5
      等级:大二(研究C++)
      文章:281
      积分:3413
      门派:XML.ORG.CN
      注册:2004/10/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给anchen0617发送一个短消息 把anchen0617加入好友 查看anchen0617的个人资料 搜索anchen0617在『 XML在电子商务与电子政务中的应用 』的所有贴子 访问anchen0617的主页 引用回复这个贴子 回复这个贴子 查看anchen0617的博客楼主
    发贴心情 可视化的 XML 工具: 用 XML 搭建电子商务应用

    本文将以医院和保险公司之间的数据交换为例来介绍两个不同的商务领域间数据交换的设计。这两个领域的应用程序都是用Java实现,并且通过 XML来完成数据交换。在开发该应用程序的过程中,我们将说明如何使用以下5个 XML 工具: IBM Visual DTD、IBM Visual XML Creation、IBM Visual XML Transformation、IBM Visual XML Builder 和 IBM Visual Query。这些工具允许开发者对不同数据源中的 XML 数据进行编辑、转变、生成、授权、获取以及合成,从而实现了在不同的商务应用程序之间的数据交换和共享。


    XML basics
    XML (Extensible Markup Language)是一种描述结构化数据的语言,它支持自定义的面向特定领域知识的标签。大多数的XML应用程序可归为以下三类:文档化、数据交换和数据库连接。由于其灵活性,XML数据通常包括面向特定商务领域的置标,这就使得不同领域的商务应用程序之间的数据共享变得困难。

    医院-保险公司的场景
    在医疗系统中,当病人在一个医院看完病后,医院必须出具一个保险声明以表明病人已付费。该事务分两部分:医院准备声明以及保险公司接收并处理该声明,实现这两个部分的应用程序分别被称为医院应用程序和保险应用程序。当医院准备声明时,医院的工作人员利用病人的社会保险号检索出该病人的信息,并输入关于病人这次看病的数据,比如日期、看病的原因以及治疗的费用等等。一旦这些信息进入系统,相应的声明就能被保险公司所利用。

    当声明到达保险公司时,需要进行调整以保持与持保人的记录一致。从保险公司的数据库中检索出相关的保险单并与该声明合并。通过该信息,从医院传来的声明将被认可,保险公司需付给医院一定的费用。

    如何在两个不同的领域实体间自动交换公共数据是本示例所面临的主要挑战。医院和保险公司需要共享数据,但它们在采集、存储和处理数据的方法上都有很大的不同,同时它们也许都有病人或持保人的信息,但又都不愿意暴露给对方。本文的其余部分将说明如何利用 IBM XML Tools 来实现医院和保险公司的应用程序,以保证公共信息的交换。主要步骤如下:

    医院应用程序的用户界面是 Web 页面。医院的工作人员在 Web 页面(hospital.html)中输入病人的社会保险号(见图 2),该号码被用来从医院数据库中检索出病人的信息。
    医院的工作人员输入病人最近一次看病的信息,并请求提交看病治疗的声明到另一个页面 (patient.jsp)(见图 8.) 。检索的信息以及新增的数据以 XML 格式存放(fileRecord.xml)。
    医院应用程序改变文件记录以便以XML格式(claimRecord.xml)创建声明并传给保险公司,同时更新医院的数据库。
    保险公司接收到该声明并保存之(claim.xml)。保险公司应用程序利用该声明中的社会保险号,从保险公司的数据库中检索出持保人的信息( policyHolder.xml)。
    文件 policyHolder.xml 包含了该持保人所持有的各种保险单的情况,而处理该声明时所关心的信息只是持保人的健康保险单。从policyHolder.xml中提取出健康保险单,形成保险单XML文档( policy.xml)。
    保险应用程序将声明和保险单的相关部分合并成一个声明回复(claimResponse.xml) ,用它来处理和答复声明。这样,声明回复就可以发送给医院,同时有可能把按声明所得的保险费也一起发送给医院。
    本系统的体系结构如下图表所示:

    图 1. The 医院-保险公司的场景


    IBM Visual XML tools 介绍
    本节将介绍在开发上述示例应用程序中所用到的5个 XML 工具的用途及特性。在开发过程中,可以利用这些工具来生成脚本和代码,这些脚本和代码能够在运行时同你的 Java 应用程序一起绑定,并且能够在你的应用程序中根据需要随时使用。如何真正地使用这些工具将在“示例和开发描述”一节中详细介绍。

    .
    Visual DTD
    文档类型定义( DTD )是文档的模板。 DTD 允许作者定义对一类文档的描述。用面向对象的术语来说,DTD 类似于类的定义,而 XML 文档则类似于类的对象,它遵循 DTD 的定义。

    Visual DTD 工具用来创建和查看 DTD 。利用 Visual DTD ,可以实现以下功能:

    创建 DTD 的元素、属性以及符号。
    查看已存在 DTD 的结构。
    为已存在的 XML 文档创建 DTD
    创建新的 DTD 。
    初步支持 XML Schema
    生成 Java 类,用于创建 XML Schema 的 XML 实例。
    根据 DTD 生成一个缺省的 HTML 。
    根据 DTD 生成一个示例 XML 文档。
    Visual XML Builder
    The Visual XML Builder 是一个用来根据 DTD 的模式来构建有效的 XML 文档的工具。该工具主要适合两类用户:一类是定制遵循 DTD 的 XML 结构,另一类是往 XML 结构或模板中输入数据并生成 XML 文档。利用 Visual XML Builder,可以实现如下功能:

    创建遵循 DTD 的XML 模板。
    对 XML 模板增加另外的语义信息,如域的数据类型,或某个域的缺省值。
    对特定应用的特定处理逻辑定义用户接口。
    支持对其他 XML 模板的重用。
    根据 DTD 或另外的语义信息来对 XML 文档进行有效性检查。
    创建最终的 XML 文档。
    Visual XML Transformation
    Visual XML Transformation 工具可以帮助你从一个已存在的 XML 文档创建一个新的 XML 文档。如果你希望利用一个已存在的 XML 格式,并想对它进行变换以满足特殊的需要,那么从 XML 到 XML 的变换就非常有用了。利用 Visual XML Transformation ,可以实现如下功能:

    根据输入的一个或多个源 XML 文档的 DTD 可视化地构造一个目标 XML 文档的 DTD。
    创建结果 DTD 。
    生成 XSLT 脚本,它实现源 XML 文档到目标 XML 文档的转换。
    对 XSLT 脚本进行单元测试。
    Visual XML Creation
    Visual XML Creation 是一个用来从 SQL 查询创建 XML 文档的工具。利用 Visual XML Creation ,可以实现如下功能:

    与 DB2 数据库相连,并检索数据库中的表。
    输入一个 SQL 查询语句,执行并显示结果集。
    根据查询结果生成一个 XML 文档和相应的 DTD 。你可以为你的关系数据映射到 XML 格式选择不同的模板。
    生成缺省的 XSL 样式表来格式化你的 XML 文档。
    将查询语句保存到一个结构文件中,其中也包括了能处理该文件的小服务器程序。你可以将这个 Servlet 加入到 WebSphere 应用服务器中,并在运行时,利用它根据 SQL 查询来生成 XML 文档。
    Visual XML Query
    Visual XML Query 工具可以帮助你构造 XML 查询表达式。利用 Visual XML Query ,你可以完成如下功能:

    打开 XML 文档。
    可视化地创建 XML 文档中 XPath 的表达式。
    利用 Lotus XSLT-based XML 查询引擎来执行 XPath 表达式。
    将 Xpath 表达式保存到文件中。
    示例和开发的描述
    本节将贯穿医院和保险公司应用程序开发的始终,同时我们将介绍 IBM XML Tools 的使用。

    示例: 医院应用程序
    医院应用程序是一个 Web 应用程序。在本文中,它的一部分功能包括更新病人的记录及生成保险声明。首先,医院工作人员将在下图所示的简单的 Web 页面中输入病人的社会保险号。

    图 2. 输入病人信息的网页


    工作人员输入病人的社会保险号,并按击提交按钮。之后,医院应用程序将对医院数据库进行查询,并返回病人信息,由此关于病人的新信息将增加到数据库中。查询功能是利用下节介绍的IBM Visual XML Creation 开发的,或者你可以继续该示例的下一个部分。

    开发:利用 Visual XML Creation
    当 Visual XML Creation 开始时,第一步是连接到你想查询的数据库,正在运行的 SmartGuide 的界面如下图所示。在这个示例中,我们将连接到包含有病人医疗记录的医院数据库上。 (参阅原始大小抓屏图.)

    图 3. Visual XML Creation -- SmartGuide 界面


    为了用 Visual XML Creation 创建你的查询,你必须设计查询,在数据库上执行之,并根据查询结果生成 XML 、DTD 、XSL 和 HTML 文件,然后通过检查 HTML 来检验你的结果。当你感到满意时,此次查询完成,你可以保存你的查询,并在运行时由 SQLToXML Servlet 使用之。

    给定一个社会保险号,返回其所有医疗记录的查询的格式如下:

    SELECT * FROM JOAN.HEALTHCARERECORD WHERE ( ( SSN =  ?))

    为了设计这个查询,在 SQL Model 视窗中,从 HEALTHCARERECORD 表上的弹出菜单项中选择增加 Select 语句,你将看到该语句出现在视窗的底部。接着你需要为查询增加约束条件,以便该查询能返回与某个社会保险号相匹配的记录项。在该视窗的第2行中,选择 SSN 作为列,该列可以增加到 Select 语句中。选开 SSN 行中 Output 的复选框以保证 SSN 不会在输出中显示两次。在 Criteria 列中,=? 被选中表明 SSN 的值将与一个参数相比较。现在,该查询语句已经完成,你可以在 SQL Model view 中的弹出菜单项中的 Rename 选项来给你的查询语句重新命名。完成查询语句后的窗口如下图 4 所示。 (参阅原始大小抓屏图.)

    图 4. Visual XML Creation -- 添加一个 Select 语句


    下一步就示在数据库上执行你的查询,根据返回的查询结果判断该查询语句是否满足你在应用程序中的需求。你可以选择右边窗口片中的 Execute ,选中的查询语句将显示出来。按击 Execute 按钮执行该查询语句,数据库中符合条件的记录将显示出来。在这个例子中,我们的查询语句有一个参数需要在执行时给出其值,而当在程序运行时执行该查询时,这个参数将由调用此查询的程序给出其值。因此在利用 Visual XML Creation 测试时,我们必须提供该值。当按击 Execute 按钮时,将有一个窗口弹出,提示输入该参数的值。窗口如下图5所示。(参阅原始大小抓屏图)

    图 5. Visual XML Creation -- 执行结果


    你可以在如下所示的图形界面上查看执行的结果: (参阅原始大小抓屏图)

    图 6. Visual XML Creation -- 带测试参数查询


    一旦从数据库中检索到了数据,我们就需要考虑如何将它们以 XML 的格式存储。在上面所示屏幕的右下角,你可以看到 Generation Options ,它给出了 XML 如何被结构化存放的选项。你可以选择将列存成 XML 的属性或元素,你也可以重新检查外键并在输出中包括相关的表。这里生成的任何源文件都可以在该工具中的 Source 标签窗口中看到。

    现在,我们已经成功地创建了我们的查询,我们需要将它存成扩展名为 .vxmlc 的结构文件,以便被 Servlet 所使用。在 SQL Model 窗口中,通过选择该查询语句的弹出菜单中的 Save Query 菜单项,我们可以保存该查询语句。本例中,查询语句被存成 hospital.vxmlc ,其列被保存为 XML 的元素,如下图所示。在这里,你可以指定将使用哪个 XSL 文件,以及生成的 XML 和 DTD 文件的名字。 (参阅原始大小抓屏图)

    图 7. Visual XML Creation -- 保存查询


    示例:查询医院数据库
    用 Visual XML Creation 创建的查询语句在运行时能被 SQLToXML 类所执行,该类是随着 sql2xml.jar 包中的工具一起发行的。下面的代码说明了如何利用 SQLToXML 组件对病人数据进行查询。 利用 XML Creation 创建的 hospital.vxmlc 文件,Setvlet 能够触发 SQLToXML 类,病人的社会保险号将由用户作为参数输入。

    SQLToXML sqlToXML = new SQLToXML("d:\\ibmxmltools\\xmimodels\\hospital.vxmlc",

         getSsn());

    SQLToXML sqlToXML = new SQLToXML("d:\\ibmxmltools\\xmimodels\\hospital.vxmlc", getSsn()); 利用查询的结果生成 JSP 文件 patient.jsp ,用于显示数据。该 JSP 页面如下图所示,医院的工作人员可以在这里输入新病人信息以及提交声明。

    图 8. 浏览器显示 patient.jsp


    一旦病人的新信息进入系统,用户可以按击 Submit 按钮来向保险公司提交声明。一个 XML 文档 (fileRecord.xml) 将被创建。但并不是文件记录中的所有信息对保险公司都是必要的,因此,在声明被传给保险公司前,文件记录必须转化为声明记录,其结构将遵循由医院和保险公司共同约定的 DTD 。在这个过程中,需要 XSLT 脚本来实现之。下一节将介绍如何利用 XML Transformation 工具开发 XSLT 脚本,你也可以继续阅读本示例来看声明是如何创建声明的。

    开发: 利用 Using Visual XML Transformation 工具
    Visual XML Transformation 工具可以根据源 DTD 可视化地创建目标 DTD,这个转化由该工具完成,并且可以利用遵循源 DTD 结构的样例 XML 文件进行测试。该变换可以将两个源 XML 文件合成一个目标 XML 文件,也可以将一个 XML 文件变换为另一种 XML 文件。在本示例中,我们仅考虑将一个源 XML 文件(fileRecord.xml) 变换为一个 XML 文件claimRecord,同时根据源和目标 DTD 之间的差异将生成 XSLT 脚本或 Java 类。在本示例中的医院应用程序中,你将只是生成 XSLT 脚本,关于 Java 类的生成将在开发保险公司应用程序时用到。

    下面图 9所示的是 Visual XML Transformation 中的 Smartguide 的运行情况,在这里,我们可以选择用于变换的源 DTD。在本示例中,我们利用 fileRecord 的 fileRecord.dtd 作为源 DTD ,目标 DTD 命名为 claimRecord.dtd。

    图 9. Visual XML Transformation -- SmartGuide 界面


    在 Visual XML Transformation 窗口的左侧,你可以看到源 DTD。在右侧的窗口中,你可以通过增加新元素或利用源 DTD 中的元素来创建目标 DTD。你可以根据弹出菜单选项来编辑目标 DTD 的各个项。例如,为了将源 DTD 中的元素拷贝到目标 DTD 中,你可以通过拖放操作来完成,也可以利用弹出菜单项中的拷贝和粘贴来完成。

    首先,将源 DTD 中的serviceDate, serviceType, chargeAmount, patientName 和 ssn 等元素的定义拖到目标 DTD 中,然后利用 claimRecord.dtd 节点的弹出菜单选项中的 Add Element 来创建一个名为 claimRecord 的新元素。ClaimRecord 元素有一个内容模板,包含多个子元素。利用 claimRecord 项上的弹出菜单,并将第一个空的元素名改为 chargeAmount。接着,使用菜单选项 Nest 和 Add Content Model 可以增加一系列的内容。DTD 中的元素可以通过拖放操作来重新排序。下图显示了生成的 DTD claimRecord.dtd。 (参阅原始大小抓屏图)

    图 10. Visual XML Transformation -- claimRecord.dtd


    现在,可以生成并测试变换后的脚本。如下图所示,在 Source 视中显示的是我们刚创建的 DTD claimRecord.dtd,左边显示的是源 DTD 和目标 DTD 文件,其中源 XML 文件用于对变换进行单元测试,而目标 XML 文件是由变换创建的结果。下面有若干选项:生成 XSL 脚本或 Java 类,生成文件的名字,以及用作 XML 文档根的元素。在本示例中,我们将以元素 claimRecord 作为根元素生成 XSL脚本。 (参阅原始大小抓屏图)

    图 11. Visual XML Transformation -- claimRecord.dtd in source view


    现在,可以生成并测试变换后的脚本。如下图所示,在 Source 视中显示的是我们刚创建的 DTD claimRecord.dtd,左边显示的是源 DTD 和目标 DTD 文件,其中源 XML 文件用于对变换进行单元测试,而目标 XML 文件是由变换创建的结果。下面有若干选项:生成 XSL 脚本或 Java 类,生成文件的名字,以及用作 XML 文档根的元素。在本示例中,我们将以元素 claimRecord 作为根元素生成 XSL脚本。

    示例:根据病人数据创建声明
    在 Visual XML Transformation 工具中创建的XSL 变换脚本可以用于 WebSphere 应用服务器中。在运行时,当检测到一个 fileRecord 流时,该脚本将在 fileRecord.xml 文件上执行。在 file record 上运行 XSL 脚本,将生成声明记录。一旦变换完成,则医院应用程序将通过 internet 将 claimRecord 文档发送到保险公司。

    保险公司应用程序
    本节将描述保险公司应用程序的开发。首先介绍如何生成新持保人的 XML 文档,接着解释当接收到声明以后保险公司的应用程序如何处理声明报告。在生成声明的答复之前,保险公司应用程序需要合并声明报告和从已经存在的保险数据库中的持保人的数据。

    在我们这个示例中,当持保人第一次购买保险时,保险公司为每个持保人创建一个XML 文件 (policyHolder.xml) ,然后利用 IBM 的 DB2 XML Extender 把 XML 文件存储到 DB2 数据库。同样,IBM 的 DB2 XML Extender也可以用来从 DB2 数据库中以 XML 的形式检索回相应信息。下一节介绍如何使用 IBM Visual DTD 生成持保人的 DTD (policyHolder.dtd) 和介绍如何使用 IBM Visual XML Builder 生成持保人的 XML 文档。你现在可以略过开发部分而继续阅读示例部分。

    开发: 利用 Visual DTD
    对于这个示例,我们将创建一个 DTD 模板:该模板为包含保险公司的持保人的保单数据的 XML 文档提供它的结构信息。该 DTD 模板在 Visual XML Builder 中用来创建 XML 模板。下一节将看到如何使用 Visual XML Builder 来创建这些文件。这一节我们来看看如何利用 Visual DTD 创建 DTD 模板。

    打开 SmartGuide 后如下图 12所示,我们选择创建一个新模板并且命名该 DTD 为 policyHolder.dtd。

    图 12. Visual DTD -- SmartGuide 界面


    在 Visual DTD 中,attributes, elements, notations 和 entities 全部列在树型视窗的左边,而右边是设计区:你可以对你在树型视窗的选择项作修改。还有另外两个视窗,它们在需要给 DTD 增加内容时特别有用:一个是你的 DTD 的图形视窗 ,另一个是源 DTD 视窗。

    在树型视窗里的每一个 Notations, Entities 和 Elements 文件夹中都有弹出式菜单项,允许你增加新的对象。Attributes 也能以类似的方式加到现存的 elements 中去。Notation, Entity, Attribute 和 Element 的各个对象也有相应的弹出式菜单项用来增加或删除对象。在这一节里展示了一个完整的 policyHolder.dtd 用于说明在 DTDs 的创建和编辑过程中的多种重要的视图。点击任意的 Notations, Entities 和 Elements 文件夹都能显示出该类的所有对象。下图的右边列出了 policyHolder.dtd 的 Elements 文件夹中的所有对象。 (参阅原始大小抓屏图)

    图 13. Visual DTD --policyHolder.dtd 中的元素


    设计视窗依据你在树型视窗所选对象类型的不同而异。对于 element(下图 14所示为持保人的 Surname element),你可以改变它的命名、指定它的数据类型、或作注释,该注释会出现在 DTD 的相应 element 的定义中,而且如果存在内容样式组,则有内容样式组的相应选项。视窗低部的结果文本框显示当前 element 所属的 DTD 。一旦这些变化作用到 element 的定义,变化的结果就会反映出来。 (参阅原始大小抓屏图)

    图 14. Visual DTD -- Surname element


    所有的 element 都有内容样式,新创建的 element 默认有一个空的内容样式。对于一个 element 内容样式,空的内容样式的名称可以被改变。我们可以通过 element 的弹出式菜单把某一个组加入到内容样式,也可以通过内容样式组的连接器的弹出式菜单把 element 加入到某一个组中去。下图 15所示是 Policy element 的内容样式组的连接器的弹出式菜单,你能看到该内容样式组的设计视窗。该设计视窗的设置有:样式组的内容是否有序或可选;样式组在 element 中的出现次数:1次,>=0次,>=1次或可选。在下图这个例子中,你可知在 Policy 的内容样式组中的 element 是有序的且在每份 policy 里样式组只出现一次。 (参阅原始大小抓屏图)

    图 15. Visual DTD -- 新创建的元素


    在设计视窗里,你可依据 element name 选择内容样式的任一个 element 并选择该 element 在内容样式里的出现次数:1次,>=0次,>=1次或可选。下图的视窗里显示的是 Policy element 的内容样式组中引用 element Notes 的示例。 (参阅原始大小抓屏图)

    图 16. Visual DTD -- 设计视窗


    Attribute 也可以被加到 element 上去。下图显示了 PolicyType attribute 的设计情况。除了 attribute 的基本信息外,attribute 缺省值可被定义。在当前情形下,PolicyType attribute 为枚举型且其有效值的范围被指定,该值同时被设置为必需。 (参阅原始大小抓屏图)

    图 17. Visual DTD -- PolicyType 设计


    在 Visual DTD中,DTD 的结构(包括 element 和内容样式)显示为图型视图。下图中只显示了 DTD 树中被选结点部分视图,它是 policyHolder.dtd 的图型视图。(参阅原始大小抓屏图)

    图 18. Visual DTD -- policyHolder.dtd


    当你利用树型和设计视窗创建 DTD 时,你可以通过 source 视窗来看DTD。在任何时候,我们可通过 File 菜单的 Validate DTD 选项来验证 DTD 的有效性。现在,我们保存我们的这个 DTD 模板并最终用它在 Visual XML Builder 中生成持保人的 XML 文档。

    开发: 利用 Visual XML Builder
    在 Visual XML Builder 中生成 XML 文档有两种方式:modeller 和author。modeller 方式是一种非受限方式,它可以改变XML的样式并为输入的 XML 数据生成模板。Modeller 能够对输入的数据加限制:指定缺省值、允许重复或删除等操作。author 方式是一种受限方式,它不可以改变 XML 的样式并只能按模板输入 XML 数据,author 能够浏览模板的所有 element 和输入数据到视窗,该视窗是基于 modeller 创建的模板生成的。如果在这过程中出现错误,则错误会被标记并告知 author。一旦 author 完成了模板数据的录入,XML 文档就能据此生成。

    首先,policyHolder.dtd.xmi 被用作 XML 模板的基础,在 modeller 方式下该 XML 模板将被改变。在下面的 SmartGuide 图中,我们需要创建一个新的 policyHolder.xml.xmi 模板。 policyHolder.xml.xmi.

    图 19. Visual XML Builder -- SmartGuide 界面


    当模板被打开后,模板就以树型视图形式显示在视窗的左边;利用其它的工具打开被选项,则该项的详细信息反映在视窗的右边。紧挨着element图标表示该element的出现次数。出现次数的设置用来限制 modeller 可否复制或删除 element。下图为 Policy element 的弹出式菜单。出现次数设置为(1)表示 Policy element 可出现1或多次,这是因为持保人可以持有保险公司的多份保单。菜单中不含删除项是因为目前 Policy 在树中只出现一次。菜单中含有复制项表明可以为 PolicyHolder 的 Policy element 创建更多的实例。对于现在的示例,我们可以使用该项为持保人创建多于一个的保单。 (参阅原始大小抓屏图)

    图 20. Visual XML Builder -- Policy element


    注意到下图21的持保人有两个 policy 项,同时还显示了非叶结点 element Address 的设计视窗。视窗中有一个 edit as a group 选项,选择该选项意味着被选 element 所包含的所有 element 组成一个组并在录入数据时以组的形式显示给 author。当我们进入 author 方式时,我们就能看到把 Address element 作为组来编辑的效果。 (参阅原始大小抓屏图)

    图 21. Visual XML Builder -- Address element


    对于叶结点 element,modeller 使用设计视窗来设置限制 author 录入数据的选项:数据类型、缺省值和 element 是否可选。下图 22所示为 StartDate element 的设计视窗:其数据类型为 Date 且选择了缺省值。对于任意的叶结点 element,我们均可对 author 提出限制。 (参阅原始大小抓屏图)

    图 22. Visual XML Builder -- StartDate element


    Attribute 的设置不同于对 element 的那些设置。在 modeller 方式下,你可以为模板中的 attribute 选择缺省值。对于枚举型的 attribute,你可以从下拉的组合框里的有效选项中选择缺省值。在下面的 policyType attribute 例子中,它被设为"life"。某些 attribute 的值可能需要应用程序在生成 XML 时提供,这种情形就需要定义用户接口。在我们的这个示例中的一种情形就是保单号的取值:保单号不能随意取值且必须唯一。如下所示,policyNumber attribute 由类 newpolicy.getNumber 生成,该类使用 policyNumber 的 attribute 值 NN 来检测何时该生成一个保单号。 (参阅原始大小抓屏图)

    图 23. Visual XML Builder -- PolicyType 属性


    既然我们为 policyHolder 创建了模板,我们可以保存该模板,继而再以非受限的(author)方式打开它用于来说明 author 如何录入数据到该模板。SmartGuide 打开后如下:

    图 24. Visual XML Builder -- SmartGuide 界面


    在模板打开后我们看到工具的结构:左边为树型视窗而右边为编辑视窗。Author 给模板的 element 录入持保人的数据。图中所示是在 author 方式下 policyHolder 模板的情形,它定义了两个 policy element。并且当 address element 被选时,我们看到 address 内容样式的所有 element 作为一个域一起出现。这就是我们在 modeller 方式下把 address element 选作组来编辑的结果。注意到在 address 内容样式的 state elemen 上有一个红色 "X",它表示该 element 的值不正确:该 element 的值是必须的而 author 却把它空着。 (参阅原始大小抓屏图)

    图 25. Visual XML Builder -- Address element


    为了生成 XML 文档,author 的应该继续给 XML 模板剩余的 element 录入数据。然后,author 可以选择 File 菜单的 Generate XML 选项从该模板生成 XML 文档并把该 XML 文档保存到磁盘。现在,我们就有了持保人的信息来进行下面的示例。

    示例: 查询 Insurance Database 和过滤保单数据 Policy Data
    保险公司应用程序从医院接收到遵循同一 DTD 的声明报告,然后检索持保人的信息进而匹配声明报告、处理声明并且生成回复。我们再回头看一下示例略过的部分,声明报告由医院通过 internet 发送到保险公司,并由保险公司接收且保存为 claim.xml。

    保险公司应用程序使用声明报告中的社会安全号去检索 Insurance Database 里的持保人信息,得到的 XML 文档命名为 policyHolder.xml。现在需要利用该 XML 文档中与持保相关的部分来处理声明报告。为了从 policyHolder.xml 检索信息,我们需使用 Xpath 语句,它可通过 IBM Visual XML Query 来创建。示例的下一步就是合并声明报告和保单来生成声明回复。

    开发: 利用 Visual XML Query
    我们需要利用 policyHolder.xml 的医疗保险部分的信息来产生声明回复,这些信息是使用 Xpath 语句从 XML 文档中抽取的,而 Xpath 语句是利用 IBM Visual XML Query 来生成的。Xpath 语句是在开发是一次性写的,以后在你的应用中可被重用。IBM Visual XML Query 工具利用 XML 文档且允许你根据 XML 文档结构可视化地生成查询。一旦你生成查询,你就能在 XML 文档上执行它并且看到查询结果。当查询执行后,你可以把它存为批处理文件,这样你就可以使用 Lotus XSL processor 在命令行状态下执行该查询,或把该 Xpath 语句拷贝到你的应用程序代码。

    在打开 Visual XML Query 后,我们选中 policyHolder.xml 文档并打开它,这时 SmartGuide 如图所示:

    图 26. Visual XML Query -- SmartGuide 界面


    在打开 XML 文档后,你将看到 XML 文档结构位于 Visual XML Query 视窗的左边, Query Editor 位于 Visual XML Query 视窗的右上方,而 Query Result 位于 Visual XML Query 视窗的右下方。示例需要 Xpath 语句来检索 XML 文档包含的 Policy element 和 policyType attribute 的 health 值。这个例子将显示如何创建 Xpath 语句。

    使用 Visual XML Query 创建 Xpath 语句的方式有三种:拖放部分的 XML 结构到 Query Editor 和 XPath palette(见 Query Editor 的底部);充分利用 code assist 从 Query Editor 中输入;或直接输入 Xpath 语句到 Query Editor。在你创建 Xpath 语句的过程中,Query Editor 将标记任何的错误。Code assist 能够帮助决定和选择 Xpath 语句的下一步工作,它由 + spacebar 键激活。下图 27显示了利用 code assist 创建 Xpath 语句的开始部分。 (参阅原始大小抓屏图)

    图 27. Visual XML Query -- XPath 语句


    当你从 XML 结构树中拖放时,你可以看到绿色箭头的出现,它表明你可拖放的位置。而黑色箭头表明你当前所选定的位置。XPath palette 给出你 Xpath 组件的选项:Step Axis, Predicate 和 Operator。你可从 XPath palette 拖放到 Query Editor,同你从 XML 结构树中拖放时一样,也会出现绿色箭头。下图的 Query Editor 视窗显示了 Policy element 被拖放的处理情况。 (参阅原始大小抓屏图)

    图 28. Visual XML Query -- 查询编辑器


    不论何时,点击 Execute 按钮将执行查询并在 Query Result 视窗中显示查询结果。下图 29 显示了一个完整的 Policy Xpath 查询和查询执行的结果。 (参阅原始大小抓屏图)

    图 29. Visual XML Query -- Policy XPath 查询


    示例: 创建声明回复
    Xpath 查询是用来从持保人信息中筛选出持保人的医疗保险信息,持保人的医疗保险(policy.xml) 是筛选的结果。现在,policy.xml 文件和 claim.xml 文件需要一起转换并创建一个声明回复发送回医院作为声明的答复。转换过程是由 Java 类在运行时实现,而这些 Java 类是在开发阶段利用 Visual XML Transformation 来生成的。

    开发: Visual XML Transformation – 生成 Java Classes
    在 Visual XML Transformation 视窗里,我们需打开声明(claim.dtd)和医疗保险(policy.dtd)的 DTD,它们被合成从而形成一个声明回复。图中树型视窗里显示了两个打开的 DTD。为了合并,claim element 和 policy element 同时被选定并且选中弹出菜单的 Combine 项。 (参阅原始大小抓屏图)

    图 30. Visual XML Transformation -- 两个 DTD


    在 SmartGuide 中点击 Combine 菜单项后,你可以为目标 DTD 的新合并 element 命名和为它的内容样式选择 element 及 attribute。图中显示的是被创建的 claimResponse element。 (参阅原始大小抓屏图)

    Figure 31. Combining and filtering elements


    在完成 claim element 和 policy element 的合并后,我们又给 DTD 和 claimResponse element 的内容样式新增一个 amountInsured element。最后的 DTD 如下图。 (参阅原始大小抓屏图)

    Figure 32. Visual XML Transformation -- Updated DTD


    现在,Java 类就可以被生成:为了单元测试,除了需要指定 DTD 文件和 XML 文档外,根元素 claimResponse 也得选定。下图 33的 Transform 视窗的右边以 source 视图的形式显示了单元测试的结果 claimResponse XML 文档。

    (参阅原始大小抓屏图)
    合成的文件 claimResponse.xml 就用来答复医院并决定为解决声明所采取的进一步行动。

    Figure 33. Visual XML Transformation -- Transform view


    小结
    本文介绍了在两个商业事务中利用 XML 进行数据交换的一个具体例子。它阐明了在不同的应用、商业处理和数据格式情形下如何利用 XML 来成功地交换和使用商业信息。在我们的示例应用的开发过程中,我们使用了 IBM 的可视化 XML 工具: IBM Visual DTD, Visual XML Builder, Visual XML Transformation, Visual XML Creation 和 Visual XML Query 来创建和生成我们的应用。该示例阐述了在搭建商业应用的任务中 IBM 的可视化 XML 工具的有效性。

    参考资料


    从 alphaWorks 下载 Visual XML tools 的免费试用版。


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    xml这门语言太好了,我们共同努力吧!!!!!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/6 20:27:00
     
     gflei 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:4
      积分:71
      门派:XML.ORG.CN
      注册:2004/11/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gflei发送一个短消息 把gflei加入好友 查看gflei的个人资料 搜索gflei在『 XML在电子商务与电子政务中的应用 』的所有贴子 引用回复这个贴子 回复这个贴子 查看gflei的博客2
    发贴心情 
    记着把图片超连正确,看起来实在不方便
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/17 10:41:00
     
     yulinchen139 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:11
      积分:104
      门派:XML.ORG.CN
      注册:2004/12/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给yulinchen139发送一个短消息 把yulinchen139加入好友 查看yulinchen139的个人资料 搜索yulinchen139在『 XML在电子商务与电子政务中的应用 』的所有贴子 引用回复这个贴子 回复这个贴子 查看yulinchen139的博客3
    发贴心情 
    谢谢
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/6/24 0:09:00
     
     yulinchen139 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:11
      积分:104
      门派:XML.ORG.CN
      注册:2004/12/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给yulinchen139发送一个短消息 把yulinchen139加入好友 查看yulinchen139的个人资料 搜索yulinchen139在『 XML在电子商务与电子政务中的应用 』的所有贴子 引用回复这个贴子 回复这个贴子 查看yulinchen139的博客4
    发贴心情 
    很详细
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/6/24 0:10:00
     
     hailang 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:2
      积分:63
      门派:XML.ORG.CN
      注册:2005/10/30

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给hailang发送一个短消息 把hailang加入好友 查看hailang的个人资料 搜索hailang在『 XML在电子商务与电子政务中的应用 』的所有贴子 引用回复这个贴子 回复这个贴子 查看hailang的博客5
    发贴心情 
    写的不错!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/10/30 21:42:00
     
     lubing 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:13
      积分:106
      门派:XML.ORG.CN
      注册:2005/11/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给lubing发送一个短消息 把lubing加入好友 查看lubing的个人资料 搜索lubing在『 XML在电子商务与电子政务中的应用 』的所有贴子 引用回复这个贴子 回复这个贴子 查看lubing的博客6
    发贴心情 
    真是太好了~~~~~~~~~~
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/11/21 17:12:00
     
     笑笑佛516 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:21
      积分:137
      门派:XML.ORG.CN
      注册:2006/3/25

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给笑笑佛516发送一个短消息 把笑笑佛516加入好友 查看笑笑佛516的个人资料 搜索笑笑佛516在『 XML在电子商务与电子政务中的应用 』的所有贴子 引用回复这个贴子 回复这个贴子 查看笑笑佛516的博客7
    发贴心情 
    文章内容不错,就是看不到图片,不知能否告知出处
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/3/25 21:58:00
     
     笑笑佛516 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:21
      积分:137
      门派:XML.ORG.CN
      注册:2006/3/25

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给笑笑佛516发送一个短消息 把笑笑佛516加入好友 查看笑笑佛516的个人资料 搜索笑笑佛516在『 XML在电子商务与电子政务中的应用 』的所有贴子 引用回复这个贴子 回复这个贴子 查看笑笑佛516的博客8
    发贴心情 
    文章内容不错,就是看不到图片,不知能否告知出处
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/3/25 22:00:00
     
     chafer0516 美女呀,离线,快来找我吧!金牛座1983-5-16
      
      
      等级:大二(研究汇编)
      文章:46
      积分:239
      门派:XML.ORG.CN
      注册:2006/4/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给chafer0516发送一个短消息 把chafer0516加入好友 查看chafer0516的个人资料 搜索chafer0516在『 XML在电子商务与电子政务中的应用 』的所有贴子 点击这里发送电邮给chafer0516 引用回复这个贴子 回复这个贴子 查看chafer0516的博客9
    发贴心情 
    各位哥哥姐姐怎么看图啊?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/4/21 13:51:00
     
     GoogleAdSense金牛座1983-5-16
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML在电子商务与电子政务中的应用 』的所有贴子 点击这里发送电邮给Google AdSense 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/30 11:53:12

    本主题贴数9,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    125.000ms