Dev:Identities
railML® Identities
Very many railML® elements require an id attribute of the W3C-Type xs:ID.
This has to be provided in order to enable references, that are very much used within the railML® schemas.
On the other hand, software tools may refer to certain railML® elements, that are not referred to within the railML® file.
Semantics
The general railML® description states the following semantics for this attribute.
- id: XML-file-wide unique, machine-interpretable identity, required for later referencing that element internally. For a detailed explanation see Dev:identities.
XML-Datei-weit eindeutige, maschineninterpretierbare Identität, die für die spätere interne Referenzierung dieses Elements erforderlich ist. Für eine detaillierte Erklärung siehe Dev:identities.
Constraints
The general railML® description states the following contraints.
- id: xs:ID, required
a string, starting with a letter (a..zA..Z) or an underscore (_),
followed by a non-colonized and non-spaced string consisting of letters, digits, points (.), dashes (-) or underscores (_)
Export of railML® files
Software tools, which create railML® files, are free to define id values according to the above mentioned constraints.
Recommendation
railML® recommends using generic values, e.g.
<operationalPoint id="d2e717">...
or serial numbers with letter prefixes, e.g.
<operationalPoint id="op0002">...
or UUID's (), e.g.
<operationalPoint id="04b6f736-23f7-429c-be8a-e286172de2c1">...
Please note: a Nil UUID () shall not be used; UUID's Version 4 () is commonly used.
Bad style
Sometimes exporting software tools create id values, that contain semantic data, like names, designators, train numbers or vehicle family codes.
<operationalPoint id="op-TDM"> <name name="Tidmouth" language="en-UK"/> <designator register="_NWR" entry="TDM"/> ...
Please use some more generic coding style in order to not invite the importing software to parse the id values!
Wrong style
|
Please use a generic coding style for the id value. Look for appropriate railML® attributes in the element and put the semantics there. Otherwise use the xs:anyAttribute mechanism.
The use of this Wrong style prevents certification of the export interface.
Import of railML® files
Recommendation
Software tools, which consume railML® files, should use the id values only for cross-referencing between elements in the imported file. When UUIDs are used, the ids can also provide valid references across files and data sources.
In case of valid railML® files, no problems will occur.
Good style
In case of consuming "good or bad styled" id values the importing software provides routines for getting the semantics from better fitting attributes.
In case of consuming "wrong styled" id values the importing software is not required to extract semantics encoded in the id value.
Wrong style
|
The use of this Wrong style prevents certification of the import interface.
Differentiation from other indications
Many elements that come with an attribute id will also have the child element <name>, with attributes name and description.
- name: A short, human readable Identifier. Uniqueness is not required.
- description: Human readable text that gives details. Uniqueness is not required.
|