Can only resolve conkeyrefs from first part of a composite resource files
Posted: Thu Aug 13, 2026 12:41 pm
Product/version: oXygen XML Author Eclipse 28.1.0
Expected behavior: conkeyref should resolve an ID in any topic within the keyed composite DITA document.
Actual behavior: IDs in the first topic resolve, but IDs in subsequent topics do not.
Reproduction: see below
Comparison: DITA-OT resolves both references successfully.
I have composite resource files with common texts to be used in for example concept or task topics. Oxygen XML Author cannot resolve all of these. I have found that I get errors (in Author mode and when saving the file with the conkeyref) when I use conkeyrefs that are not present in the first part of the composite resource file. DITA-OT is perfectly happy with this, but not Oxygen.
Below is a complete example demonstrating this, the first conkeyref (for note1) in file test.dita works fine in Oxygen, while the second (step1) is marked as an error. I had a screenshot, but could not upload it. Also note that I have the root map (file root.ditamap) opened in the DITA Maps Manager, and its Context: setting is set to "<Current map>". Changing the Context: to root.ditamap gives the same result.
/Erlend
The map, root.ditamap:
The resource file, resource.dita:
The file using the snippets from the resource file, test.dita:
Expected behavior: conkeyref should resolve an ID in any topic within the keyed composite DITA document.
Actual behavior: IDs in the first topic resolve, but IDs in subsequent topics do not.
Reproduction: see below
Comparison: DITA-OT resolves both references successfully.
I have composite resource files with common texts to be used in for example concept or task topics. Oxygen XML Author cannot resolve all of these. I have found that I get errors (in Author mode and when saving the file with the conkeyref) when I use conkeyrefs that are not present in the first part of the composite resource file. DITA-OT is perfectly happy with this, but not Oxygen.
Below is a complete example demonstrating this, the first conkeyref (for note1) in file test.dita works fine in Oxygen, while the second (step1) is marked as an error. I had a screenshot, but could not upload it. Also note that I have the root map (file root.ditamap) opened in the DITA Maps Manager, and its Context: setting is set to "<Current map>". Changing the Context: to root.ditamap gives the same result.
/Erlend
The map, root.ditamap:
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN" "map.dtd" []>
<map id="root">
<title>Sample root map</title>
<topicref href="test.dita"/>
<keydef href="resource.dita" keys="res1" type="topic"/>
</map>Code: Select all
<!DOCTYPE dita PUBLIC "-//OASIS//DTD DITA Composite//EN" "ditabase.dtd">
<dita>
<concept id="c1">
<title>Concept</title>
<conbody>
<note id="note1">Works</note>
</conbody>
</concept>
<task id="t1">
<title>Task</title>
<taskbody>
<steps>
<step id="step1">
<cmd>Works?</cmd>
</step>
</steps>
</taskbody>
</task>
</dita>Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
<task id="task0">
<title>Task test</title>
<taskbody>
<context>
<note conkeyref="res1/note1"/>
</context>
<steps>
<step conkeyref="res1/step1">
<cmd/>
</step>
</steps>
</taskbody>
</task>[code]