定向图形标记语言 (DGML) 描述用于可视化和执行复杂分析的信息,并且是用于存留 Visual Studio 中的代码图的格式。 DGML 使用简单 XML 来描述循环和非循环的定向关系图。 定向关系图是一组由链接或边缘连接的节点。 可以使用节点和链接来表示网络结构,如软件项目中的元素。
请注意,某些版本的 Visual Studio 仅支持部分 DGML 功能,请参阅体系结构和建模工具的版本支持。
备注
在编辑 .dgml 文件时,IntelliSense 可帮助您标识对每个元素及其值可用的特性。 若要指定特性中的颜色,请使用常用颜色的名称,如“Blue”或 ARGB 十六进制值(如“#ffa0b1c3”)。 DGML 使用一小部分 Windows Presentation Foundation (WPF) 颜色定义格式。 有关详细信息,请参阅 Colors 类。
DGML 语法
下表描述在 DGML 中使用的各种元素:
<DirectedGraph></DirectedGraph>此元素是代码图 (.dgml) 文档的根元素。 所有其他 DGML 元素将在此元素的范围内出现。
下面的列表描述可包含的可选特性:
Background- 代码图背景的颜色BackgroundImage- 要用作代码图背景的图像文件的位置。GraphDirection- 代码图设置为树布局 (Sugiyama) 时排列节点,使大多数链接都按指定方向流动:TopToBottom、BottomToTop、LeftToRight或RightToLeft。 请参阅更改代码图布局。Layout- 将代码图设置为下列布局:None、Sugiyama(树布局)、ForceDirected(快速群集)或DependencyMatrix。 请参阅更改代码图布局。NeighborhoodDistance- 代码图设置为树布局或快速群集布局时,仅显示距所选节点指定链接数 (1-7) 的节点。 请参阅更改代码图布局。示例:
<?xml version="1.0" encoding="utf-8"?> <DirectedGraph Title="DrivingTest" Background="Blue" xmlns="http://schemas.microsoft.com/vs/2009/dgml"> <Nodes> ... </Nodes> <Links> ... </Links> <Categories> ... </Categories> <Properties> ... </Properties> </DirectedGraph><Nodes></Nodes>此可选元素包含
<Node/>元素的列表,这些元素可定义代码图上的节点。 有关更多信息,请参见<Node/>元素。备注
在
<Link/>元素中引用未定义的节点时,代码图会自动创建<Node/>元素。示例:
<?xml version="1.0" encoding="utf-8"?> <DirectedGraph Title="DrivingTest" xmlns="http://schemas.microsoft.com/vs/2009/dgml"> <Nodes> <Node ... /> </Nodes> <Links> <Link ... /> </Links> </DirectedGraph><Node/>此元素定义单个节点。 该节点将出现在
<Nodes><Nodes/>元素列表内。此元素必须包括以下特性:
Id- 节点的唯一名称和Label特性的默认值(如果未指定单独的Label特性)。 此名称必须与引用它的链接的Source或Target特性匹配。下面的列表描述可包含的部分可选特性:
Label- 节点的显示名称。样式特性。 请参阅 Customize code maps by editing the DGML files。
Category- 标识共享此特性的元素的类别的名称。 有关更多信息,请参见<Category/>元素。Property- 标识具有相同属性值的元素的属性的名称。 有关更多信息,请参见<Property/>元素。Group- 如果节点包含其他节点,请将此特性设置为Expanded或Collapsed以显示或隐藏其内容。 必须有一个<Link/>元素,此元素包含Category="Contains"特性并将父节点指定为源节点,而将子节点指定为目标节点。 请参阅对码位元素分组。Visibility- 将此特性设置为Visible、Hidden或Collapsed。 使用System.Windows.Visibility。 请参阅隐藏或显示节点和链接。Reference- 将此特性设置为链接到文档或 URL。 请参阅将文档或 URL 链接到码位元素和链接。示例:
<?xml version="1.0" encoding="utf-8"?> <DirectedGraph Title="DrivingTest" xmlns="http://schemas.microsoft.com/vs/2009/dgml"> <Nodes> <Node Id="Driver" Label="Student" Category="Person" /> <Node Id="Passenger" Label="Instructor" Category="Person" /> <Node Id="Car" Label="Car" Category="Automobile" /> <Node Id="Truck" Label="Truck" Category="Automobile" /> </Nodes> <Links> <Link ... /> </Links> <Categories> <Category Id="Person" Background="Orange" /> <Category Id="Automobile" Background="Yellow"/> </Categories> </DirectedGraph><Links></Links>此元素包含
<Link>元素的列表,这些元素可定义两个节点之间的链接。 有关更多信息,请参见<Link/>元素。示例:
<?xml version="1.0" encoding="utf-8"?> <DirectedGraph Title="DrivingTest" xmlns="http://schemas.microsoft.com/vs/2009/dgml"> <Links> <Link ... /> </Links> </DirectedGraph><Link/>此元素定义一个用于将源节点连接到目标节点的链接。 该节点将出现在
<Links></Links>元素列表内。备注
如果此元素引用未定义的节点,则代码图文档将自动创建具有指定特性(如果有)的节点。
此元素必须包括以下特性:
Source- 链接的源节点Target- 链接的目标节点下面的列表描述可包含的部分可选特性:
Label- 链接的显示名称样式特性。 请参阅 Customize code maps by editing the DGML files。
Category- 标识共享此特性的元素的类别的名称。 有关更多信息,请参见<Category/>元素。Property- 标识具有相同属性值的元素的属性的名称。 有关更多信息,请参见<Property/>元素。示例:
<?xml version="1.0" encoding="utf-8"?> <DirectedGraph Title="DrivingTest" xmlns="http://schemas.microsoft.com/vs/2009/dgml"> <Nodes> <Node Id="Driver" Label="Student" Category="Person" /> <Node Id="Passenger" Label="Instructor" Category="Person" /> <Node Id="Car" Label="Car" Category="Automobile" /> <Node Id="Truck" Label="Truck" Category="Automobile" /> </Nodes> <Links> <Category Id="Person" Background="Orange" /> <Category Id="Automobile" Background="Yellow"/> <Link Source="Driver" Target="Car" Label="Passed" Stroke="Black" Background="Green" Category="PassedTest" /> <Link Source="Driver" Target="Truck" Label="Failed" Stroke="Black" Background="Red" Category="PassedTest" /> </Links> </DirectedGraph><Categories></Categories>此元素包含
<Category/>元素的列表。 有关更多信息,请参见<Category/>元素。示例:
<?xml version="1.0" encoding="utf-8"?> <DirectedGraph Title="DrivingTest" xmlns="http://schemas.microsoft.com/vs/2009/dgml"> <Categories> <Category ... /> </Categories> </DirectedGraph><Category/>此元素定义
Category特性,此特性用于标识共享此特性的元素。Category特性可用于组织代码图元素,通过继承提供共享特性或定义其他元数据。此元素必须包括以下特性:
Id- 类别的唯一名称和Label特性的默认值(如果未指定单独的Label特性)。下面的列表描述可包含的部分可选特性:
Label- 类别的读者友好名称。BasedOn- 当前元素的<Category/>继承自的父类别。在此元素的示例中,
FailedTest类别从Stroke类别继承其PassedTest特性。 请参阅通过编辑 DGML 文件自定义代码图中的“创建分层类别”。类别还提供一些基本模板行为,这些行为用于控制节点和链接在代码图上显示的外观。 请参阅 Customize code maps by editing the DGML files。
示例:
<?xml version="1.0" encoding="utf-8"?> <DirectedGraph Title="DrivingTest" xmlns="http://schemas.microsoft.com/vs/2009/dgml"> <Nodes> <Node Id="Driver" Label="Driver" Category="Person" /> <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> </DirectedGraph><Properties></Properties>此元素包含
<Property/>元素的列表。 有关更多信息,请参见<Property/>元素。示例:
<?xml version="1.0" encoding="utf-8"?> <DirectedGraph Title="DrivingTest" xmlns="http://schemas.microsoft.com/vs/2009/dgml"> <Properties> <Property ... /> </Properties> </DirectedGraph><Property/>此元素定义
Property特性,此特性可用于将值分配给任何 DGML 元素或特性(包括类别和其他属性)。此元素必须包括以下特性:
Id- 该属性的唯一名称和Label特性的默认值(如果未指定单独的Label特性)。DataType- 该属性存储的数据类型如果您希望该属性在“属性”窗口中显示,请使用
Label属性指定该属性的显示名称。请参阅向码位元素和链接分配类别。
示例:
<?xml version="1.0" encoding="utf-8"?> <DirectedGraph Title="DrivingTest" xmlns="http://schemas.microsoft.com/vs/2009/dgml"> <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>
常用路径的别名
将常用路径替换为别名有助于减小 .dgml 文件的大小和加载或保存该文件所需的时间。 若要创建别名,请在 .dgml 文件的结尾处添加 <Paths></Paths> 部分。 在此部分添加 <Path/> 元素以定义路径的别名:
<Paths>
<Path Id="MyPathAlias" Value="C:\...\..." />
</Paths>
若要从 .dgml 文件中的某个元素引用别名,请用美元符号“$”和括号“()”将 <Path/> 元素的 Id 括起来:
<Nodes>
<Node Id="MyNode" Reference="$(MyPathAlias)MyDocument.txt" />
</Nodes>
<Properties>
<Property Id="Reference" Label="My Document" DataType="System.String" IsReference="True" />
</Properties>