Sharing elements across specializations

Darwin Information Typing Architecture (DITA) Version 1.3 Part 3: All-Inclusive Edition

Document
Darwin Information Typing Architecture (DITA) Version 1.3 Part 3: All-Inclusive Edition
Version
1.3
Author
OASIS DITA Technical Committee

Specialization enables easy reuse of elements from ancestor specializations. However, it is also possible to reuse elements from non-ancestor specializations, as long as the dependency is properly declared in order to prevent invalid generalization or conref processing.

A structural specialization can incorporate elements from unrelated domains or other structural specializations by referencing them in the content model of a specialized element. The elements included in this manner must be specialized from ancestor content that is valid in the new context. If the reusing and reused specializations share common ancestry, the reused elements must be valid in the reusing context at every level they share in common.

Although a well-designed structural specialization hierarchy with controlled use of domains is still the primary means of sharing and reusing elements in DITA, the ability to also share elements declared elsewhere in the hierarchy allows for situations where relevant markup comes from multiple sources and would otherwise be developed redundantly.

Example: A specialization of concept reuses an element from the task module

A specialized concept topic could declare a specialized process section that contains the steps element that is defined in the task module. This is possible because of the following factors:

  • The steps element is specialized from ol.
  • The process element is specialized from section, and the content model of section includes ol.

The steps element in process always can be generalized back to ol in section.

Example: A specialization of reference reuses an element from the programming domain

A specialized reference topic could declare a specialized list (apilist) in which each apilistitem contains an apiname element that is borrowed from the programming domain.