Visual Studio 2010 建模學習(一) - 什么是DGML?
DGML是Directed Graph Markup Language的縮寫,中文應該翻譯為“有向圖標記語言”,我記得有向圖應該是線性代數(shù)中的一個概念。 DGML是微軟在Visual Studio 2010中開始引入的一種完全符合XML格式語言,它主要是用來描述循環(huán)(cyclical)和非循環(huán)(acyclic)的有向圖。有向圖是由一系列的由邊(link/edge)進行互聯(lián)的節(jié)點(node)組成。
DGML的語法還是非常簡潔的,最簡單的DGML文件只需要有DirectedGraph和Links這兩個元素就可以了。在Visual Studio 2010中新提供了一個"Directed Graph Document”文件模版,如下圖所示:由這個模版可以自動生成一個最簡單DGML文件,生成的代碼如下:
<xml version="1.0" encoding="utf-8"?> <DirectedGraph xmlns=" <Nodes /> <Links /> <DirectedGraph>
其中,DirectedGraph是整個文件的根節(jié)點,'http://schemas.microsoft.com/vs/2009/dgml'是所有DGML文件默認namespace。元素實際上是可選的,但在Visual Studio中默認都給加上了,在它下面可以定義各個節(jié)點。DGML允許直接在中引用未定義的節(jié)點,在處理時隱式的為其創(chuàng)建相應的節(jié)點。是元素的集合,Link具體定義了有向圖中的邊。下面是一個定義了一條邊表示了上海到合肥之間動車的DGML:
<xml version="1.0" encoding="utf-8"?> <DirectedGraph Title="火車時刻表" xmlns=" <Nodes> <Node Id="上海" Label="上海" /> <Node Id="合肥" Label="合肥" /> Nodes> <Links> <Link Source="上海" Target="合肥" Label="D5478" /> Links> <Properties> <Property Id="Label" Label="Label" Description="Displayable label of an Annotatable object" DataType="System.String" /> <Property Id="Title" DataType="System.String" /> <Properties> <DirectedGraph>
這段代碼定義了一條由節(jié)點“上!钡健昂戏省钡倪叄珒H有其中加了下劃線的一行代碼是我手工編寫的,其余的代碼全部是由Visual Studio DGML處理引擎自動分析生成的?梢钥吹,它自動從元素中分析提取出了兩個node,并把它們的Id屬性分別負值為"上海"和"合肥"。Link和Node都有Label屬性,它用來指定節(jié)點/邊的顯示名稱,DGML處理和顯示工具根據(jù)這個屬性來顯示具體的名稱,如Visual Studio 2010會將上面的DGML文件顯示為:
作為介紹Visual Studio 2010建模工具的開篇,這里只是簡單介紹DGML的基本語法,后續(xù)還會不斷的豐富DGML的更多內容以及它在實際VS 2010建模工具中的應用。 其對應的DGML代碼如下:
<?xml version="1.0" encoding="utf-8"?> <DirectedGraph Title="DrivingTest" xmlns=" <Nodes> <Node Id="Driver" Label="Driver" Category="Person" DrivingAge="18"/> <Node Id="Car" Label="Car" Category="Automobile" /> <Node Id="Truck" Label="Truck" Category="Automobile" /> <Node Id="Passenger" Category="Person" /> </Nodes> <Links> <Link Source="Driver" Target="Car" Label="Passed" Category="PassedTest" /> <Link Source="Driver" Target="Truck" Label="Failed" Category="FailedTest" /> </Links> <Categories> <Category Id="Person" Background="Orange" /> <Category Id="Automobile" Background="Yellow"/> <Category Id="PassedTest" Label="Passed" Stroke="Black" Background="Green" /> <Category Id="FailedTest" Label="Failed" BasedOn="PassedTest" Background="Red" /> </Categories> <Properties> <Property Id="DrivingAge" Label="Driving Age" DataType="System.Int32" /> </Properties> </DirectedGraph>
本文鏈接:http://m.95time.cn/tech/program/2010/7580.asp
出處:相關論壇
責任編輯:bluehearts
◎進入論壇網絡編程版塊參加討論
|