Informations de référence sur le langage DGML (Directed Graph Markup Language)
Le langage DGML (Directed Graph Markup Language) décrit les informations utilisées pour la visualisation et l'analyse de complexité. Il s'agit du format utilisé pour faire persister des cartes de code dans Visual Studio. Il utilise le langage XML simple pour décrire des graphiques orientés à la fois cycliques et acycliques. Un graphique orienté est un ensemble de nœuds reliés par des liens (ou bords). Les nœuds et les liens peuvent être utilisés pour représenter des structures interconnectées, telles que les éléments d'un projet logiciel.
Notez que certaines versions de Visual Studio prennent en charge uniquement un sous-ensemble des capacités de DGML. Consultez Prise en charge des outils d’architecture et de modélisation en fonction des versions.
Notes
Lorsque vous modifiez un fichier .dgml, IntelliSense vous aide à identifier les attributs qui sont disponibles pour chaque élément, ainsi que leurs valeurs. Pour spécifier la couleur dans un attribut, utilisez le nom des couleurs courantes (« Bleu », par exemple) ou des valeurs hexadécimales ARVB (« #ffa0b1c3 », par exemple). Le langage DGML utilise un sous-ensemble réduit de formats de définition de couleur WPF (Windows Presentation Foundation). Pour plus d'information, consultez Colors, classe.
Syntaxe du langage DGML
Le tableau suivant décrit les types d'éléments utilisés en langage DGML :
<DirectedGraph></DirectedGraph>
Cet élément est l'élément racine du document de carte de code (.dgml). Tous les autres éléments DGML s'inscrivent dans la portée de cet élément.
La liste suivante décrit des attributs facultatifs que vous pouvez inclure :
Background
– Couleur de l’arrière-plan de la carte.BackgroundImage
– Emplacement du fichier image à utiliser en tant qu’arrière-plan de la carte.GraphDirection
– Quand la carte se présente sous forme d’arborescence (Sugiyama
), disposez les nœuds de sorte que la plupart des liens suivent la direction spécifiée :TopToBottom
,BottomToTop
,LeftToRight
ouRightToLeft
. Consultez Modifier la disposition de la carte.Layout
– Attribuez à la carte les dispositions suivantes :None
,Sugiyama
(arborescence),ForceDirected
(clusters rapides) ouDependencyMatrix
. Consultez Modifier la disposition de la carte.NeighborhoodDistance
– Quand la carte se présente sous forme d’arborescence ou de clusters rapides, seuls s’affichent les nœuds qui sont séparés d’un nombre spécifié de liens (de 1 à 7) des nœuds sélectionnés. Consultez Modifier la disposition de la carte.Exemple :
<?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>
Cet élément facultatif contient une liste d'éléments
<Node/>
qui définissent des nœuds sur la carte. Pour plus d'informations, consultez l'élément<Node/>
.Notes
Quand vous faites référence à un nœud non défini dans un élément
<Link/>
, la carte crée automatiquement un élément<Node/>
.Exemple :
<?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/>
Cet élément définit un nœud unique. Il figure dans la liste des éléments
<Nodes><Nodes/>
.Cet élément doit inclure les attributs suivants :
Id
– Nom unique du nœud et valeur par défaut de l’attributLabel
, si aucun attributLabel
distinct n’est spécifié. Ce nom doit correspondre à l'attributSource
ouTarget
du lien qui y fait référence.La liste suivante décrit certains des attributs facultatifs que vous pouvez inclure :
Label
– Nom d’affichage du nœud.Attributs Style. Consultez Customize code maps by editing the DGML files.
Category
– Nom d’une catégorie qui identifie les éléments qui partagent cet attribut. Pour plus d'informations, consultez l'élément<Category/>
.Property
– Nom d'une propriété qui identifie des éléments qui ont la même valeur de propriété. Pour plus d'informations, consultez l'élément<Property/>
.Group
- Si le nœud contient d'autres nœuds, affectez à cet attribut la valeurExpanded
ouCollapsed
pour respectivement en afficher ou en masquer le contenu. Un élément<Link/>
doit inclure l'attributCategory="Contains"
et spécifier le nœud parent en tant que nœud source et le nœud enfant en tant que nœud cible. Consultez Regrouper des éléments de code.Visibility
– Attribuez à cet attribut la valeurVisible
,Hidden
ouCollapsed
. UtiliseSystem.Windows.Visibility
. Consultez Masquer ou afficher les nœuds et des liens.Reference
- Définissez cet attribut pour le lier à un document ou une URL. Consultez Lier des documents ou des URL à des éléments de code et des liens.Exemple :
<?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>
Cet élément contient la liste des éléments
<Link>
qui définissent des liens entre des nœuds. Pour plus d'informations, consultez l'élément<Link/>
.Exemple :
<?xml version="1.0" encoding="utf-8"?> <DirectedGraph Title="DrivingTest" xmlns="http://schemas.microsoft.com/vs/2009/dgml"> <Links> <Link ... /> </Links> </DirectedGraph>
<Link/>
Cet élément définit un lien unique qui relie un nœud source à un nœud cible. Il figure dans la liste des éléments
<Links></Links>
.Notes
Si cet élément fait référence à un nœud non défini, le document de la carte crée automatiquement un nœud qui possède les attributs spécifiés, le cas échéant.
Cet élément doit inclure les attributs suivants :
Source
– Nœud source du lien.Target
- Nœud cible du lien.La liste suivante décrit certains des attributs facultatifs que vous pouvez inclure :
Label
– Nom d’affichage du lien.Attributs Style. Consultez Customize code maps by editing the DGML files.
Category
– Nom d’une catégorie qui identifie les éléments qui partagent cet attribut. Pour plus d'informations, consultez l'élément<Category/>
.Property
– Nom d'une propriété qui identifie des éléments qui ont la même valeur de propriété. Pour plus d'informations, consultez l'élément<Property/>
.Exemple :
<?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>
Cet élément contient la liste des éléments
<Category/>
. Pour plus d'informations, consultez l'élément<Category/>
.Exemple :
<?xml version="1.0" encoding="utf-8"?> <DirectedGraph Title="DrivingTest" xmlns="http://schemas.microsoft.com/vs/2009/dgml"> <Categories> <Category ... /> </Categories> </DirectedGraph>
<Category/>
Cet élément définit un attribut
Category
qui permet d'identifier les éléments qui partagent cet attribut. Un attributCategory
peut être utilisé pour organiser des éléments de carte, proposer des attributs partagés par héritage ou définir d'autres métadonnées.Cet élément doit inclure les attributs suivants :
Id
- Nom unique de la catégorie et valeur par défaut de l'attributLabel
, lorsqu'aucun attributLabel
séparé n'est spécifié.La liste suivante décrit certains des attributs facultatifs que vous pouvez inclure :
Label
- Nom convivial de la catégorie.BasedOn
– Catégorie parente dont hérite<Category/>
de l’élément actuel.Dans l'exemple donné pour cet élément, la catégorie
FailedTest
hérite de son attributStroke
à partir de la catégoriePassedTest
. Consultez « Pour créer des catégories hiérarchiques » dans Personnaliser les cartes de code en modifiant les fichiers DGML.Les catégories proposent également un comportement de modèle de base qui contrôle l'apparence des nœuds et des liens lorsqu'ils s'affichent sur une carte. Consultez Customize code maps by editing the DGML files.
Exemple :
<?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>
Cet élément contient la liste des éléments
<Property/>
. Pour plus d'informations, consultez l'élément<Property/>
.Exemple :
<?xml version="1.0" encoding="utf-8"?> <DirectedGraph Title="DrivingTest" xmlns="http://schemas.microsoft.com/vs/2009/dgml"> <Properties> <Property ... /> </Properties> </DirectedGraph>
<Property/>
Cet élément définit un attribut
Property
que vous pouvez utiliser pour assigner une valeur à tout attribut ou élément DGML, y compris des catégories et autres propriétés.Cet élément doit inclure les attributs suivants :
Id
– Nom unique de la propriété et valeur par défaut de l’attributLabel
, si aucun attributLabel
distinct n’est spécifié.DataType
– Type de données stockées par la propriété.Si vous voulez que la propriété figure dans la fenêtre Propriétés, utilisez la propriété
Label
pour spécifier le nom d’affichage de la propriété.Consultez Assigner des catégories aux éléments de code et aux liens.
Exemple :
<?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>
Alias pour les chemins d'accès fréquemment utilisés
Lorsque vous remplacez des chemins d'accès fréquemment utilisés par des alias, vous réduisez la taille du fichier .dgml, ainsi que la durée nécessaire au téléchargement et à l'enregistrement du fichier. Pour créer un alias, ajoutez une section <Paths></Paths>
à la fin du fichier .dgml. Dans cette section, ajoutez un élément <Path/>
pour définir un alias pour le chemin d'accès :
<Paths>
<Path Id="MyPathAlias" Value="C:\...\..." />
</Paths>
Pour référencer l’alias à partir d’un élément du fichier .dgml, mettez l’Id
de l’élément <Path/> entre parenthèses (()) et faites précéder le tout du signe dollar ($) :
<Nodes>
<Node Id="MyNode" Reference="$(MyPathAlias)MyDocument.txt" />
</Nodes>
<Properties>
<Property Id="Reference" Label="My Document" DataType="System.String" IsReference="True" />
</Properties>