What is the difference between <metadata> and <data> elements in DITA?

In DITA, both the <metadata> and <data> elements are used for capturing metadata related to content elements, but they serve different purposes and have distinct use cases.
<metadata> captures high-level, standardized metadata for the entire document or topic, while <data> provides a flexible mechanism to capture custom, granular metadata associated with specific content elements. The choice between them depends on the level of detail and customization required for metadata in a DITA document.

The <metadata> Element

The <metadata> element is used for capturing standard metadata information that applies to an entire DITA document or topic. It typically includes information such as the document title, author, date, and keywords. The <metadata> element is typically placed at the top-level of a DITA document or topic, and its metadata values apply to the entire document or topic.

DITA defines a set of standard metadata attributes that can be used within the <metadata> element, such as <title>, <author>, <date>, <keywords>, etc. The <metadata> element is ideal for capturing high-level metadata that describes the document as a whole, helping with document categorization, search, and identification.

Example:


        <topic>
            <metadata>
                <title>Sample Topic</title>
                <author>John Doe</author>
                <date>2023-09-15</date>
                <keywords>sample, DITA, topic</keywords>
            </metadata>
            <body>
                <!-- Content of the topic -->
            </body>
        </topic>
    

The <data> Element

The <data> element is used for capturing specific data values associated with content elements within a DITA document or topic. It provides a flexible way to define custom metadata attributes and their values. <data> elements can be applied at various levels within a DITA document, such as individual topics, sections, or even inline elements, allowing for granular metadata capture.

Unlike <metadata>, <data> is not limited to predefined metadata attributes. It allows content creators to define custom metadata attributes tailored to their specific needs. The <data> element is useful when standard DITA metadata attributes do not cover the specific information that needs to be captured. It enables the capture of domain-specific or unique metadata.

Example:


        <topic>
            <title>Product Documentation</title>
            <topicmeta>
                <!-- Custom metadata using  elements -->
                <data name="product">SampleApp</data>
                <data name="version">2.0</data>
                <data name="release-date">2023-10-15</data>
            </topicmeta>
            <body>
                <!-- Content of the topic -->
            </body>
        </topic>