Edit online

Reuse with Key Scopes

Read time: 2 minute(s)

Using DITA 1.3 key scopes you can reuse a topic in multiple places in the DITA Map with slightly different content.

Reuse using key scopes

Let's say you write a topic about Windows installation for your software product:
<!DOCTYPE topic PUBLIC "-//OASIS//DTD DITA Topic//EN" "topic.dtd">
<topic id="installation">
  <title><ph keyref="osName"/> Installation</title>
  <body>
    <p>
      <ol id="ol_g5h_st4_zt">
        <li>Download the executable.</li>
        <li>Run the executable by double clicking it.</li>
        <li>Follow steps described in the installation wizard.</li>
      </ol>
    </p>
  </body>
</topic>
and at some point your realise that exactly the same steps need to be followed for the Linux installation. The only difference is the name of the operating system. You use a keyref to refer to the operating system name but just with DITA 1.2 support the key will resolve to a single value.

Using keyscopes in the DITA Map you can define multiple values for your key depending on the context:

 <topicgroup keyscope="windows">
  <keydef keys="osName">
   <topicmeta>
    <keywords>
     <keyword>Windows</keyword>
    </keywords>
   </topicmeta>
  </keydef>
  <topicref href="installation.dita"/>
 </topicgroup>
 <topicgroup keyscope="linux">
  <keydef keys="osName">
   <topicmeta>
    <keywords>
     <keyword>Linux</keyword>
    </keywords>
   </topicmeta>
  </keydef>
  <topicref href="installation.dita"/>
 </topicgroup>

You can find a more detailed example and download samples for reuse based on key scopes in this blog post: DITA 1.3 Key Scopes - Next Generation of Reuse.