Riferimento di Directed Graph Markup Language (DGML)
Directed Graph Markup Language (DGML) descrive le informazioni usate per la visualizzazione e per eseguire l'analisi di complessità, ed è il formato usato per rendere persistenti le mappe codice in Visual Studio. Usa semplice codice XML per descrivere grafici diretti ciclici e aciclici. Un grafico diretto è un set di nodi connessi da collegamenti o bordi. I nodi e i collegamenti possono essere utilizzati per rappresentare strutture di rete, ad esempio elementi in un progetto software.
Si noti che alcune versioni di Visual Studio supportano solo un subset di funzionalità DGML, vedere Supporto della versione per gli strumenti di architettura e modellazione.
Nota
Quando si modifica un file con estensione dgml, IntelliSense consente di identificare gli attributi disponibili per ogni elemento e i relativi valori. Per specificare il colore in un attributo, utilizzare nomi dei colori comuni, come "Blue", o valori ARGB esadecimali, come "#ffa0b1c3." In DGML viene utilizzato un piccolo subset di formati di definizione dei colori WPF (Windows Presentation Foundation). Per altre informazioni, vedere Classe Colors.
Sintassi DGML
Nella tabella seguente sono descritti i tipi di elementi usati in DGML:
<DirectedGraph></DirectedGraph>
Questo elemento è l'elemento radice di un documento mappa codice (.dgml). Tutti gli altri elementi DGML sono inclusi nell'ambito di questo elemento.
Nell'elenco seguente vengono descritti gli attributi facoltativi che è possibile includere:
Background
- Colore dello sfondo della mappaBackgroundImage
- Posizione di un file di immagine da usare come sfondo della mappa.GraphDirection
- Quando la mappa è impostata sul layout albero (Sugiyama
), disporre i nodi in modo che la maggior parte dei collegamenti fluisca nella direzione specificata:TopToBottom
,BottomToTop
,LeftToRight
oRightToLeft
. Vedere Modificare il layout della mappa.Layout
- Impostare la mappa sui layout seguenti:None
,Sugiyama
(layout albero),ForceDirected
(cluster rapidi) oDependencyMatrix
. Vedere Modificare il layout della mappa.NeighborhoodDistance
- Quando la mappa è impostata sul layout della struttura ad albero o sul layout rapido dei cluster, mostra solo i nodi che sono un numero specificato (1-7) di collegamenti lontani dai nodi selezionati. Vedere Modificare il layout della mappa.Esempio:
<?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>
Questo elemento facoltativo contiene un elenco di elementi
<Node/>
che definiscono i nodi nella mappa. Per altre informazioni, vedere l'elemento<Node/>
.Nota
Quando si fa riferimento a un nodo non definito in un elemento
<Link/>
, la mappa crea automaticamente un elemento<Node/>
.Esempio:
<?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/>
Questo elemento definisce un singolo nodo. Esso viene visualizzato nell'elenco di elementi
<Nodes><Nodes/>
.L'elemento deve includere gli attributi seguenti:
Id
- Nome univoco del nodo e valore predefinito dell'attributoLabel
, se non viene specificato alcun attributo separatoLabel
. Questo nome deve corrispondere all'attributoSource
oTarget
del collegamento a cui fa riferimento.Nell'elenco seguente vengono descritti alcuni degli attributi facoltativi che è possibile includere:
Label
- Nome visualizzato del nodo.Attributi di stile. Vedere Customize code maps by editing the DGML files.
Category
- Nome di una categoria che identifica gli elementi che condividono questo attributo. Per altre informazioni, vedere l'elemento<Category/>
.Property
- Nome di una proprietà che identifica gli elementi con lo stesso valore della proprietà. Per altre informazioni, vedere l'elemento<Property/>
.Group
- Se il nodo contiene altri nodi, impostare questo attributo suExpanded
o suCollapsed
, per visualizzare o nascondere il relativo contenuto. Deve essere presente un elemento<Link/>
che include l'attributoCategory="Contains"
e specifica il nodo padre come nodo di origine e il nodo figlio come nodo di destinazione. Vedere Raggruppare gli elementi di codice.Visibility
- Impostare questo attributo suVisible
,Hidden
oCollapsed
. Vengono usatiSystem.Windows.Visibility
. Vedere Nascondere o visualizzare nodi e collegamenti.Reference
- Impostare questo attributo per collegare un nodo a un documento o a un URL. Vedere Collegare documenti o URL a elementi di codice e collegamenti.Esempio:
<?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>
Questo elemento contiene l'elenco di elementi
<Link>
che definiscono i collegamenti tra i nodi. Per altre informazioni, vedere l'elemento<Link/>
.Esempio:
<?xml version="1.0" encoding="utf-8"?> <DirectedGraph Title="DrivingTest" xmlns="http://schemas.microsoft.com/vs/2009/dgml"> <Links> <Link ... /> </Links> </DirectedGraph>
<Link/>
Questo elemento definisce un singolo collegamento che connette un nodo di origine a un nodo di destinazione. Esso viene visualizzato nell'elenco di elementi
<Links></Links>
.Nota
Se questa mappa fa riferimento a un nodo non definito, il documento grafico crea automaticamente un nodo con gli attributi specificati, se presenti.
L'elemento deve includere gli attributi seguenti:
Source
- Nodo di origine del collegamentoTarget
- Nodo di destinazione del collegamentoNell'elenco seguente vengono descritti alcuni degli attributi facoltativi che è possibile includere:
Label
- Nome visualizzato del collegamentoAttributi di stile. Vedere Customize code maps by editing the DGML files.
Category
- Nome di una categoria che identifica gli elementi che condividono questo attributo. Per altre informazioni, vedere l'elemento<Category/>
.Property
- Nome di una proprietà che identifica gli elementi con lo stesso valore della proprietà. Per altre informazioni, vedere l'elemento<Property/>
.Esempio:
<?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>
Questo elemento contiene l'elenco di elementi
<Category/>
. Per altre informazioni, vedere l'elemento<Category/>
.Esempio:
<?xml version="1.0" encoding="utf-8"?> <DirectedGraph Title="DrivingTest" xmlns="http://schemas.microsoft.com/vs/2009/dgml"> <Categories> <Category ... /> </Categories> </DirectedGraph>
<Category/>
Questo elemento definisce un attributo
Category
, utilizzato per identificare gli elementi che condividono questo attributo. Un attributoCategory
può essere usato per organizzare gli elementi della mappa, fornire attributi condivisi tramite ereditarietà o definire metadati aggiuntivi.L'elemento deve includere gli attributi seguenti:
Id
- Nome univoco della categoria e valore predefinito dell'attributoLabel
, se non viene specificato alcun attributoLabel
distinto.Nell'elenco seguente vengono descritti alcuni degli attributi facoltativi che è possibile includere:
Label
- Nome descrittivo per la categoria.BasedOn
- Categoria padre da cui eredita l'oggetto<Category/>
dell'elemento corrente.Nell'esempio per questo elemento la categoria
FailedTest
eredita l'attributoStroke
dalla categoriaPassedTest
. Vedere "Per creare categorie gerarchie" in Personalizzare le mappe del codice modificando i file DGML.Le categorie forniscono inoltre il comportamento di base dei modelli che controlla l'aspetto di nodi e collegamenti quando vengono visualizzati in una mappa. Vedere Customize code maps by editing the DGML files.
Esempio:
<?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>
Questo elemento contiene l'elenco di elementi
<Property/>
. Per altre informazioni, vedere l'elemento<Property/>
.Esempio:
<?xml version="1.0" encoding="utf-8"?> <DirectedGraph Title="DrivingTest" xmlns="http://schemas.microsoft.com/vs/2009/dgml"> <Properties> <Property ... /> </Properties> </DirectedGraph>
<Property/>
Questo elemento definisce un attributo
Property
che è possibile usare per assegnare un valore a qualsiasi attributo o elemento DGML, incluse categorie e altre proprietà.L'elemento deve includere gli attributi seguenti:
Id
- Nome univoco della proprietà e valore predefinito dell'attributoLabel
, se non viene specificato alcun attributo separatoLabel
.DataType
- Tipo di dati archiviati dalla proprietàSe si desidera che la proprietà venga visualizzata nella finestra Proprietà , utilizzare la
Label
proprietà per specificare il nome visualizzato della proprietà.Vedere Assegnare categorie a elementi e collegamenti di codice.
Esempio:
<?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 per i percorsi di uso comune
Sostituendo i percorsi d'uso comune con alias è possibile ridurre le dimensioni del file con estensione dgml e il tempo necessario per caricare o salvare il file. Per creare un alias, aggiungere una sezione <Paths></Paths>
alla fine del file con estensione dgml. In questa sezione aggiungere un elemento <Path/>
per definire un alias per il percorso:
<Paths>
<Path Id="MyPathAlias" Value="C:\...\..." />
</Paths>
Per fare riferimento all'alias da un elemento nel file con estensione dgml, racchiudere l'oggetto Id
dell'elemento <Path/> con un segno di dollaro ($) e parentesi (()):
<Nodes>
<Node Id="MyNode" Reference="$(MyPathAlias)MyDocument.txt" />
</Nodes>
<Properties>
<Property Id="Reference" Label="My Document" DataType="System.String" IsReference="True" />
</Properties>