许多开发人员都非常熟悉面向对象的分析和设计工具。这些工具常用于辅助数据和组件模型的开发,而这些数据的组件模型是构建立大型软件系统的组成部分。然而,开发者如果使用Rational Rose开发工具,这一工具一定会带来惊喜,因为与其它你平时所用的组件和模型的方法一样,这一工具可以建立你的XML文档。
为了可以在Rational Rose中建立XML模型,你必须理解一些基本的概念。首先,文档中的每一节点都会成为一个类。你可以使用的四个主要的XML类的类型: 元素,实体,组,以及标记。对于我们的目的,我们将仅使用到元素和组。
一个元素是具有某些特性的一个基本类,在Rational Rose中你可以指定这一类的类型。对于元素,你能选择ANY,Content Model,PCDATA,或者EMPTY。显然,一个EMPTY元素为空,一个PCDATA类型为一个字符数据容器。对于一些复杂的类型,你可以使用Content Model。
对于包含字符数据的简单元素,你可以使用PCDATA类型。然而,许多元素都包含一个或更多的子元素。对于这些复杂的元素,你必须使用Content Model。
为了能够将元素之间的关系指定到Rational Rose,你也可以使用组类型。实质上,每个Content Model元素都具有一个相关的组元素。该组元素应该被作为Rational Rose里的一个嵌套类被创建。Content Model元素的每个子元素都会通过将其与Content Model元素的组元素相关联而被定义。
现在让我们来看一个简短的范例。我们以在Rational Rose中建立一个新的Rational Unified Process (RUP)工程为开始。你应该看到Logical View中的Welcome Class Diagram。你可以删除这张图表中的节点,但这是没有必要。
点击工具条上的Class图标和点击图表以建立一个新的类。将其命名为Order。双击Order类并且选择DTDElement。在Specification对话框中,选择Content Model类型。
在树视图中,右键点击Order类并选择New | Nested类。将其命名为新的类Order_grp。点击和拖动Order_grp类到类图表中。双击Order_grp类并且选择DTDGroup。组类型应该是连续的并且只能出现一个。接着,展开树视图中的选项,将Order_grp拖动到类图表中。
分别建立两个新的名为Item和Customer的类。这两个类被定义为Content Model类型的DTDElements。从Order_grp组元素中建立一个新的关联到Item类中,并且对Customer类重复以上的操作。
双击Item类的新关联,并将其命名为Item。然后点击Role A Detail标签并在多重下拉框里选择1。这一步会指明Order元素只会有一个Customer元素作为其子元素。
你可以重复这一过程,以完整地完成你的XML DTD模型。对于每一复杂单元,简单地指定Content Model类型然后创建同DTDGroup框相关联的嵌套类。这样你的子元素应该与组元素有关联。当你已经完成模型的建立,你可以右键点击并选择XML_DTD | Generate DTD以建立DTD信息。从这一菜单可以浏览DTD源代码。
你也可以通过选择Tools | XML_DTD | Reverse Engineer XML_DTD将DTD反向转换到Rational Rose中。在这个过程完成之后,你的Rational Rose模型会包含有用于你DTD类的新工具包。