The <exportanchors> element is used to delay conref resolution within DITA documents. This allows you to process or display DITA content in a way that will resolve only some of the conref values in that content, while remaining values are left for later resolution. The element contains a list of IDs or keys that should not be resolved during the initial preparation of the content for display; those IDs and keys will be preserved after that preparation, as will the conref relationship itself.
The exportanchors element may be used within a topic prolog, in which case the defined IDs apply to IDs within that topic (excluding sub-topics). Alternatively it may be defined in the topicmeta in a map. In the second case the IDs apply to the single topic referenced by the current topicref element. If the topicref points to a file without referencing a specific topic, it is treated as a reference to the first or root topic. In order to define anchor ids for a topic that is not the first or root topic, a topicref must directly reference the desired sub-topic.
When an element's ID is defined for delayed resolution, it must contain only the element ID, not the usual "topicid/elementid" syntax that is required for most other DITA references. The <anchorid> topic explains the format in detail.
One possible way to use this is with a system that renders DITA dynamically. A user may process information locally in a way that resolves conref for all static information, while delaying resolution for information that is subject to change. The exportanchors element is used to define conref values that are delayed.
Another potential use is when DITA is used as the source format for a publishing system that is able to render information dynamically. In this case some conref values may be resolved, while leaving pre-selected values to be resolved live in that publishing system.
Many publishing systems for which DITA is used as a source format do not have a way to dynamically resolve content references; those systems will not see any benefit from this element. When DITA is used for those systems, behaviors related to this element should be ignored.
map (base), map (technical content), classifyMap, learningMap |
|
+ topic/keywords delay-d/exportanchors
Use case 1: Runtime resolution of conref to an id, determined by original author
<task id="configA"> <title>ABC<title> <shortdesc>...</shortdesc> <prolog><metadata> <exportanchors> <anchorid id="step1"/> <anchorid id="step2"/> <anchorid id="step3"/> </exportanchors> </metadata></prolog> <taskbody> <steps> <step id="step1"><cmd>Do this</cmd></step> <step id="step2"><cmd>Do the other</cmd></step> <step id="step3"><cmd>And then finish</cmd></step> </steps> </taskbody> </task>
<task id="configB"> <title>..</title> <shortdesc>..</shortdesc> <taskbody> <steps> <step><cmd>Do the very first thing</cmd></step> <step conref="componentA/configA.dita#configA/step1"><cmd/></step> <step><cmd>Do the middle thing</cmd></step> <step conref="componentA/configA.dita#configA/step2"><cmd/></step> </steps> </taskbody> </task>
Use case 2: Runtime resolution to an id exported by the information builder
<map> <topicref href="componentA/configA.dita"> <topicmeta> <exportanchors> <anchorid id="step1"/> <anchorid id="step2"/> <anchorid id="step3"/> </exportanchors> </topicmeta> </topicref> </map>
The ID on an <anchorid> element is first compared with the topic's id, and then with elements inside that topic. This results in the following situation.
<map> <topicref href="componentA/this.dita"> <topicmeta> <exportanchors> <anchorid id="this"/> <anchorid id="that"/> </exportanchors> </topicmeta> </topicref> </map> <topic id="this"> <title>This and that</title> <shortdesc>Oh, you know, this and that.</shortdesc> <body> <fig id="that"><p>more of that</p></fig> </body> </topic>
In this example, a set of information contains multiple components. Some references to component A use keys rather than a direct reference, so that conref can be redirected to a different component when component A is not installed. The keys may be exported, in addition to the IDs, so that some references become bound to the actual component while other references may be redirected.
<map> <topicref keys="componentAconfig commonconfig" href="componentA/configA.dita#configA"> <topicmeta> <exportanchors> <anchorkey keyref="commonconfig"/> <anchorid id="step1"/> <anchorid id="step2"/> </exportanchors> </topicmeta> </topicref> </map>
The keys attributes declares two distinct keys that may be used to refer to this topic (componentAconfig and commonconfig). Only the second is preserved using anchorkey. A task topic from another component may reuse steps within this topic in a variety of ways.
<steps> <step conkeyref="componentAconfig/step1"><cmd/></step> <step conkeyref="componentAconfig/step1.5"><cmd/></step> <step conkeyref="commonconfig/step2"><cmd/></step> <step conkeyref="commonconfig/step2.5"><cmd/></step> <step><cmd>And that is the end of that</cmd> </steps>
This allows the information assembler to resolve references that must be to componentA while deferring references that can be fulfilled by alternative component content.
This example demonstrates why the anchorid element cannot reference an element with the usual topicid/elementid format. If the two anchorid elements in the example had been set to config/step1 and config/step2, then they would only ever apply in a topic with id="config". It would not be possible to redirect the key to another topic, but still preserve conref behaviors as desired.
Although it is not specifically called out in this example, it is possible to delay conref resolution for an entire topic using the key. If conkeyref on a task topic element is set to "componentAconfig", which is not delayed, the conref will be evaluated as usual. However, if conkeyref on the task is set to "commonconfig", which is delayed, resolution of conref on that element should be delayed by a processor.
univ-atts attribute group (includes select-atts, id-atts, and localization-atts groups) |
A set of related attributes, described in 3.4.1.3 univ-atts attribute group |
|||
A set of related attributes, described in 3.4.1.2 global-atts attribute group |
||||
A common attribute described in 3.4.1.9 Other common DITA attributes |