博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用Rational Rose给XML DTD造型
阅读量:2498 次
发布时间:2019-05-11

本文共 1901 字,大约阅读时间需要 6 分钟。

  很多开发人员都熟悉面向对象的分析和设计工具。这些工具常常都被用来辅助数据和组件模型的开发,而这些模型要被用来搭建大型的软件系统。对于使用Rational Rose开发工具的开发人员来说,他们会惊奇地发现,你可以以给自己组件和模块同样的造型方式来给XML文档造型。

  基本概念

  要在Rational Rose里开始创建XML模型,你就需要了解一些基本的概念。首先,你文档里的每个节点都会成为一个类。你可以使用的XML类一共有四种类型:元素、实体、组和符号。在本文里,我们只会用到元素和组。

  元素是具有某些特性的基本类,它们由你在Rational Rose所指定的类型来定义。对于元素而言,你可以选择ANY(任意)、Content Model(内容模型)、PCDATA(PC数据)或者EMPTY(空)。EMPTY元素显然是空的,而PCDATA类型是一个字符数据容器。对于模式复杂的类型,你要使用内容模型。

  内容模型和组

  对于包含有字符数据的简单元素,你要使用PCDATA类型。但是,你的很多元素都会包含一个或者多个子元素。对于这样的复杂元素,你必须使用内容模型类型。

  为了向Rational Rose指明元素之间的关系,你还要使用组类型。从本质上讲,每个内容模型元素都会拥有一个相关联的组元素。该组元素应该被作为Rational Rose里的一个嵌套类被创建。内容模型元素的每个子元素都会通过将其与内容模型元素的组元素相关联而被定义。

  快速演练

  现在让我们来演练一个小例子。我们就从在Rational Rose创建一个新的Rational统一进程(Rational Unified Process,RUP)项目开始吧。你应该会在逻辑视图(Logical View)里看到欢迎类图表(Welcome Class Diagram)。你可以在这个图表内删除节点;不过这没有必要。

  点击工具条上的类(Class)图标,再点击图表创建一个新的类。将这类命名为Order。双击Order类,并选择DTDElement框。在类规格(Class Specification)对话框里选择内容模型类型。

  在树型视图里右击Order类,并选择新建|嵌套类(New | Nested Class)将这个新的类命名为Order_grp。点击并将Order_grp类拖放到类图表里。双击Order_grp类并选择DTDGroup框。放在一组的类应该是Sequence(顺序),其出现次数应该是One(一次)。然后,展开树型视图里的关联(Associations)项目,并将Order_grp关联拖放到类图表里。

  分别创建两个新的类——Item和Customer。这两个类都应该是被定义为内容模型类型的DTDElement。创建Order_grp组元素同Item类的新关联,并对Customer类进行同样的操作。

  双击Item类的新关联,并将它命名为Item。然后点击角色A的细节(Role A Detail)选项卡,并在多重下拉框里选择1.n。这一步会指明Order元素会有一个或者多个Item元素作为其子元素。

  双击Customer类的关联,并将它命名为Customer。点击角色A的细节选项卡,在多重下拉框里选择1。这一步会指明Order元素只会有一个Customer元素作为其子元素。

  如果有必要的话,你可以重复这一过程,以完成你的XML DTD。对于每个复杂的元素,只用简单地指定内容模型类型,然后创建同DTDGroup框相关联的嵌套类就行了。你的子元素然后就应该同组元素关联在一起了。当你完成了自己的模型之后,你就可以右击这些类,并选择XML_DTD|生成DTD(XML_DTD | Generate DTD)来生成DTD的信息。你还可以从这个菜单里浏览DTD的源代码。

  逆向工程

  你也可以通过选择工具|XML_DTD|逆向工程XML_DTD(Tools | XML_DTD | Reverse Engineer XML_DTD)将你的DTD逆向转换进Rational Rose里。在这个过程完成之后,你的Rational Rose模型会包含有用于你DTD类的新工具包。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639375/viewspace-157783/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12639375/viewspace-157783/

你可能感兴趣的文章
JavaScript面试题
查看>>
TCollector
查看>>
我的博客网站开发6——博文关键字搜索
查看>>
vim7.1在windows下的编码设置[转]
查看>>
同步器之Exchanger
查看>>
IO流
查看>>
专家观点:即使在云中 硬件同样至关重要
查看>>
loadrunner11录制不成功解决方法(收集)
查看>>
jQuery 基础
查看>>
USE平台构件属性无法显示的一种解决办法
查看>>
齐次坐标
查看>>
[SQLite]使用记录
查看>>
HttpRequest 类
查看>>
Qt使用信号与槽时出现的错误“Incompatible sender/receiver arguments”
查看>>
MYSQL:基础——触发器
查看>>
JavaScript:学习笔记(9)——Promise对象
查看>>
内存泄露检测 vld
查看>>
优秀HTML5网站学习范例:从“饥饿游戏浏览器”谈用户体验
查看>>
spring security原理
查看>>
js 验证各种格式类型的正则表达式
查看>>