定向图形标记语言 (DGML) 引用
定向图形标记语言 (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>