# esri/joint-military-symbology-xml architecture

> Architecture diagram of the GitHub repository esri/joint-military-symbology-xml, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/esri/joint-military-symbology-xml
- Repository: https://github.com/esri/joint-military-symbology-xml

## Overview

JMSML is a military-symbology XML schema and data library, with C# tools for navigating symbol definitions, converting legacy and current SIDCs, and exporting symbol resources. The principal workflow is to load the library data, resolve a symbol or SIDC through the domain model, then return a converted code or produce export files and graphic metadata. The graph includes schema/legacy import, domain lookup, graphic composition, and export stages. Source excerpts show some orchestration and export behavior; other links are included only where documented or listed in the source index.

Main entry points: [`source/JointMilitarySymbologyLibraryCS/symbol.cs`](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/symbol.cs) (Symbol and SIDC), [`source/JointMilitarySymbologyLibraryCS/etl.cs`](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/etl.cs) (Export orchestrator), [`source/JointMilitarySymbologyLibraryCS/LegacyETL.cs`](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/LegacyETL.cs) (Legacy ETL), [`source/JointMilitarySymbologyLibraryCS/ConfigHelper.cs`](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/ConfigHelper.cs) (Configuration and paths)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["Command-line workflow"]
  node_cli["JMSML command<br/>[Program.cs]"]
end

subgraph group_data["Data import and model"]
  node_config["Configuration and paths<br/>[ConfigHelper.cs]"]
  node_schemaetl["Schema ETL<br/>[SchemaETL.cs]"]
  node_librarian["Library navigation<br/>[librarian.cs]"]
  node_base["Schema data classes<br/>[base.cs]"]
end

subgraph group_symbols["Symbol lookup and graphics"]
  node_symbol["Symbol and SIDC<br/>[symbol.cs]"]
end

subgraph group_exports["Data exports"]
  node_etl["Export orchestrator<br/>[etl.cs]"]
  node_legacyetl["Legacy ETL<br/>[LegacyETL.cs]"]
  node_entity["Entity export<br/>[EntityExport.cs]"]
  node_modifier["Modifier export<br/>[ModifierExport.cs]"]
  node_frame["Frame export<br/>[FrameExport.cs]"]
  node_amplifier["Amplifier export<br/>[AmplifierExport.cs]"]
  node_hq["HQTFFD export<br/>[HQTFFDExport.cs]"]
  node_oca["OCA export<br/>[OCAExport.cs]"]
  node_imageentity["Entity image export"]
  node_imagemod["Modifier image export"]
end

node_user(("Tool user"))
node_svg["SVG graphic files"]
node_csv["Export files"]

node_user -->|"invokes"| node_cli
node_cli -->|"runs"| node_etl
node_etl -->|"uses library"| node_librarian
node_etl -->|"uses configuration"| node_config
node_config -->|"creates"| node_schemaetl
node_config -->|"creates"| node_legacyetl
node_etl -->|"selects exporter"| node_entity
node_etl -->|"selects exporter"| node_modifier
node_etl -->|"selects exporter"| node_imageentity
node_etl -->|"selects exporter"| node_imagemod
node_etl -->|"writes"| node_csv
node_legacyetl -->|"writes"| node_csv
node_legacyetl -->|"uses exporter"| node_frame
node_legacyetl -->|"uses exporter"| node_amplifier
node_legacyetl -->|"uses exporter"| node_hq
node_legacyetl -->|"uses exporter"| node_oca
node_librarian -.->|"navigates"| node_base
node_symbol -->|"resolves graphic paths"| node_config
node_symbol -->|"uses naming"| node_entity
node_symbol -->|"uses naming"| node_frame
node_symbol -->|"uses naming"| node_hq
node_symbol -->|"uses naming"| node_amplifier
node_symbol -->|"uses naming"| node_oca
node_symbol -.->|"composes graphics"| node_svg
node_imageentity -->|"resolves paths"| node_config
node_imagemod -->|"resolves paths"| node_config
node_imagemod -->|"inherits naming"| node_modifier
node_imageentity -->|"inherits naming"| node_entity
node_librarian -.->|"supports lookup"| node_symbol
node_user -.->|"requests conversion"| node_symbol

click node_cli "https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/jmsml/Program.cs"
click node_etl "https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/etl.cs"
click node_legacyetl "https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/LegacyETL.cs"
click node_config "https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/ConfigHelper.cs"
click node_schemaetl "https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/SchemaETL.cs"
click node_librarian "https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/librarian.cs"
click node_base "https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/base.cs"
click node_symbol "https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/symbol.cs"
click node_entity "https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/EntityExport.cs"
click node_modifier "https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/ModifierExport.cs"
click node_frame "https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/FrameExport.cs"
click node_amplifier "https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/AmplifierExport.cs"
click node_hq "https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/HQTFFDExport.cs"
click node_oca "https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/OCAExport.cs"
click node_imageentity "https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/ImageEntityExport.cs"
click node_imagemod "https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/ImageModifierExport.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_user toneBlue
class node_config,node_schemaetl,node_librarian,node_base toneAmber
class node_symbol toneMint
class node_etl,node_legacyetl,node_entity,node_modifier,node_frame,node_amplifier,node_hq,node_oca,node_imageentity,node_imagemod toneRose
class node_svg,node_csv toneIndigo
```

## Components

### Command-line workflow

- [JMSML command](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/jmsml/Program.cs): `source/JointMilitarySymbologyLibraryCS/jmsml/Program.cs`

### Data import and model

- [Configuration and paths](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/ConfigHelper.cs): `source/JointMilitarySymbologyLibraryCS/ConfigHelper.cs`
- [Schema ETL](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/SchemaETL.cs): `source/JointMilitarySymbologyLibraryCS/SchemaETL.cs`
- [Library navigation](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/librarian.cs): `source/JointMilitarySymbologyLibraryCS/librarian.cs`
- [Schema data classes](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/base.cs): `source/JointMilitarySymbologyLibraryCS/base.cs`

### Symbol lookup and graphics

- [Symbol and SIDC](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/symbol.cs): `source/JointMilitarySymbologyLibraryCS/symbol.cs`

### Data exports

- [Export orchestrator](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/etl.cs): `source/JointMilitarySymbologyLibraryCS/etl.cs`
- [Legacy ETL](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/LegacyETL.cs): `source/JointMilitarySymbologyLibraryCS/LegacyETL.cs`
- [Entity export](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/EntityExport.cs): `source/JointMilitarySymbologyLibraryCS/EntityExport.cs`
- [Modifier export](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/ModifierExport.cs): `source/JointMilitarySymbologyLibraryCS/ModifierExport.cs`
- [Frame export](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/FrameExport.cs): `source/JointMilitarySymbologyLibraryCS/FrameExport.cs`
- [Amplifier export](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/AmplifierExport.cs): `source/JointMilitarySymbologyLibraryCS/AmplifierExport.cs`
- [HQTFFD export](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/HQTFFDExport.cs): `source/JointMilitarySymbologyLibraryCS/HQTFFDExport.cs`
- [OCA export](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/OCAExport.cs): `source/JointMilitarySymbologyLibraryCS/OCAExport.cs`
- [Entity image export](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/ImageEntityExport.cs): `source/JointMilitarySymbologyLibraryCS/ImageEntityExport.cs`
- [Modifier image export](https://github.com/esri/joint-military-symbology-xml/blob/dev/source/JointMilitarySymbologyLibraryCS/ImageModifierExport.cs): `source/JointMilitarySymbologyLibraryCS/ImageModifierExport.cs`

### Other components

- **Tool user**
- **SVG graphic files**
- **Export files**

## Connections

- Tool user → JMSML command: invokes (evidence: `source/JointMilitarySymbologyLibraryCS/jmsml/Program.cs`)
- JMSML command → Export orchestrator: runs (evidence: `source/JointMilitarySymbologyLibraryCS/jmsml/Program.cs`)
- Export orchestrator → Library navigation: uses library (evidence: `source/JointMilitarySymbologyLibraryCS/etl.cs`)
- Export orchestrator → Configuration and paths: uses configuration (evidence: `source/JointMilitarySymbologyLibraryCS/etl.cs`)
- Configuration and paths → Schema ETL: creates (evidence: `source/JointMilitarySymbologyLibraryCS/ConfigHelper.cs`)
- Configuration and paths → Legacy ETL: creates (evidence: `source/JointMilitarySymbologyLibraryCS/ConfigHelper.cs`)
- Export orchestrator → Entity export: selects exporter (evidence: `source/JointMilitarySymbologyLibraryCS/etl.cs`)
- Export orchestrator → Modifier export: selects exporter (evidence: `source/JointMilitarySymbologyLibraryCS/etl.cs`)
- Export orchestrator → Entity image export: selects exporter (evidence: `source/JointMilitarySymbologyLibraryCS/etl.cs`)
- Export orchestrator → Modifier image export: selects exporter (evidence: `source/JointMilitarySymbologyLibraryCS/etl.cs`)
- Export orchestrator → Export files: writes (evidence: `source/JointMilitarySymbologyLibraryCS/etl.cs`)
- Legacy ETL → Export files: writes (evidence: `source/JointMilitarySymbologyLibraryCS/LegacyETL.cs`)
- Legacy ETL → Frame export: uses exporter (evidence: `source/JointMilitarySymbologyLibraryCS/LegacyETL.cs`)
- Legacy ETL → Amplifier export: uses exporter (evidence: `source/JointMilitarySymbologyLibraryCS/LegacyETL.cs`)
- Legacy ETL → HQTFFD export: uses exporter (evidence: `source/JointMilitarySymbologyLibraryCS/LegacyETL.cs`)
- Legacy ETL → OCA export: uses exporter (evidence: `source/JointMilitarySymbologyLibraryCS/LegacyETL.cs`)
- Library navigation → Schema data classes: navigates
- Symbol and SIDC → Configuration and paths: resolves graphic paths (evidence: `source/JointMilitarySymbologyLibraryCS/symbol.cs`)
- Symbol and SIDC → Entity export: uses naming (evidence: `source/JointMilitarySymbologyLibraryCS/symbol.cs`)
- Symbol and SIDC → Frame export: uses naming (evidence: `source/JointMilitarySymbologyLibraryCS/symbol.cs`)
- Symbol and SIDC → HQTFFD export: uses naming (evidence: `source/JointMilitarySymbologyLibraryCS/symbol.cs`)
- Symbol and SIDC → Amplifier export: uses naming (evidence: `source/JointMilitarySymbologyLibraryCS/symbol.cs`)
- Symbol and SIDC → OCA export: uses naming (evidence: `source/JointMilitarySymbologyLibraryCS/symbol.cs`)
- Symbol and SIDC → SVG graphic files: composes graphics (evidence: `README.md`)
- Entity image export → Configuration and paths: resolves paths (evidence: `source/JointMilitarySymbologyLibraryCS/ImageEntityExport.cs`)
- Modifier image export → Configuration and paths: resolves paths (evidence: `source/JointMilitarySymbologyLibraryCS/ImageModifierExport.cs`)
- Modifier image export → Modifier export: inherits naming (evidence: `source/JointMilitarySymbologyLibraryCS/ImageModifierExport.cs`)
- Entity image export → Entity export: inherits naming (evidence: `source/JointMilitarySymbologyLibraryCS/ImageEntityExport.cs`)
- Library navigation → Symbol and SIDC: supports lookup
- Tool user → Symbol and SIDC: requests conversion (evidence: `README.md`)
