conref: supporting reuse with delta (applying changes to the reused content).
Lets reusers say "that's a lovely task but I need to add a new first step and third step" without refactoring the original task into a bunch of little chunks, or pointing individually at every element in the task. Also allows potential new applications, such as a source topic that provides a template, and reusing topics that pull in the template as a starting point - automatically getting updates to all affected files when the template changes.
<ol id="x"> <li>a</li> <li id="marker1">b</li> <li>c</li> </ol>
<ol conref="target.dita#target/x"> <li conref="target.dita#target/marker1 conaction="marker"/> <li conaction="addafter">b.1</li> </ol>
<li conaction="addbefore">something</li> <li conref="target.dita#target/marker1 conaction="marker"/>
<li conref="target.dita#target/marker1 conaction="marker"/> <li conaction="addafter">something</li>
<li conref="target.dita#target/marker1 conaction="replace">something</li>
Note that the reason to have two elements for "addafter" or "addbefore" is so that we can leverage the rules of the local document type to ensure that in fact it is valid to add another element after the target one. Then standard conref processing ensures that the same or equivalent rules are in place in both doctypes, so if it is valid to add an element after the marker in the conreffing context, it must be okay in the conreffed context as well.
A new attribute, conaction. Plus cost to implementers.
Substantial benefits. Reuse becomes much more flexible, and allow much finer granularity of control. Reuse that was too expensive to manage before now becomes manageable. Reuse and change criteria become managed by the reusing document, instead of being managed via conditional processing in a shared document. Because different concerns are now managed in different documents, reuse becomes more scalable and less risky than in the traditional shared document case.
Also opens up potential new applications for reuse, such as updatable templates for authoring.
Several meetings to agree on design, plus cost to implement.