Export des Map et des Chapter en DITA
Schéma classique d'une map DITA
Une map DITA est un assemblage de différentes références vers des topics : des topicrefs. Ces topics peuvent être organisés hiérarchiquement, avec des topicrefs à l'intérieur d'un topicref. L'exemple ci-dessous du fragment d'une map DITA comporte, dans l'ordre :
Une référence simple vers le topic Introduction.xml ;
Une référence vers le topic donnesImportantes.xml, qui contient lui même les sous-topics distancesAterrissage.dita et etalonnage.dita ;
Une référence simple vers le topic informationsSupplementaires.xml
Fragment d'une map DITA
<map title="Section 5 : Performances" format="" chunk="to-content">
<topicref href="Introduction.xml"/>
<topicref href="donneesImportantes.xml">
<topicref href="distancesAterrissage.dita"/>
<topicref href="etalonnage.dita"/>
</topicref>
<topicref href="informationsSupplementaires.xml"/>
</map>
Dans le modèle Scenari Doctek, la structure d'un fichier .map est quasiment la même que dans DITA. La différence principale est la gestion des sous-topics, sous la forme d'élément Scenari chapter. L'élément chapter de Doctek contient les références vers les sous-topics, qui ne sont donc pas dans le fichier Scenari de la map. La map Scenari correspondant à la map Dita présentée aura des références vers les topics simples, ainsi que vers le chapter, mais pas vers les sous-topics contenus dans le chapter.
Fragment de map Doctek
<kd:map xmlns:sp="http://www.utc.fr/ics/scenari/v3/primitive" xmlns:sc="http://www.utc.fr/ics/scenari/v3/core" xmlns:kd="kelis.fr:doctek">
<kd:mapM>
<sp:title>Section 5 : Performances</sp:title>
</kd:mapM>
<sp:topicRef sc:refUri="/EspaceDoctek/Introduction.task"/>
<sp:topicRef sc:refUri="/EspaceDoctek/chap_01.chapter"/>
<sp:topicRef sc:refUri="/EspaceDoctek/concept1.concept"/>
</kd:map>
La transformation d'une map Doctek vers une map DITA consiste en une réécriture des topicrefs, en utilisant la même transformation de liens que pour concept et task. Pour récupérer les références vers les sous-topics qui se trouvent dans chapter, il suffit de parser le fichier chapter correspondant avec la fonction document de XSL.
Notion de Chapter
Dans une map DITA, on peut avoir une organisation en sous-topics, comme décrit dans la map ci-dessus. Dans Doctek, cette hiérarchisation est mise en place par l'élément chapter : un chapter a un title, et peut avoir :
des topicrefs vers des task ou concept ;
un body avec des informations, paragraphes, etc. ;
des nestedTopics, qui peuvent être des task, des concept, ou bien des chapter (ce qui peut permettre une organisation en sous-chapitres de la map). Les nestedTopics peuvent être internalisés ou externalisés.
Fragment de chapter Doctek
<kd:chapter xmlns:sp="http://www.utc.fr/ics/scenari/v3/primitive" xmlns:sc="http://www.utc.fr/ics/scenari/v3/core" xmlns:kd="kelis.fr:doctek">
<kd:chapterM>
<sp:title>Données importantes</sp:title>
</kd:chapterM>
<sp:body>
<kd:chapterChunk>
<sp:task sc:refUri="/EspaceDoctek/DistanceAterrissage.task"/>
<sp:task sc:refUri="/EspaceDoctek/etalonnage.task"/>
</kd:chapterChunk>
</sp:body>
<sp:nestedTopic sc:refUri="/EspaceDoctek/Performance.concept"/>
</kd:chapter>
Transformation de chapter vers DITA
Les topicrefs présents dans le fichier chapter de Doctek sont traduits par des topicsrefs au niveau de la map, au moment où la transformation de la map est effectuée.
La transformation du fichier chapter en lui-même produit un fichier DITA topic contenant tous les éléments du chapter, à savoir le title, le body et les nestedTopics. La transformation utilisée ne présente rien de particulier, excepté pour les nestedTopics. En effet, en transformant de cette façon les chapter Doctek, on se retroouve donc avec un fichier DITA topic, dans lequel on ne peut pas intégrer de concept ou task, selon la DTD de DITA, mais seulement d'autres topics. On a choisi ici de "dégrader" les concept et task des nestedTopics en simple topics, pour pouvoir les mettre dans le fichier topic correspondant au chapter.
Dans l'exemple de chapter ci-dessus, les deux task dans le corps du chapter se retrouveront dans le fichier de la Map DITA. Le nestedTopic, qui est le concept Performance.concept, sera intégré dans le fichier du topic correspondant au chapter, sous la forme d'un sous-topic qui contiendra le contenu de Performance.concept.
Transformation d'une map plus complexe
Pour l'instant, il n'y a pas de gestion des sous-sous-chapitres : si un nestedTopic est un chapter, il n'est pas traité. Deux solutions paraissent possibles :
Les sous-chapitres qui se trouvent dans les nestedTopics sont parsés au moment de la transformation de la map : on aura dans la map la hiérarchie de tous les topics et sous-topics, et chaque chapter sera transformé en un fichier topic;
La transformation de la map ne parse que le premier niveau de chapter : les sous-chapitres présents dans les nestedTopics sont alors transformés en topics internes (à savoir en balises topic au sein du fichier topic du chapter).