Справочник по языку DGML
Язык разметки направленных графов (Directed Graph Markup Language, DGML) описывает информацию, которая используется для визуализации и выполнения анализов сложности, а также служит форматом, в котором Visual Studio хранит карты кодов. Для описания циклических и ациклических направленных графов в DGML используется простой XML-код. Направленный граф представляет собой набор узлов, соединенных ссылками или границами. Узлы и ссылки могут быть использованы для представления сетевых структур, например элементов программного проекта.
Обратите внимание, что некоторые версии Visual Studio поддерживают только подмножество возможностей DGML, см . сведения о поддержке версий для средств архитектуры и моделирования.
Примечание.
При редактировании DGML-файла IntelliSense показывает атрибуты, доступные для данного элемента, и их значения. Задавая цвет с помощью атрибута, можно использовать имена для обычных цветов, например "Blue", или шестнадцатеричные значения ARGB, например "#ffa0b1c3". DGML использует небольшое подмножество форматов определения цветов Windows Presentation Foundation (WPF). Дополнительные сведения см. в разделе "Класс цветов".
Синтаксис 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-файла и время, требуемое на загрузку или сохранение файла. Для создания псевдонима добавьте раздел <Paths></Paths>
в конце DGML-файла. В этом разделе добавьте элемент <Path/>
для того, чтобы определить псевдоним для пути.
<Paths>
<Path Id="MyPathAlias" Value="C:\...\..." />
</Paths>
Чтобы ссылаться Id
<на псевдоним из элемента в DGML-файле, заключите элемент Path/> с символом доллара ($) и скобками (()):
<Nodes>
<Node Id="MyNode" Reference="$(MyPathAlias)MyDocument.txt" />
</Nodes>
<Properties>
<Property Id="Reference" Label="My Document" DataType="System.String" IsReference="True" />
</Properties>