6.1. UIDs and references
Elements of a dataset often refer to elements elsewhere in the hierarchy: a wing to the fuselage it is attached to, an engine to its pylon, a wing section to its airfoil. The referenced element carries a unique identifier, its @uID, and the referring element holds this identifier as its value. Reference elements are of type stringUIDBaseType and usually end in UID, such as <parentUID> or <airfoilUID>.
<fuselages>
<fuselage uID="fuselage">
<name>Fuselage</name>
...
</fuselage>
</fuselages>
<wings>
<wing uID="w8d2f6a">
<name>Main wing</name>
<parentUID>fuselage</parentUID>
...
</wing>
</wings>A UID is unique in the whole dataset, including the content of external files (section 11). Two elements with the same @uID make the dataset invalid, even if they are of different kinds.
A UID follows the rules of the XML type xsd:ID: it starts with a letter or an underscore and contains letters, digits, underscores, hyphens and periods, but no spaces and no colons.
A reference names an existing UID of the dataset; a reference to a UID that does not exist makes the dataset invalid. The validation does not check, however, whether the referenced element is of the right kind, e.g. that a <parentUID> points to a component and not to a section. Tools that resolve a reference check this themselves.
A UID only links elements and carries no meaning. Any valid string may be used, such as w8d2f6a in the example, and tools must not derive the meaning of an element from its UID. The meaning is stated in <name> and <description> (section 6.2).
Older datasets mark references with the attribute isLink="True". It is not needed, since the schema already defines which elements are references, and it is kept only for compatibility with these datasets: it remains valid, but may be removed in a future version.
6.2. Name, description and UID
A dataset is read by tools and by people. The <name> and <description> elements and the @uID attribute serve the two:
<name> is a short, human-readable label, usually one word or a few words. It is mostly required where elements occur in a list, such as wings/wing, aeroPerformance/aeroMap or missions/mission, so that tools can list the elements, e.g. in a report or a viewer, and the reader sees which wing, map or mission is meant.
<description> is an optional explanation for human readers, usually one sentence or more. Tools do not interpret it.
@uID is the machine-readable identifier by which elements are referenced (section 6.1). It does not need to be readable for humans. Name and UID may be the same string where the name is a valid UID, i.e. contains no spaces, but tools must not rely on that.
<wing uID="mainWing">
<name>Main wing</name>
<description>Main wing after the second sizing loop: span increased to 34.1 m to meet the take-off field length.</description>
...
</wing>