Chapter 2. Introduction to the Configuration and Extension Tutorials

This section provides tutorial examples of creating the different types of DITA configuration and extension components, with a focus on the mechanics, not the concepts.

DITA defines a specific set of DTD and XSD coding requirements that all conforming vocabulary modules should follow. These requirements serve several important purposes:

Some the DITA-imposed requirements are required by the syntax and semantics of DTDs and XSDs, others are simply arbitrary decisions that had to be made and, having been made, make replication easy.

In short, once you learn the basic rules for how to organize the components of a vocabulary module, constraint module, or document type shell, you will be able to quickly understand the markup details of any conforming DITA module. You will also be able to quickly create new components because it is largely an exercise in copying, pasting, renaming, and deleting what you don't need.

What you don't have to do is worry about the details of how you'll structure and organize your DTD declarations or schema components. You won't have to work out clever schemes for modularity or conditionality.

You do need to have a basic working understanding of DTD or XSD syntax, depending on what technology you choose for your vocabulary modules. These tutorials tell you exactly what to type, so you can do them even if you don't have a working understanding of DTD or XSD syntax, but you will eventually need to know why you're doing what you're doing.

You should also, at some point, read the "Configuration, specialization, and constraints" section of the DITA Architectural Specification, which defines the implementation requirements reflected in these tutorials.

These tutorials are not intended to give you a deep conceptual understanding of how vocabulary modules work, they're intended to make it possible for you to create your own before you have a full understanding of why they work they way they do. One of the cool parts of DITA is that you can in fact do that.

If you follow these tutorials you should be able apply the processes demonstrated to your own configuration and extension requirements, assuming you've already worked out the markup design itself. A lot of specializations are either simple addition of new mention elements (specializations of <keyword> or <term>) or metadata elements. The easiest specialization to implement is an attribute domain that adds a new @props specialization.