Есть способы использовать XSLT или другие языки сценариев, такие как Python, чтобы делать то, что вы хотите, но вы, вероятно, можете использовать вместо этого DITA Open Toolkit. Если вы используете последнюю версию DITA OT (например, 3.4), попробуйте Нормализованный вывод DITA. Вы получаете это, используя dita
transtype. Командная строка будет выглядеть примерно так:
dita-ot-3.4>bin\dita --input=mymap.ditamap --format=dita
Так что если у вас есть карта ввода, которая выглядит так:
<map>
<title>normalize map</title>
<mapref keyref="api1"/>
<keydef keys="api1" href="sub.ditamap" format="ditamap"></keydef>
</map>
И sub.ditamap
выглядит так:
<map>
<title>submap</title>
<topicref href="api-syntax/api-syntax.dita"/>
</map>
Будет выведено что-то вроде этого:
<map cascade="merge">
<title>normalize map</title>
<topicref href="api-syntax/api-syntax.dita" type="concept">
<topicmeta>
<navtitle>API Syntax</navtitle>
<linktext>API Syntax</linktext>
</topicmeta>
</topicref>
<keydef href="api-syntax/api-syntax.dita" processing-role="resource-only" type="concept">
<topicmeta>
<navtitle>API Syntax</navtitle>
<linktext>API Syntax</linktext>
</topicmeta>
</keydef>
</map>
Вы можете избавиться от элемента <keydef>
.