很多開發人員都熟悉面向對象的分析和設計工具。這些工具常常都被用來輔助數據和組件模型的開發,而這些模型要被用來搭建大型的軟件系統。對于使用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類的新工具包。
文章來源于領測軟件測試網 http://www.kjueaiud.com/