2.5.3.9 Sharing elements across specializations

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.