2.3.1 ID attribute
The @id
attribute assigns an identifier to DITA elements so that the
elements can be referenced.
The @id
attribute is available for most elements. An element must have a
valid value for the @id
attribute before it can be referenced using a
fragment identifier. The requirements for the @id
attribute differ depending
on whether it is used on a topic element, a map element, or an element within a topic or
map.
All values for the @id
attribute must be XML name tokens.
The @id
attributes for topic and map elements are
declared as XML attribute type ID; therefore, they must be unique with respect to other
XML IDs within the XML document that contains the topic or map element. The
@id
attribute for most other elements within topics and maps are not
declared to be XML IDs; this means that XML parsers do not require that the values of those
attributes be unique. However, the DITA specification requires that all IDs
be unique within the context of a topic. For this reason, tools might provide an additional
layer of validation to flag violations of this rule.
Within documents that contain multiple topics, the values of the @id
attribute for all non-topic elements that have the same nearest-ancestor-topic element should
be unique with respect to each other. The values of the @id
attribute for
non-topic elements can be the same as non-topic elements with different nearest-ancestor-topic
elements. Therefore, within a single DITA document that contains more than one topic, the
values of the @id
attribute of the non-topic elements need only to be unique
within each topic.
Within a map document, the values of the @id
attributes for all elements
SHOULD be unique. When two elements
within a map have the same value for the @id
attribute, processors MUST resolve references to that ID to the
first element with the given ID value in document order.
@id
attribute
Element | XML attribute type for @id
|
Must be unique within | Required? |
---|---|---|---|
<map>
|
ID | document | No |
<topic>
|
ID | document | Yes |
sub-map (elements nested within a map) | NMTOKEN | document | Usually no, with some exceptions |
sub-topic (elements nested within a topic) | NMTOKEN | individual topic | Usually no, with some exceptions |
<fn>
), the
presence of a value for the @id
attribute has no impact on processing. For
<fn>
, the presence or absence of a valid @id
attribute affects how the element is processed. This is important for tools that automatically
assign @id
attributes to all elements.