What is the purpose of the @keyref attribute in DITA?

The @keyref attribute in DITA serves the purpose of creating relationships between elements by referencing a unique identifier (key) defined elsewhere in the document or external resources. It allows authors to establish connections between elements, enabling content reuse and maintaining consistency across documents.

The @keyref attribute in DITA involves the key definition and key references. This attribute facilitates content reuse, cross-document linking, and dynamic updates.

Key Definition:

In DITA, a key is a unique identifier associated with an element or group of elements. These keys are defined in a special section of the DITA document called a “key definition.” Keys are created using the <keydef> element and are assigned a unique name and a value.

Key References:

The @keyref attribute is used to reference a specific key from within an element. When an element includes a @keyref attribute, it essentially “links” to the element defined by the referenced key.

Content Reuse:

One of the primary purposes of @keyref is to enable content reuse. Authors can define content once and then reference it multiple times throughout the document or across documents using key references. This ensures consistency and reduces redundancy in content management.

Cross-Document Linking:

@keyref can also be used to establish links between elements in different DITA documents. This cross-document linking allows for modular documentation where topics can reference and incorporate content from other documents.

Dynamic Updates:

If content referenced by a key changes, all instances where that key is referenced automatically reflect the updated content. This dynamic update feature simplifies content maintenance and ensures that changes propagate throughout the document.


A software documentation project requires consistently referencing the product name “Product X” throughout the document. Instead of manually typing “Product X” each time it’s mentioned, a key can be defined for it:

<keydef keys="product-x" href="#product-x-definition"/>

Now, “Product X” needs to be referenced; the @keyref attribute can be used:

This document provides instructions for installing and configuring <ph keyref="product-x">.

In this <p>, the @keyref attribute references the “product-x” key, ensuring that “Product X” is consistently used throughout the document. If the product name changes, only the key definition needs to be updated, and all references to it will automatically reflect the change.