XML allows for two mechanisms that can be employed to express a relationship between two entities: embedding and referencing. The difference is shown on the right. DDEX uses both mechanisms. Referencing is used typically when a composite may need to be used multiple times. For example, because Sound Recordings are (i) usually referenced from at least two Releases in a NewReleaseMessage and, the DDEX standard uses the referencing mechanism for linking
Releases. In ERN-3 parties such as writers and recording artists are not referenced; instead their information is embedded.
Using ID and IDREF
The referencing mechanism employed by DDEX – and many other XML schemas – is often called "ID/IDREF pairs". In that case, the composite that is to be referenced needs to contain an element with a datatype of
xs:ID. In DDEX messages this element is named
XXX denoting the type of the composite. So, the relevant element for all Resources (
Images, etc.) is called
ResourceReference and the relevant element for a Release composite is called
These references are strings and the first letter of these strings denotes the type of composite they belong to:
Referring to one of these references is achieved by elements of datatype xs:IDREF. The name of these referring elements is
YYYZZZReference with YYY being the type of element that is referencing and ZZZ being the type of element that is being referenced. Therefore, the element to reference from a Release to a Resource such as a SoundRecording is called
ReleaseResourceReference. The example below shows a
Release pointing to two
SoundRecordings: Line 17 points to the second
SoundRecording (it's reference is provided in line 9) and the line 18 points to the first SoundRecording (it's reference is provided in line 4):
<ResourceList> <SoundRecording> <!-- ... --> <ResourceReference>A1</ResourceReference> <!-- ... --> </SoundRecording> <SoundRecording> <!-- ... --> <ResourceReference>A2</ResourceReference> <!-- ... --> </SoundRecording> </ResourceList> <ReleaseList> <Release> <!-- ... --> <ReleaseResourceReference>A2</ReleaseResourceReference> <ReleaseResourceReference>A1</ReleaseResourceReference> <!-- ... --> </Release> </ReleaseList>
ID/IDREF values in DDEX have to be:
;, whitespace characters or different parenthesis).
The scope of the ID/IDREF pair is the message in which they are used. Therefore a
ResourceReference used in a message is only valid in that message. When the same
SoundRecording is communicated in a different message, it's
ResourceReference will, in all likelihood, change.
It might therefore be best to start each message with reference number 1 and simply increase the number for each subsequent reference element.
It is specifically recommended to not use any of the metadata elements for the References:
(Note: these samples are not valid DDEX XML as they only focus on how to use ID/IDREF links)