OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

dita message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Stage 2 proposal: let steps nest within steps


DITA 2.0 proposed feature #106: Allow <steps> to nest

Allow the <steps> element to nest, in order to address one of our more common authoring pain points, simplify reuse, and reduce overall element count.

Date and version information
Date that this feature proposal was completed

Champion of the proposal Links to any previous versions of the proposal Links to minutes where this proposal was discussed at stage 1 and moved to stage 2 Links to e-mail discussion that resulted in new versions of the proposal Link to the GitHub issue Original requirement or use case
Discussed August 1 2017: The current task structure allows <substeps> to be nested within <steps>, but you cannot nest <steps> within itself or <substeps> within itself, making it impossible to nest any sort of step beyond the second level. We have heard the following requests related to that structure, all suggesting that <steps> should be able to nest within itself: Use cases
As indicated by the use cases / requirements above: New terminology

N/A

Proposed solution

Benefits
Who will benefit from this feature? What is the expected benefit? How many people probably will make use of this feature? How much of a positive impact is expected for the users who will make use of the feature? Technical requirements
Adding new elements or attributes Removing elements or attributes Processing impact Overall usability Backwards compatibility
Was this change previously announced in an earlier version of DITA? Removing or renaming an element that was shipped in DITA 1.3? Changing a content model by removing something that was previously allowed, or by requiring something that was not? Migration plan
Might any existing documents need to be migrated? Might any existing processors or implementations need to change their expectations? Might any existing specialization or constraint modules need to be migrated? Costs
Outline the impact (time and effort) of the feature on the following groups:
Maintainers of the grammar files Editors of the DITA specification Vendors of tools DITA community-at-large Producing migration instructions or tools Examples
Figure 1. Before/after of basic structure
Current markup for 3-level steps:
<steps>
 <step><cmd>Major command</cmd>
   <substeps>
     <substep><cmd>Sub-command</cmd>
       <info>
         <ol>
           <li>Long way to go, and is this still a command</li>
         </ol>
       </info>
     </substep>
   </substeps>
 </step>
</steps>

New markup for 3-level steps:
<steps>
 <step><cmd>Major command</cmd>
   <steps>
     <step><cmd>Sub-command</cmd>
       <steps>
         <step><cmd>Long way to go, and is this still a command</cmd></step>
       </steps>
     </step>
   </steps>
 </step>
</steps>

Figure 2. Example with unordered sub-steps
Currently any unordered sub-steps must establish an order (using the ordered <substeps>), or must be created with alternate markup:
<steps>
 <step><cmd>This command has some components</cmd>
   <info>
     <ul>
       <li>As you can see,</li>
       <li>the order is not important</li>
       <li>But I'd like to mark them up as steps / commands</li>
     </ul>
   </info>
 </step>
</steps>

With unordered steps allowed within a <step>, the correct markup can be used:
<steps>
 <step><cmd>This command has some components</cmd>
   <steps-unordered>
     <step><cmd>As you can see,</cmd></step>
     <step><cmd>the order is not important</cmd></step>
     <step><cmd>But I'd like to mark them up as steps / commands</cmd></step>
   </steps-unordered>
 </step>
</steps>

Figure 3. Reuse model
Currently the only ways to reuse a step from one task as a sub-step in another context are to either cut and paste, or to use content references on every component:
in topicA.dita:
<step id="stepZ">
 <cmd id="stepZcmd">command...</cmd>
 <stepxmp id="stepZxmp">example...</stepxmp>
 <info id="stepZinfo">more info...</info>
 <stepresult id="stepZresult">what you end up with...</stepresult>
</step>

in topicB.dita:
<substep>
 <cmd conkeyref="topicA/stepZcmd"/>
 <stepxmp conkeyref="topicA/stepZxmp"/>
 <info conkeyref="topicA/stepZinfo"/>
 <stepresult conkeyref="topicA/stepZresult"/>
</subtep>

This is ugly, difficult to maintain, and content will be broken if the original stepZ adds or removes markup (especially if it adds something like <choices> that is not even available in a sub-step). Allowing steps to nest results in the following change; the reuse element still requires the empty <cmd> as with any content reference on an element with required children:
in topicA.dita:
<step id="stepZ">
 <cmd id="stepZcmd">command...</cmd>
 <stepxmp id="stepZxmp">example...</stepxmp>
 <info id="stepZinfo">more info...</info>
 <stepresult id="stepZresult">what you end up with...</stepresult>
</step>

in topicB.dita:
<step conkeyref="topicA/stepZ"><cmd/></step>



Regards,

Robert D. Anderson
DITA-OT lead and Co-editor DITA 1.3 specification,
Digital Services Group


E-mail: robander@us.ibm.com
Digital Services Group
11501 BURNET RD,, TX, 78758-3400, AUSTIN, USA




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]