DITA Proposed Feature # 17c

conref: allow reuse of ranges of elements.

Longer description

Allow conref of more than one element at a time, for example steps 2-4 in a task.

Scope

Major

Use Case

  1. Author A wants to reuse three steps from someone else's list.
  2. Author B owns the list, and has helpfully provided ids on each item
  3. Author A points to the range of items they want to pull in by creating conreffing elements: one that points to the start of the range, and one that points to the end.
Figure 1. Source with ids
<topic id="x">
	...
	<body>
		<ol>
			<li id="thing">A</li>
			<li id="foo">B</li>
			<li id="bar">C</li>
			<li id="stuff">D</li>
			<li id="also">E</li>
		</ol>
	</body>
</topic>
Figure 2. Reusing topic with conrefs
<topic id="y">
	...
	<body>
		<ol>
			<li>My own first step</li>
			<li conref="target.dita#x/foo" conaction="pullstart"/>
			<li conref="target.dita#x/stuff" conaction="pullend"/>
			<li>And a different final step</li>
		</ol>
	</body>
</topic>
Figure 3. Processed result of reusing topic
<topic id="y">
	...
	<body>
		<ol>
			<li>My own first step</li>
			<li>B</li>
			<li>C</li>
			<li>D</li>
			<li>And a different final step</li>
		</ol>
	</body>
</topic>

Technical Requirements

Two new values for the conaction attribute described in 17b:
pullstart, pullend
<li conref="target.dita#x/foo" conaction="pullstart"/>
<li conref="target.dita#x/stuff" conaction="pullend"/>

As in 17b, the use of two elements to identify the start and end of the range ensures that the elements are being pulled into a context where a range of elements is in fact allowed.

Costs

Time to design, ca. 4 meetings; cost for implementation is higher.

Benefits

Allows better match to reuse intent. If a reuser wants to grab a range, then grabbing the range by start and end values is much easier and much less risky than grabbing the range by pointing to each element individually. When a new element is added within the scope of the range, it is automatically picked up by default.

Time Required

ca. 4 mtgs to confirm design; cost to implement is higher.