Example: Extending a subject scheme
A company uses a common subject scheme map (baseOS.ditamap
) to set the
values for the @platform attribute.
<subjectScheme> <subjectdef keys="os" navtitle="Operating system"> <subjectdef keys="linux" navtitle="Linux"> <subjectdef keys="redhat" navtitle="RedHat Linux"/> <subjectdef keys="suse" navtitle="SuSE Linux"/> </subjectdef> <subjectdef keys="windows" navtitle="Windows"/> <subjectdef keys="zos" navtitle="z/OS"/> </subjectdef> <enumerationdef> <attributedef name="platform"/> <subjectdef keyref="os"/> </enumerationdef> </subjectScheme>
The following subject scheme map extends the enumeration defined in
baseOS.ditamap
. It adds "macos" as a child of the existing "os"
subject; it also adds special versions of Windows as children of the existing "windows"
subject:
<subjectScheme> <schemeref href="baseOS.ditamap"/> <subjectdef keyref="os"> <subjectdef keys="macos" navtitle="Macintosh"/> <subjectdef keyref="windows"> <subjectdef keys="winxp" navtitle="Windows XP"/> <subjectdef keys="winvis" navtitle="Windows Vista"/> </subjectdef> </subjectdef> </subjectScheme>
Note that the references to the subjects that are defined in
baseOS.ditamap
use the @keyref attribute. This avoids
duplicate definitions of the keys and ensures that the new subjects are added to the
base
enumeration.
The effective result is the same as the following subject scheme map:
<subjectScheme> <subjectdef keys="os" navtitle="Operating system"> <subjectdef keys="linux" navtitle="Linux"> <subjectdef keys="redhat" navtitle="RedHat Linux"/> <subjectdef keys="suse" navtitle="SuSE Linux"/> </subjectdef> <subjectdef keys="macos" navtitle="Macintosh"/> <subjectdef keys="windows" navtitle="Windows"> <subjectdef keys="winxp" navtitle="Windows XP"/> <subjectdef keys="win98" navtitle="Windows Vista"/> </subjectdef> <subjectdef keys="zos" navtitle="z/OS"/> </subjectdef> <enumerationdef> <attributedef name="platform"/> <subjectdef keyref="os"/> </enumerationdef> </subjectScheme>