DITA features in the documentation
DITA Open Toolkit uses various recent DITA features in the project documentation.
The source files for the DITA-OT documentation include examples of the following DITA features (among others):
- subjectScheme classification for controlling available attributes
- profiling and branch filtering (novice/expert content)
- extending topics with conref push
- keys and key references
- XML mention domain
Subject schemes
Various topics, sections and elements in the docs are profiled by audience:
<li id="novice-variables-last" audience="novice">
<p id="common-format-info">
<varname>format</varname> is the output format (transformation type). This argument corresponds to the
common parameter <xref keyref="parameters-base/transtype"/>. Use the same values as for the
<parmname>transtype</parmname> build parameter, for example <option>html5</option> or
<option>pdf</option>.</p>
</li>
An “audience” subject scheme controls the values that are available for the @audience
attribute:
<subjectdef keys="audience">
<subjectdef keys="novice"/>
<subjectdef keys="expert"/>
<subjectdef keys="xslt-customizer"/>
</subjectdef>
A dedicated subject scheme map defines several series of permissible values for @outputclass
attributes, which apply styling to elements on the project website, enable
extended codeblock processing such as whitespace visualization and
line numbering in PDF output, or trigger
HTML5-compliant syntax highlighting via
prism.js.
<schemeref href="subjectscheme-outputclass.ditamap"/>
Branch filtering: re-using profiled content
Installing DITA-OT pulls a subset of the build description from using the dita command, filtered to display only content deemed suitable for novice users under First build:
<topicref href="using-dita-command.dita"
keys="first-build-using-dita-command" locktitle="yes">
<topicmeta>
<navtitle>First build</navtitle>
</topicmeta>
<ditavalref href="../resources/novice.ditaval">
<ditavalmeta>
<dvrResourcePrefix>first-build-</dvrResourcePrefix>
</ditavalmeta>
</ditavalref>
</topicref>
The same content appears later in Using the dita command with additional information on arguments, options and examples.
<topicref href="using-dita-command.dita"
keys="build-using-dita-command" locktitle="yes">
<topicmeta>
<navtitle>Using the <cmdname>dita</cmdname> command</navtitle>
</topicmeta>
<ditavalref href="../resources/expert.ditaval">
<ditavalmeta>
<dvrResourcePrefix>build-</dvrResourcePrefix>
</ditavalmeta>
</ditavalref>
Conref push
The docs build uses the conref push mechanism (with the pushreplace
, mark
,
and pushafter
conactions) to extend the parameter descriptions embedded in the
default plug-ins:
<plentry id="args.csspath">
<pt>
<parmname>args.csspath</parmname>
</pt>
<pd conaction="pushreplace" conref="parameters-html5.dita#html5/args.csspath.desc">
<div conref="./ant-parameters-details.dita#base-html/args.csspath.desc"/>
</pd>
<pd conaction="mark" conref="parameters-html5.dita#html5/args.csspath.desc"/>
<pd conaction="pushafter">
<div conref="./ant-parameters-details.dita#base-html/args.csspath.details"/>
</pd>
</plentry>
The pushed content appears in the output after the default description. (See HTML-based output parameters.)
Keys and key references
The key-definitions.ditamap
defines keys for version references, re-usable links, etc.
This key definition defines the maintenance release version:
<keydef keys="maintenance-version">
<topicmeta>
<keywords>
<keyword>4.2.3</keyword>
</keywords>
</topicmeta>
</keydef>
In topics, the keyword is used in place of hard-coded version references:
<title>DITA Open Toolkit <keyword keyref="maintenance-version"/> Release Notes</title>
XML mention domain
The docs use the XML mention domain to mark up XML elements and attributes:
<li id="1777">
DITA 1.3: Initial support has been added for the <xmlatt>orient</xmlatt>
attribute on <xmlelement>table</xmlelement> elements. These changes allow
Antenna House Formatter to render tables in landscape mode when the
<xmlatt>orient</xmlatt> attribute is set to <option>land</option>. […]
</li>
When the toolkit generates output for the sample above:
- the XML element name is wrapped in angle brackets as
<table>
- the attribute name is prefixed with an “at” sign as
@orient