Создайте один объединенный ditamap, заменив все maprefs реальными themerefs - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть набор ditamaps, которые вызываются рекурсивно для создания единой объединенной книги. Однако из-за некоторых проблем, связанных с работой блоков в DITA, я хотел бы обработать файлы карты, чтобы заменить все maprefs на фактические themerefs. Я добиваюсь помощи в разработке XSLT для достижения этой цели. Например, текущая реализация:

map a
|_____map a1
|_____map a2
      |_______map a21
      |_______map a22
              |_______map a221

Это достигается с помощью maprefs для сопоставления a1, map a2, map a21 ...

Что мне нужно, так это одна отдельная карта (Map_unified. ditamap) со всеми топиками c ссылок на карте a1, карте a2, карте a21, карте a22 и карте a221.

Может кто-нибудь помочь мне?

1 Ответ

1 голос
/ 19 февраля 2020

Есть способы использовать 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>.

...