Chapter 5. General structure of an UDDF file

Table of Contents


The intention in the development of UDDF was to work out a simple, easy-to-use but powerful format for data exchange. For the sake of simplification of the programming of parsers UDDF was developed in such a manner, that current XML parsers can be used.

An UDDF file consists of different (groups of) elements, and keywords, which at time uniquely describe personal data (the "owner" one's, and buddies), dive equipment, dive spots, dive travels, breathing gases, dive profiles, and settings, for the generation of dive tables. A compelled sequence is compulsory. These depends on the following: general data — not dependent on a specific dive — (following points 3.) to 6.)), data belonging to a dive — profile data, tank pressure, logbook entry etc. —, and (to support integration of tissue saturation through previous scuba dives) elements for the generation of dive tables. At the end data concerning dive trips (with cross-references to all data given above in the UDDF file) can be given. Due to this sequence a cross-referencing on further above in the UDDF file given data is possible.

File header, <generator>, and end of file tag are a must, all other statements are optional and can be omitted in case. Groups of elements are designated as sections, these contain more other elements and/or sections.

The general setting up of an UDDF file is as follows:

  1. file header <uddf version="version number"> (compulsory)

  2. <generator> section (compulsory) — here the "finger print" of the generating software is given

  3. <mediadata> section (optional) — declaration of all <audio>, <image>, and <video> files for later cross-referencing (via <link/>) inside the UDDF file. By this the media data can be cross-referenced as often as necessary without setting again specific information concerning the individual files.

  4. <diver> section (optional) — description of the UDDF file's owner, and his/her dive buddies

  5. <divesite> section (optional) — description of all dived, or in future to be dived spots (as far as information to these places is available)

  6. <gasdefinitions> section (optional) — definition of breathing gases, and tanks, used by the UDDF file's owner

  7. <profiledata> section (optional) — description of the profile data of scuba dives, and all other specific data belonging to one dive profile, such as logbook entries, equipment used, and instructions about the breathing gases used. In case of an air consumption calculation (optional) some more instructions must be given, such as tankvolume and fill pressure at beginning and end of dive.

  8. <tablegeneration> section (optional) — parameter settings for the generation of ascent profiles (<calculateprofile> section), dive tables (<calculatetable> section), and "maximum bottom time tables" (<calculatebottomtimetable> section)

  9. <divetrip> section (optional) — description of dive travels

  10. <divecomputercontrol> section (optional) — control settings for dive computers (e.g. time, date, breathing gases used, max. PO2, personal data of the owner etc.) ((<setdcdata> section), or settings for downloading data from a dive computer (<getdcdata> section).

    If <divecomputercontrol> is used within an UDDF file, at time it makes only limited sense to also use the other sections above with exception of <generator>. Unless, data stored inside the <diver> section of the <owner> are to be / can be set on the dive computer.

    This section is intended for future use, when dive computers are to be set and read via UDDF. (See article by Kai Schröder, "Tauchcomputer — Die große Vereinheitlichung", DIVEMASTER Heft 48 (2006) — in German.)

  11. End of file </uddf> (compulsory)

The sections 2.) through 10.) are allowed to appear only once, and only in this sequence in an UDDF file, because references to prior given data can appear in later sections.

An UDDF file is designated by the ending ".uddf".


At any place comments can be inserted. A comment begins with the characters "<!--", and ends with "-->". In-between arbitrary characters can be used (also wordwrap).

Example: <!-- This is a comment. -->