A project to clarify and eventually evolve the Universal Dive Data Format (UDDF) specification.
The current version of this repository mirrors UDDF 3.2.3 as published at https://www.streit.cc/resources/UDDF/v3.2.3/en/index.html. No content changes are layered on top yet — the goal at this stage is to package the spec in a buildable, reproducible form so that future iterations (errata, examples, clarifications, machine-readable changelogs) can be tracked in version control.
The published UDDF spec has known inconsistencies between its prose pages, the per-element HTML pages, and the XSD schema. The XSD is machine-validatable; the prose isn't. This repository treats the XSD as the source of truth and rebuilds everything else from it.
src/
├── schema/
│ └── uddf.xsd authoritative schema (currently UDDF 3.2.3)
├── templates/
│ ├── element.md.j2 per-element markdown page
│ └── index.md.j2 element index
└── tools/
└── generate.py XSD → markdown generator
dist/ is the build output (gitignored). Each element gets a stub markdown page derived from its XSD definition, listing attributes and child elements with cardinality.
make install # one-time: pip install -r requirements.txt
make generate # rebuild dist/ from src/
make clean # remove dist/Requires Python 3.10+ and Jinja2.
This is the bootstrap commit. The next milestones, in order:
- Layer hand-written prose (descriptions, examples, cross-references) on top of the XSD-derived structure.
- Add a structured changelog that supersedes the XSD-header
<!-- ... -->block and the disconnected HTML changes pages. - Decide on the publication target (rendered HTML site, MkDocs, or pure markdown for GitHub viewing).
- Catalog known spec defects with proposed corrections — the spec inconsistencies should be tracked here, not only in downstream library notes.