Diff for Improving Relationships in Relationship Tables

Mon, 2008-02-18 02:52 by zbinderMon, 2008-02-18 02:53 by zbinder

Copy of the revision from Sun, 2008-02-17 22:50.

Changes to Body
Line 6Line 6
 
</p>
 
</p>
 
<p>
 
<p>
-
A team encounters quite a few challenges when transitioning from unstructured to structured writing. For my team, the struggles associated with learning DITA and following the DITA structure were minor compared with the challenges presented by corralling hundreds of individual topics into a logical hierarchy. The biggest challenge we faced was managing topic relationships.
+
A team encounters quite a few challenges when transitioning from unstructured to structured writing. For my team, the struggles associated with learning DITA and following the DITA structure were minor compared with the challenges presented by corralling hundreds of individual topics into a logical hierarchy. The biggest challenge we faced was managing topic relationships.
 
</p>
 
</p>
 
<p>
 
<p>
-
In DITA, related topics can be managed either in the DITA topics themselves, or via DITAMAPs using relationship tables &lt;reltable&gt;.
+
In DITA, related topics can be managed either in the DITA topics themselves, or via DITAMAPs using relationship tables &lt;reltable&gt;.
 
</p>
 
</p>
 
<p>
 
<p>
-
While topic relationships can be stored in the topics themselves, as products evolve and user interfaces change, a topic that was required for release 1.0 of a product may no longer be needed in release 2.3. If related topics are maintained at the topic level, removing a topic that is no longer part of the system may involve modifying the related topics of a dozen different DITA files.
+
While topic relationships can be stored in the topics themselves, as products evolve and user interfaces change, a topic that was required for release 1.0 of a product may no longer be needed in release 2.3. If related topics are maintained at the topic level, removing a topic that is no longer part of the system may involve modifying the related topics of a dozen different DITA files.
 
</p>
 
</p>
 
<p>
 
<p>
-
However, if related topics are managed using a relationship table in a DITAMAP, removing a topic that is no longer needed involves changing only one file. Relationship tables can be used to easily manage the related topics that are associated with each DITA topic.
+
However, if related topics are managed using a relationship table in a DITAMAP, removing a topic that is no longer needed involves changing only one file. Relationship tables can be used to easily manage the related topics that are associated with each DITA topic.
 
</p>
 
</p>
 
<p>
 
<p>
-
After doing a lot of research into relationship tables, my team nearly abandoned the effort because mapping a large number of topics in the standard three-column relationship table was too complex. However, once we realized that a four-column approach was much more effective in creating and maintaining the relationships between DITA topics, our information modeling and online help creation process became much easier to manage.
+
After doing a lot of research into relationship tables, my team nearly abandoned the effort because mapping a large number of topics in the standard three-column relationship table was too complex. However, once we realized that a four-column approach was much more effective in creating and maintaining the relationships between DITA topics, our information modeling and online help creation process became much easier to manage.
 
</p>
 
</p>
 
<h1><a name="ImprovingRelationshipsinRelationshipTables-ExampleFiles" title="ImprovingRelationshipsinRelationshipTables-ExampleFiles"></a>Example Files</h1>
 
<h1><a name="ImprovingRelationshipsinRelationshipTables-ExampleFiles" title="ImprovingRelationshipsinRelationshipTables-ExampleFiles"></a>Example Files</h1>
 
<p>
 
<p>
-
To illustrate the benefits of a four-column relationship table, the following example topics will be used.
+
To illustrate the benefits of a four-column relationship table, the following example topics will be used.
 
</p>
 
</p>
 
<h2><a name="ImprovingRelationshipsinRelationshipTables-ConceptTopics" title="ImprovingRelationshipsinRelationshipTables-ConceptTopics"></a>Concept Topics</h2>
 
<h2><a name="ImprovingRelationshipsinRelationshipTables-ConceptTopics" title="ImprovingRelationshipsinRelationshipTables-ConceptTopics"></a>Concept Topics</h2>
 
<p>
 
<p>
-
The following concept topics are designed to introduce the subject matter to the reader. These topics will cover information ranging from, &quot;What is it?&quot; to &quot;Why should the reader care?&quot;
+
The following concept topics are designed to introduce the subject matter to the reader. These topics will cover information ranging from, &quot;What is it?&quot; to &quot;Why should the reader care?&quot;
 
</p>
 
</p>
 
<ul>
 
<ul>
Line 35Line 35
 
<h2><a name="ImprovingRelationshipsinRelationshipTables-TaskTopics" title="ImprovingRelationshipsinRelationshipTables-TaskTopics"></a>Task Topics</h2>
 
<h2><a name="ImprovingRelationshipsinRelationshipTables-TaskTopics" title="ImprovingRelationshipsinRelationshipTables-TaskTopics"></a>Task Topics</h2>
 
<p>
 
<p>
-
The following task topics are designed to walk the user through a procedure that goes from step 1 to step N, with the end result being the successful completion of the task at hand.
+
The following task topics are designed to walk the user through a procedure that goes from step 1 to step N, with the end result being the successful completion of the task at hand.
 
</p>
 
</p>
 
<ul>
 
<ul>
Line 46Line 46
 
<h2><a name="ImprovingRelationshipsinRelationshipTables-ReferenceTopics" title="ImprovingRelationshipsinRelationshipTables-ReferenceTopics"></a>Reference Topics</h2>
 
<h2><a name="ImprovingRelationshipsinRelationshipTables-ReferenceTopics" title="ImprovingRelationshipsinRelationshipTables-ReferenceTopics"></a>Reference Topics</h2>
 
<p>
 
<p>
-
The following reference topics are designed to support the user in completing a task. For example, if step 3 of our task instructs the user to complete field xyz, the reference topic for that window will describe field xyz and include supporting background information that may not appear in the task.
+
The following reference topics are designed to support the user in completing a task. For example, if step 3 of our task instructs the user to complete field xyz, the reference topic for that window will describe field xyz and include supporting background information that may not appear in the task.
 
</p>
 
</p>
 
<ul>
 
<ul>
Line 54Line 54
 
<h1><a name="ImprovingRelationshipsinRelationshipTables-DesiredOutcome" title="ImprovingRelationshipsinRelationshipTables-DesiredOutcome"></a>Desired Outcome</h1>
 
<h1><a name="ImprovingRelationshipsinRelationshipTables-DesiredOutcome" title="ImprovingRelationshipsinRelationshipTables-DesiredOutcome"></a>Desired Outcome</h1>
 
<p>
 
<p>
-
Using a standard three-column relationship table and a four-column relationship table, the following relationships will be applied to each topic in the example documentation set:
+
Using a standard three-column relationship table and a four-column relationship table, the following relationships will be applied to each topic in the example documentation set:
 
</p>
 
</p>
 
<p>
 
<p>
-
<img src="/sites/dita.xml.org/files/u1890/relationships.png" border="0" alt="" width="356" height="500" />
+
<img src="/sites/dita.xml.org/files/u1890/relationships.png" border="0" alt="" width="356" height="500" />
 
</p>
 
</p>
-
<h2><a name="ImprovingRelationshipsinRelationshipTables-StandardThreeColumnRelationshipTable" title="ImprovingRelationshipsinRelationshipTables-StandardThreeColumnRelationshipTable"></a>Standard Three-Column Relationship Table</h2>
+
<h2><a name="ImprovingRelationshipsinRelationshipTables-StandardThreeColumnRelationshipTable"></a>Standard Three-Column Relationship Table</h2>
 
<p>
 
<p>
 
Each row in a relationship table defines an individual set of relationships between topics. In the relationship table diagram below, there are seven rows that are used to define the relationships between ten different topics. The difficulty in dealing with this type of relationship table is that the relationships for some topics are defined in multiple rows. So when a topic relationship changes, the writer maintaining the DITAMAP must perform a detailed analysis of the relationship between topics in several rows to enact a change.
 
Each row in a relationship table defines an individual set of relationships between topics. In the relationship table diagram below, there are seven rows that are used to define the relationships between ten different topics. The difficulty in dealing with this type of relationship table is that the relationships for some topics are defined in multiple rows. So when a topic relationship changes, the writer maintaining the DITAMAP must perform a detailed analysis of the relationship between topics in several rows to enact a change.
Line 65Line 65
 
<p>
 
<p>
 
<br />
 
<br />
-
<img src="/sites/dita.xml.org/files/u1890/3_column.png" border="0" alt="" width="277" height="500" />
+
<img src="/sites/dita.xml.org/files/u1890/3_column.png" border="0" alt="" width="277" height="500" />
 
</p>
 
</p>
 
<p>
 
<p>
-
In DITA, these relationships are expressed as follows:
+
In DITA, these relationships are expressed as follows:
 
</p>
 
</p>
-
<pre>
+
<p>
-
&lt;reltable&gt;
+
&lt;reltable&gt;<br />
-
    &lt;relheader&gt;
+
    &lt;relheader&gt;<br />
-
        &lt;relcolspec type = &quot;concept&quot;&gt;&lt;/relcolspec&gt;
+
        &lt;relcolspec type = &quot;concept&quot;&gt;&lt;/relcolspec&gt;<br />
-
        &lt;relcolspec type = &quot;task&quot;&gt;&lt;/relcolspec&gt;
+
        &lt;relcolspec type = &quot;task&quot;&gt;&lt;/relcolspec&gt;<br />
-
        &lt;relcolspec type = &quot;reference&quot;&gt;&lt;/relcolspec&gt;
+
        &lt;relcolspec type = &quot;reference&quot;&gt;&lt;/relcolspec&gt;<br />
-
    &lt;/relheader&gt;
+
    &lt;/relheader&gt;<br />
-
    &lt;relrow&gt;
+
    &lt;relrow&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicgroup collection-type = &quot;family&quot;&gt;
+
            &lt;topicgroup collection-type = &quot;family&quot;&gt;<br />
-
                &lt;topicref navtitle = &quot;What is a user?&quot; href=&quot;user_c.dita&quot; type = &quot;concept&quot;&gt;&lt;/topicref&gt;
+
                &lt;topicref navtitle = &quot;What is a user?&quot; href=&quot;user_c.dita&quot; type = &quot;concept&quot;&gt;&lt;/topicref&gt;<br />
-
                &lt;topicref navtitle = &quot;What is a role?&quot; href=&quot;role_c.dita&quot; type = &quot;concept&quot;&gt;&lt;/topicref&gt;
+
                &lt;topicref navtitle = &quot;What is a role?&quot; href=&quot;role_c.dita&quot; type = &quot;concept&quot;&gt;&lt;/topicref&gt;<br />
-
                &lt;topicref navtitle = &quot;How are users and roles related?&quot; href=&quot;user_role_c.dita&quot; type = &quot;concept&quot;&gt;&lt;/topicref&gt;
+
                &lt;topicref navtitle = &quot;How are users and roles related?&quot; href=&quot;user_role_c.dita&quot; type = &quot;concept&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;/topicgroup&gt;
+
            &lt;/topicgroup&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;&lt;/relcell&gt;
+
        &lt;relcell&gt;&lt;/relcell&gt;<br />
-
        &lt;relcell&gt;&lt;/relcell&gt;
+
        &lt;relcell&gt;&lt;/relcell&gt;<br />
-
    &lt;/relrow&gt;
+
    &lt;/relrow&gt;<br />
-
    &lt;relrow&gt;
+
    &lt;relrow&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;What is a user?&quot; href=&quot;user_c.dita&quot; type = &quot;concept&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;What is a user?&quot; href=&quot;user_c.dita&quot; type = &quot;concept&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Create a new user account&quot; href=&quot;user_create_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Create a new user account&quot; href=&quot;user_create_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;topicref navtitle = &quot;Edit an existing user account&quot; href=&quot;user_edit_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Edit an existing user account&quot; href=&quot;user_edit_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;&lt;/relcell&gt;
+
        &lt;relcell&gt;&lt;/relcell&gt;<br />
-
    &lt;/relrow&gt;
+
    &lt;/relrow&gt;<br />
-
    &lt;relrow&gt;
+
    &lt;relrow&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;What is a role?&quot; href=&quot;role_c.dita&quot; type = &quot;concept&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;What is a role?&quot; href=&quot;role_c.dita&quot; type = &quot;concept&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Create a new role&quot; href=&quot;role_create_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Create a new role&quot; href=&quot;role_create_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;topicref navtitle = &quot;Edit an existing role&quot; href=&quot;role_edit_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Edit an existing role&quot; href=&quot;role_edit_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;&lt;/relcell&gt;
+
        &lt;relcell&gt;&lt;/relcell&gt;<br />
-
    &lt;/relrow&gt;
+
    &lt;/relrow&gt;<br />
-
    &lt;relrow&gt;
+
    &lt;relrow&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;How are users and roles related?&quot; href=&quot;user_role_c.dita&quot; type = &quot;concept&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;How are users and roles related?&quot; href=&quot;user_role_c.dita&quot; type = &quot;concept&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;&lt;/relcell&gt;
+
        &lt;relcell&gt;&lt;/relcell&gt;<br />
-
    &lt;/relrow&gt;
+
    &lt;/relrow&gt;<br />
-
    &lt;relrow&gt;
+
    &lt;relrow&gt;<br />
-
        &lt;relcell&gt;&lt;/relcell&gt;
+
        &lt;relcell&gt;&lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicgroup collection-type = &quot;family&quot;&gt;
+
            &lt;topicgroup collection-type = &quot;family&quot;&gt;<br />
-
                &lt;topicref navtitle = &quot;Create a new user account&quot; href=&quot;user_create_t.dita&quot; type = &quot;task&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;
+
                &lt;topicref navtitle = &quot;Create a new user account&quot; href=&quot;user_create_t.dita&quot; type = &quot;task&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;<br />
-
                &lt;topicref navtitle = &quot;Edit an existing user account&quot; href=&quot;user_edit_t.dita&quot; type = &quot;task&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;
+
                &lt;topicref navtitle = &quot;Edit an existing user account&quot; href=&quot;user_edit_t.dita&quot; type = &quot;task&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;<br />
-
                &lt;topicref navtitle = &quot;Create a new role&quot; href=&quot;role_create_t.dita&quot; type = &quot;task&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;
+
                &lt;topicref navtitle = &quot;Create a new role&quot; href=&quot;role_create_t.dita&quot; type = &quot;task&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;<br />
-
                &lt;topicref navtitle = &quot;Edit an existing role&quot; href=&quot;role_edit_t.dita&quot; type = &quot;task&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;
+
                &lt;topicref navtitle = &quot;Edit an existing role&quot; href=&quot;role_edit_t.dita&quot; type = &quot;task&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;<br />
-
                &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
                &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;/topicgroup&gt;
+
            &lt;/topicgroup&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;&lt;/relcell&gt;
+
        &lt;relcell&gt;&lt;/relcell&gt;<br />
-
    &lt;/relrow&gt;
+
    &lt;/relrow&gt;<br />
-
    &lt;relrow&gt;
+
    &lt;relrow&gt;<br />
-
        &lt;relcell&gt;&lt;/relcell&gt;
+
        &lt;relcell&gt;&lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Create a new user account&quot; href=&quot;user_create_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Create a new user account&quot; href=&quot;user_create_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;topicref navtitle = &quot;Edit an existing user account&quot; href=&quot;user_edit_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Edit an existing user account&quot; href=&quot;user_edit_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;User Account window details&quot; href=&quot;user_r.dita&quot; type = &quot;reference&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;User Account window details&quot; href=&quot;user_r.dita&quot; type = &quot;reference&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
    &lt;/relrow&gt;
+
    &lt;/relrow&gt;<br />
-
    &lt;relrow&gt;
+
    &lt;relrow&gt;<br />
-
        &lt;relcell&gt;&lt;/relcell&gt;
+
        &lt;relcell&gt;&lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Create a new role&quot; href=&quot;role_create_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Create a new role&quot; href=&quot;role_create_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;topicref navtitle = &quot;Edit an existing role&quot; href=&quot;role_edit_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Edit an existing role&quot; href=&quot;role_edit_t.dita&quot; type = &quot;task&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Role window details&quot; href=&quot;role_r.dita&quot; type = &quot;reference&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Role window details&quot; href=&quot;role_r.dita&quot; type = &quot;reference&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
    &lt;/relrow&gt;
+
    &lt;/relrow&gt;<br />
-
&lt;/reltable&gt;
+
&lt;/reltable&gt;
-
</pre>
+
</p>
-
<h2><a name="ImprovingRelationshipsinRelationshipTables-%26nbsp%3BFourColumnRelationshipTable" title="ImprovingRelationshipsinRelationshipTables-%26nbsp%3BFourColumnRelationshipTable"></a> Four-Column Relationship Table</h2>
+
<h2><a name="ImprovingRelationshipsinRelationshipTables-%26nbsp%3BFourColumnRelationshipTable"></a> Four-Column Relationship Table</h2>
 
<p>
 
<p>
 
While the four-column relationship table below has three more rows than the standard three-column relationship table, the larger table makes it much easier to maintain the relationships between the various relationships between the topics. In the example below, when a topic relationship changes, the writer can simply locate and modify a single row that defines the links for that topic.
 
While the four-column relationship table below has three more rows than the standard three-column relationship table, the larger table makes it much easier to maintain the relationships between the various relationships between the topics. In the example below, when a topic relationship changes, the writer can simply locate and modify a single row that defines the links for that topic.
 
</p>
 
</p>
 
<p>
 
<p>
-
<img src="/sites/dita.xml.org/files/u1890/4_column.png" border="0" alt="" width="340" height="500" />
+
<img src="/sites/dita.xml.org/files/u1890/4_column.png" border="0" alt="" width="340" height="500" />
 
</p>
 
</p>
 
<p>
 
<p>
-
In DITA, these relationships are expressed as follows:
+
In DITA, these relationships are expressed as follows:
 
</p>
 
</p>
-
<pre>
+
<p>
-
&lt;reltable&gt;
+
&lt;reltable&gt;<br />
-
    &lt;relheader&gt;
+
    &lt;relheader&gt;<br />
-
        &lt;relcolspec type = &quot;topic&quot;&gt;&lt;/relcolspec&gt;
+
        &lt;relcolspec type = &quot;topic&quot;&gt;&lt;/relcolspec&gt;<br />
-
        &lt;relcolspec type = &quot;concept&quot;&gt;&lt;/relcolspec&gt;
+
        &lt;relcolspec type = &quot;concept&quot;&gt;&lt;/relcolspec&gt;<br />
-
        &lt;relcolspec type = &quot;task&quot;&gt;&lt;/relcolspec&gt;
+
        &lt;relcolspec type = &quot;task&quot;&gt;&lt;/relcolspec&gt;<br />
-
        &lt;relcolspec type = &quot;reference&quot;&gt;&lt;/relcolspec&gt;
+
        &lt;relcolspec type = &quot;reference&quot;&gt;&lt;/relcolspec&gt;<br />
-
    &lt;/relheader&gt;
+
    &lt;/relheader&gt;<br />
-
    &lt;relrow&gt;
+
    &lt;relrow&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;What is a user?&quot; href=&quot;user_c.dita&quot; type = &quot;concept&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;What is a user?&quot; href=&quot;user_c.dita&quot; type = &quot;concept&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;What is a role?&quot; href=&quot;role_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;What is a role?&quot; href=&quot;role_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;topicref navtitle = &quot;How are users and roles related?&quot; href=&quot;user_role_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;How are users and roles related?&quot; href=&quot;user_role_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Create a new user account&quot; href=&quot;user_create_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Create a new user account&quot; href=&quot;user_create_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;topicref navtitle = &quot;Edit an existing user account&quot; href=&quot;user_edit_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Edit an existing user account&quot; href=&quot;user_edit_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;&lt;/relcell&gt;
+
        &lt;relcell&gt;&lt;/relcell&gt;<br />
-
    &lt;/relrow&gt;
+
    &lt;/relrow&gt;<br />
-
    &lt;relrow&gt;
+
    &lt;relrow&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;What is a role?&quot; href=&quot;role_c.dita&quot; type = &quot;concept&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;What is a role?&quot; href=&quot;role_c.dita&quot; type = &quot;concept&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;What is a user?&quot; href=&quot;user_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;What is a user?&quot; href=&quot;user_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;topicref navtitle = &quot;How are users and roles related?&quot; href=&quot;user_role_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;How are users and roles related?&quot; href=&quot;user_role_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Create a new role&quot; href=&quot;role_create_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Create a new role&quot; href=&quot;role_create_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;topicref navtitle = &quot;Edit an existing role&quot; href=&quot;role_edit_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Edit an existing role&quot; href=&quot;role_edit_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;&lt;/relcell&gt;
+
        &lt;relcell&gt;&lt;/relcell&gt;<br />
-
    &lt;/relrow&gt;
+
    &lt;/relrow&gt;<br />
-
    &lt;relrow&gt;
+
    &lt;relrow&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;How are users and roles related?&quot; href=&quot;user_role_c.dita&quot; type = &quot;concept&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;How are users and roles related?&quot; href=&quot;user_role_c.dita&quot; type = &quot;concept&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;What is a user?&quot; href=&quot;user_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;What is a user?&quot; href=&quot;user_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;topicref navtitle = &quot;What is a role?&quot; href=&quot;role_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;What is a role?&quot; href=&quot;role_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;&lt;/relcell&gt;
+
        &lt;relcell&gt;&lt;/relcell&gt;<br />
-
    &lt;/relrow&gt;
+
    &lt;/relrow&gt;<br />
-
    &lt;relrow&gt;
+
    &lt;relrow&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Create a new user account&quot; href=&quot;user_create_t.dita&quot; type = &quot;task&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Create a new user account&quot; href=&quot;user_create_t.dita&quot; type = &quot;task&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;What is a user?&quot; href=&quot;user_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;What is a user?&quot; href=&quot;user_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;User Account window details&quot; href=&quot;user_r.dita&quot; type = &quot;reference&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;User Account window details&quot; href=&quot;user_r.dita&quot; type = &quot;reference&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
    &lt;/relrow&gt;
+
    &lt;/relrow&gt;<br />
-
    &lt;relrow&gt;
+
    &lt;relrow&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Edit an existing user account&quot; href=&quot;user_edit_t.dita&quot; type = &quot;task&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Edit an existing user account&quot; href=&quot;user_edit_t.dita&quot; type = &quot;task&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;What is a user?&quot; href=&quot;user_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;What is a user?&quot; href=&quot;user_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;User Account window details&quot; href=&quot;user_r.dita&quot; type = &quot;reference&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;User Account window details&quot; href=&quot;user_r.dita&quot; type = &quot;reference&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
    &lt;/relrow&gt;
+
    &lt;/relrow&gt;<br />
-
    &lt;relrow&gt;
+
    &lt;relrow&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Create a new role&quot; href=&quot;role_create_t.dita&quot; type = &quot;task&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Create a new role&quot; href=&quot;role_create_t.dita&quot; type = &quot;task&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;What is a role?&quot; href=&quot;role_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;What is a role?&quot; href=&quot;role_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Role window details&quot; href=&quot;role_r.dita&quot; type = &quot;reference&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Role window details&quot; href=&quot;role_r.dita&quot; type = &quot;reference&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
    &lt;/relrow&gt;
+
    &lt;/relrow&gt;<br />
-
    &lt;relrow&gt;
+
    &lt;relrow&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Edit an existing role&quot; href=&quot;role_edit_t.dita&quot; type = &quot;task&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Edit an existing role&quot; href=&quot;role_edit_t.dita&quot; type = &quot;task&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;What is a role?&quot; href=&quot;role_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;What is a role?&quot; href=&quot;role_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Role window details&quot; href=&quot;role_r.dita&quot; type = &quot;reference&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Role window details&quot; href=&quot;role_r.dita&quot; type = &quot;reference&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
    &lt;/relrow&gt;
+
    &lt;/relrow&gt;<br />
-
    &lt;relrow&gt;
+
    &lt;relrow&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Associate a user account with a role&quot; href=&quot;user_role_associate_t.dita&quot; type = &quot;task&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;What is a user?&quot; href=&quot;user_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;What is a user?&quot; href=&quot;user_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;topicref navtitle = &quot;What is a role?&quot; href=&quot;role_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;What is a role?&quot; href=&quot;role_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;topicref navtitle = &quot;How are users and roles related?&quot; href=&quot;user_role_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;How are users and roles related?&quot; href=&quot;user_role_c.dita&quot; type = &quot;concept&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;&lt;/relcell&gt;
+
        &lt;relcell&gt;&lt;/relcell&gt;<br />
-
        &lt;relcell&gt;&lt;/relcell&gt;
+
        &lt;relcell&gt;&lt;/relcell&gt;<br />
-
    &lt;/relrow&gt;
+
    &lt;/relrow&gt;<br />
-
    &lt;relrow&gt;
+
    &lt;relrow&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;User Account window details&quot; href=&quot;user_r.dita&quot; type = &quot;reference&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;User Account window details&quot; href=&quot;user_r.dita&quot; type = &quot;reference&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;&lt;/relcell&gt;
+
        &lt;relcell&gt;&lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Create a new user account&quot; href=&quot;user_create_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Create a new user account&quot; href=&quot;user_create_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;topicref navtitle = &quot;Edit an existing user account&quot; href=&quot;user_edit_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Edit an existing user account&quot; href=&quot;user_edit_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;&lt;/relcell&gt;
+
        &lt;relcell&gt;&lt;/relcell&gt;<br />
-
    &lt;/relrow&gt;
+
    &lt;/relrow&gt;<br />
-
    &lt;relrow&gt;
+
    &lt;relrow&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Role window details&quot; href=&quot;role_r.dita&quot; type = &quot;reference&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Role window details&quot; href=&quot;role_r.dita&quot; type = &quot;reference&quot; linking = &quot;sourceonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;&lt;/relcell&gt;
+
        &lt;relcell&gt;&lt;/relcell&gt;<br />
-
        &lt;relcell&gt;
+
        &lt;relcell&gt;<br />
-
            &lt;topicref navtitle = &quot;Create a new role&quot; href=&quot;role_create_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Create a new role&quot; href=&quot;role_create_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
            &lt;topicref navtitle = &quot;Edit an existing role&quot; href=&quot;role_edit_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;
+
            &lt;topicref navtitle = &quot;Edit an existing role&quot; href=&quot;role_edit_t.dita&quot; type = &quot;task&quot; linking = &quot;targetonly&quot;&gt;&lt;/topicref&gt;<br />
-
        &lt;/relcell&gt;
+
        &lt;/relcell&gt;<br />
-
        &lt;relcell&gt;&lt;/relcell&gt;
+
        &lt;relcell&gt;&lt;/relcell&gt;<br />
-
    &lt;/relrow&gt;
+
    &lt;/relrow&gt;<br />
 
&lt;/reltable&gt;
 
&lt;/reltable&gt;
-
</pre>
+
</p>
-
<h1><a name="ImprovingRelationshipsinRelationshipTables-Conclusion" title="ImprovingRelationshipsinRelationshipTables-Conclusion"></a>Conclusion</h1>
+
<h1><a name="ImprovingRelationshipsinRelationshipTables-Conclusion"></a>Conclusion</h1>
 
<p>
 
<p>
-
Using a four column relationship table in our SunGard Higher Education DITAMAPs, we are able to easily maintain the relationships between hundreds of topics authored by a distributed writing team. Each team member can modify the specific row that applies to the topic in question without having to analyze the relationships of any other topic.
+
Using a four column relationship table in our SunGard Higher Education DITAMAPs, we are able to easily maintain the relationships between hundreds of topics authored by a distributed writing team. Each team member can modify the specific row that applies to the topic in question without having to analyze the relationships of any other topic.
 
</p>
 
</p>
 
<p>
 
<p>
Line 328Line 328
 
Switch based upon the context. However, for now, just delegate to a decorator
 
Switch based upon the context. However, for now, just delegate to a decorator
 
identified directly by the context.
 
identified directly by the context.
-
-->
+
-->
 
</p>
 
</p>
 
 
Revision of Mon, 2008-02-18 02:53:

Improving Relationships in Relationship Tables

 

 

A team encounters quite a few challenges when transitioning from unstructured to structured writing. For my team, the struggles associated with learning DITA and following the DITA structure were minor compared with the challenges presented by corralling hundreds of individual topics into a logical hierarchy. The biggest challenge we faced was managing topic relationships.

In DITA, related topics can be managed either in the DITA topics themselves, or via DITAMAPs using relationship tables <reltable>.

While topic relationships can be stored in the topics themselves, as products evolve and user interfaces change, a topic that was required for release 1.0 of a product may no longer be needed in release 2.3. If related topics are maintained at the topic level, removing a topic that is no longer part of the system may involve modifying the related topics of a dozen different DITA files.

However, if related topics are managed using a relationship table in a DITAMAP, removing a topic that is no longer needed involves changing only one file. Relationship tables can be used to easily manage the related topics that are associated with each DITA topic.

After doing a lot of research into relationship tables, my team nearly abandoned the effort because mapping a large number of topics in the standard three-column relationship table was too complex. However, once we realized that a four-column approach was much more effective in creating and maintaining the relationships between DITA topics, our information modeling and online help creation process became much easier to manage.

Example Files

To illustrate the benefits of a four-column relationship table, the following example topics will be used.

Concept Topics

The following concept topics are designed to introduce the subject matter to the reader. These topics will cover information ranging from, "What is it?" to "Why should the reader care?"

  • What is a user? (user_c.dita)
  • What is a role? (role_c.dita)
  • How are users and roles related? (user_role_c.dita)

Task Topics

The following task topics are designed to walk the user through a procedure that goes from step 1 to step N, with the end result being the successful completion of the task at hand.

  • Create a new user account (user_create_t.dita)
  • Edit an existing user account (user_edit_t.dita)
  • Create a new role (role_create_t.dita)
  • Edit an existing role (role_edit_t.dita)
  • Associate a user account with a role (user_role_associate_t.dita)

Reference Topics

The following reference topics are designed to support the user in completing a task. For example, if step 3 of our task instructs the user to complete field xyz, the reference topic for that window will describe field xyz and include supporting background information that may not appear in the task.

  • User Account window details (user_r.dita)
  • Role window details (role_r.dita)

Desired Outcome

Using a standard three-column relationship table and a four-column relationship table, the following relationships will be applied to each topic in the example documentation set:

Standard Three-Column Relationship Table

Each row in a relationship table defines an individual set of relationships between topics. In the relationship table diagram below, there are seven rows that are used to define the relationships between ten different topics. The difficulty in dealing with this type of relationship table is that the relationships for some topics are defined in multiple rows. So when a topic relationship changes, the writer maintaining the DITAMAP must perform a detailed analysis of the relationship between topics in several rows to enact a change.


In DITA, these relationships are expressed as follows:

<reltable>
    <relheader>
        <relcolspec type = "concept"></relcolspec>
        <relcolspec type = "task"></relcolspec>
        <relcolspec type = "reference"></relcolspec>
    </relheader>
    <relrow>
        <relcell>
            <topicgroup collection-type = "family">
                <topicref navtitle = "What is a user?" href="user_c.dita" type = "concept"></topicref>
                <topicref navtitle = "What is a role?" href="role_c.dita" type = "concept"></topicref>
                <topicref navtitle = "How are users and roles related?" href="user_role_c.dita" type = "concept"></topicref>
            </topicgroup>
        </relcell>
        <relcell></relcell>
        <relcell></relcell>
    </relrow>
    <relrow>
        <relcell>
            <topicref navtitle = "What is a user?" href="user_c.dita" type = "concept"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "Create a new user account" href="user_create_t.dita" type = "task"></topicref>
            <topicref navtitle = "Edit an existing user account" href="user_edit_t.dita" type = "task"></topicref>
            <topicref navtitle = "Associate a user account with a role" href="user_role_associate_t.dita" type = "task"></topicref>
        </relcell>
        <relcell></relcell>
    </relrow>
    <relrow>
        <relcell>
            <topicref navtitle = "What is a role?" href="role_c.dita" type = "concept"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "Create a new role" href="role_create_t.dita" type = "task"></topicref>
            <topicref navtitle = "Edit an existing role" href="role_edit_t.dita" type = "task"></topicref>
            <topicref navtitle = "Associate a user account with a role" href="user_role_associate_t.dita" type = "task"></topicref>
        </relcell>
        <relcell></relcell>
    </relrow>
    <relrow>
        <relcell>
            <topicref navtitle = "How are users and roles related?" href="user_role_c.dita" type = "concept"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "Associate a user account with a role" href="user_role_associate_t.dita" type = "task"></topicref>
        </relcell>
        <relcell></relcell>
    </relrow>
    <relrow>
        <relcell></relcell>
        <relcell>
            <topicgroup collection-type = "family">
                <topicref navtitle = "Create a new user account" href="user_create_t.dita" type = "task" linking = "sourceonly"></topicref>
                <topicref navtitle = "Edit an existing user account" href="user_edit_t.dita" type = "task" linking = "sourceonly"></topicref>
                <topicref navtitle = "Create a new role" href="role_create_t.dita" type = "task" linking = "sourceonly"></topicref>
                <topicref navtitle = "Edit an existing role" href="role_edit_t.dita" type = "task" linking = "sourceonly"></topicref>
                <topicref navtitle = "Associate a user account with a role" href="user_role_associate_t.dita" type = "task" linking = "targetonly"></topicref>
            </topicgroup>
        </relcell>
        <relcell></relcell>
    </relrow>
    <relrow>
        <relcell></relcell>
        <relcell>
            <topicref navtitle = "Create a new user account" href="user_create_t.dita" type = "task"></topicref>
            <topicref navtitle = "Edit an existing user account" href="user_edit_t.dita" type = "task"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "User Account window details" href="user_r.dita" type = "reference"></topicref>
        </relcell>
    </relrow>
    <relrow>
        <relcell></relcell>
        <relcell>
            <topicref navtitle = "Create a new role" href="role_create_t.dita" type = "task"></topicref>
            <topicref navtitle = "Edit an existing role" href="role_edit_t.dita" type = "task"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "Role window details" href="role_r.dita" type = "reference"></topicref>
        </relcell>
    </relrow>
</reltable>

 Four-Column Relationship Table

While the four-column relationship table below has three more rows than the standard three-column relationship table, the larger table makes it much easier to maintain the relationships between the various relationships between the topics. In the example below, when a topic relationship changes, the writer can simply locate and modify a single row that defines the links for that topic.

In DITA, these relationships are expressed as follows:

<reltable>
    <relheader>
        <relcolspec type = "topic"></relcolspec>
        <relcolspec type = "concept"></relcolspec>
        <relcolspec type = "task"></relcolspec>
        <relcolspec type = "reference"></relcolspec>
    </relheader>
    <relrow>
        <relcell>
            <topicref navtitle = "What is a user?" href="user_c.dita" type = "concept" linking = "sourceonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "What is a role?" href="role_c.dita" type = "concept" linking = "targetonly"></topicref>
            <topicref navtitle = "How are users and roles related?" href="user_role_c.dita" type = "concept" linking = "targetonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "Create a new user account" href="user_create_t.dita" type = "task" linking = "targetonly"></topicref>
            <topicref navtitle = "Edit an existing user account" href="user_edit_t.dita" type = "task" linking = "targetonly"></topicref>
            <topicref navtitle = "Associate a user account with a role" href="user_role_associate_t.dita" type = "task" linking = "targetonly"></topicref>
        </relcell>
        <relcell></relcell>
    </relrow>
    <relrow>
        <relcell>
            <topicref navtitle = "What is a role?" href="role_c.dita" type = "concept" linking = "sourceonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "What is a user?" href="user_c.dita" type = "concept" linking = "targetonly"></topicref>
            <topicref navtitle = "How are users and roles related?" href="user_role_c.dita" type = "concept" linking = "targetonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "Create a new role" href="role_create_t.dita" type = "task" linking = "targetonly"></topicref>
            <topicref navtitle = "Edit an existing role" href="role_edit_t.dita" type = "task" linking = "targetonly"></topicref>
            <topicref navtitle = "Associate a user account with a role" href="user_role_associate_t.dita" type = "task" linking = "targetonly"></topicref>
        </relcell>
        <relcell></relcell>
    </relrow>
    <relrow>
        <relcell>
            <topicref navtitle = "How are users and roles related?" href="user_role_c.dita" type = "concept" linking = "sourceonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "What is a user?" href="user_c.dita" type = "concept" linking = "targetonly"></topicref>
            <topicref navtitle = "What is a role?" href="role_c.dita" type = "concept" linking = "targetonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "Associate a user account with a role" href="user_role_associate_t.dita" type = "task" linking = "targetonly"></topicref>
        </relcell>
        <relcell></relcell>
    </relrow>
    <relrow>
        <relcell>
            <topicref navtitle = "Create a new user account" href="user_create_t.dita" type = "task" linking = "sourceonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "What is a user?" href="user_c.dita" type = "concept" linking = "targetonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "Associate a user account with a role" href="user_role_associate_t.dita" type = "task" linking = "targetonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "User Account window details" href="user_r.dita" type = "reference" linking = "targetonly"></topicref>
        </relcell>
    </relrow>
    <relrow>
        <relcell>
            <topicref navtitle = "Edit an existing user account" href="user_edit_t.dita" type = "task" linking = "sourceonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "What is a user?" href="user_c.dita" type = "concept" linking = "targetonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "Associate a user account with a role" href="user_role_associate_t.dita" type = "task" linking = "targetonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "User Account window details" href="user_r.dita" type = "reference" linking = "targetonly"></topicref>
        </relcell>
    </relrow>
    <relrow>
        <relcell>
            <topicref navtitle = "Create a new role" href="role_create_t.dita" type = "task" linking = "sourceonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "What is a role?" href="role_c.dita" type = "concept" linking = "targetonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "Associate a user account with a role" href="user_role_associate_t.dita" type = "task" linking = "targetonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "Role window details" href="role_r.dita" type = "reference" linking = "targetonly"></topicref>
        </relcell>
    </relrow>
    <relrow>
        <relcell>
            <topicref navtitle = "Edit an existing role" href="role_edit_t.dita" type = "task" linking = "sourceonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "What is a role?" href="role_c.dita" type = "concept" linking = "targetonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "Associate a user account with a role" href="user_role_associate_t.dita" type = "task" linking = "targetonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "Role window details" href="role_r.dita" type = "reference" linking = "targetonly"></topicref>
        </relcell>
    </relrow>
    <relrow>
        <relcell>
            <topicref navtitle = "Associate a user account with a role" href="user_role_associate_t.dita" type = "task" linking = "sourceonly"></topicref>
        </relcell>
        <relcell>
            <topicref navtitle = "What is a user?" href="user_c.dita" type = "concept" linking = "targetonly"></topicref>
            <topicref navtitle = "What is a role?" href="role_c.dita" type = "concept" linking = "targetonly"></topicref>
            <topicref navtitle = "How are users and roles related?" href="user_role_c.dita" type = "concept" linking = "targetonly"></topicref>
        </relcell>
        <relcell></relcell>
        <relcell></relcell>
    </relrow>
    <relrow>
        <relcell>
            <topicref navtitle = "User Account window details" href="user_r.dita" type = "reference" linking = "sourceonly"></topicref>
        </relcell>
        <relcell></relcell>
        <relcell>
            <topicref navtitle = "Create a new user account" href="user_create_t.dita" type = "task" linking = "targetonly"></topicref>
            <topicref navtitle = "Edit an existing user account" href="user_edit_t.dita" type = "task" linking = "targetonly"></topicref>
        </relcell>
        <relcell></relcell>
    </relrow>
    <relrow>
        <relcell>
            <topicref navtitle = "Role window details" href="role_r.dita" type = "reference" linking = "sourceonly"></topicref>
        </relcell>
        <relcell></relcell>
        <relcell>
            <topicref navtitle = "Create a new role" href="role_create_t.dita" type = "task" linking = "targetonly"></topicref>
            <topicref navtitle = "Edit an existing role" href="role_edit_t.dita" type = "task" linking = "targetonly"></topicref>
        </relcell>
        <relcell></relcell>
    </relrow>
</reltable>

Conclusion

Using a four column relationship table in our SunGard Higher Education DITAMAPs, we are able to easily maintain the relationships between hundreds of topics authored by a distributed writing team. Each team member can modify the specific row that applies to the topic in question without having to analyze the relationships of any other topic.

While proper up-front planning is still vital to assign topic relationships, knowing that each source topic is always located in the first column and all target topics can be found in columns based on the topic type has made the job of maintaining those relationships much easier. -->

XML.org Focus Areas: BPEL | DITA | ebXML | IDtrust | OpenDocument | SAML | UBL | UDDI
OASIS sites: OASIS | Cover Pages | XML.org | AMQP | CGM Open | eGov | Emergency | IDtrust | LegalXML | Open CSA | OSLC | WS-I