What is specialization? Although DITA is XML (eXtensible Markup Language), DITA can not be extended in the usual sense by adding new tags (elements) to a DTD or schema. Instead it can be enhanced by restrictive substitution of new tag names that are mapped to one of the existing tag names in the standard DTDs.
Why specialization? You may want a new structure that describes content types already in use in your organization. You may simply want the output processing (styling) of some elements to look different from the default styles. You may want a special XQuery that targets certain elements for delivery in a new context.
Inheritance in specialization. Darwin is so-called because of the inheritance rules of specialization. Specialization inheritance is implemented by a special "class" attribute statement in the DTD or schema that tells the DITA Open Toolkit how to identify new tags (elements) with already existing tags in the DITA standard. This class attribute is parsed character-by-character by the Open Toolkit and must be carefully constructed. Here is an example:
class="- topic/body concept/conbody idea/ideabody "
(whitespaces are critical before and after element pairs)
The ideabody inherits the same processing rules as the conbody in a concept topic. Similarly, conbody inherits from body in the base topic. In this class attribute statement, the processor is instructed to process the new tagname ideabody as it would process conbody. You can of course rewrite the XSLT transform to present ideabody differently, always indenting it and italicizing it, for example.
See our 5-minute DITA tutorial to learn how concept, task, and reference were specialized from the base DITA topic.
Reference presentations: