Conditions versus transclusion
Transclusion, or content referencing, can sometimes achieve the same publishing aim as conditional processing. There are pros and cons for either method.
There are single-source publishing scenarios where a desired result can be achieved with either conditional processing or with transclusion (the conref feature).
For example, if a product name was going to vary between two choices
from publication to publication, conditional processing with a product
attribute could be used to exclude the inappropriate product name (to leave the
appropriate product name). The code might look like:
<ph product="Liberty">Liberty><ph
product="Legend">Legend</ph>
. When a ditaval rule of exclude
elements with a product attribute of Liberty is applied, the remaining code
would be
<ph product="Legend">Legend</ph>
.
The alternative approach would be to use transclusion, such as through a
content reference (conref) to achieve the same result. The product
name would not be included directly in the text; instead, a conref would be
used to draw the phrase in from a separate conref file. The code might look
like:
<ph conref="conref_source/product_name" />
. When a
publication for the product with a name of
Legend
is required, the conref source file could be modified so
that the conref source code was:
<ph id="product_name">Legend</ph>
.
The keyref feature introduced in DITA 1.2 makes this second transclusion method a lot easier and cleaner.
There are pros and cons with either approach.
- all variations are visible to the author
- a review version of the document can be produced that shows all variations
- topics are easier for an author to read
- doesn't rely on metadata
- easier to maintain if new variations are introduced (only the conref source file needs to be updated)
- can cope better with large numbers of conditions