Migrer de FrameMaker vers DITA XML

Le but de cette procédure est de :

  • migrer son contenu |fm| vers |dita| sans se plonger dans les arcanes des EDD |fm| (petits projets uniquement !),
  • gérer la documentation technique au format |dita| sans utiliser |fm| structuré.
  1. Restructurez le contenu et les styles de vos fichiers de contenu |fm| selon les concepts |dita|.
  2. Créez un document |fm| vide et importez-y tous les styles existants dans les fichiers à migrer.
  3. Appliquez tous les styles disponibles à des paragraphes vides du document |fm| vide.
  4. Enregistrez le document |fm| vide sous le nom styles.fm.
  5. Ouvrez |fm| structuré 11 et créez un nouveau fichier |dita| de type topic.
  6. Choisissez StructureTools > Exporter le catalogue d’éléments en tant qu’EDD et sauvegardez la nouvelle EDD sous le nom DITA-topic-edd.fm.
  7. Ouvrez le fichier styles.fm, puis choisissez Fichier > Importer les définitions d’éléments et importez les définitions d’éléments à partir de DITA-topic-edd.fm.
  8. Répétez les trois étapes ci-dessus pour les autres types de topics |dita| (task, reference, etc.), en modifiant les noms de fichiers comme il se doit.
  9. Ouvrez le fichier styles.fm, puis choisissez StructureTools > Générer le tableau de conversion.
  10. Modifiez le fichier de conversion et faites correspondre chaque style |fm| à une balise |dita|.
  11. Enregistrez le tableau de conversion sous le nom DITA2FM-conversion-table.fm.
  12. Ouvrez un fichier de contenu |fm| sous |fm| structuré 11 et choisissez StructureTools > Utilitaires > Structurer le document en cours.
  13. Sélectionnez DITA2FM-conversion-table.fm et cliquez sur Ajouter structure.
  14. Enregistrez le fichier de contenu |fm| au format XML sans sélectionner d’application.
  15. Ouvrez le fichier XML généré sous un éditeur |dita| et corrigez la syntaxe |dita|. Certains aspects de cette étape sont scriptables, mais il faut également procéder à des opérations manuelles de restructuration du contenu. Il vous faudra notamment placer à la main les références croisées, de préférence dans une reltable.

Pour générer les éléments permettant de construire un fichier ditamap, vous pouvez par exemple utiliser des scripts Perl du type :

Avertissement

Ne lancez ce type de scripts que sur une copie de vos fichiers et non sur les fichiers originaux.

#!/usr/bin/perl
open(INPUT,"<$ARGV[0]") or die;
@input_array=<INPUT>;
close(INPUT);
$input_scalar=join("",@input_array);
# substitution
$input_scalar =~ s#\<body>(.|\n)*?</body>##ig;
open(OUTPUT,>$ARGV[0]") or die;
print(OUTPUT $input_scalar);
close(OUTPUT);

Vous pouvez également modulariser facilement le contenu à l’aide des ciseaux XML xml_split, ou utiliser le module Perl XML::Twig, ou encore ce one-liner Bash pour renommer les fichiers .dita d’après leur titre :

$ ack "<title>" *.dita| sed "s# #_#g;" | tr '[:upper:]' '[:lower:]' | \
sed -E "s#(.*.dita)#mv \1#g;" | \
sed -E "s#\.dita.*<title>(.*)</title>#.dita \1.dita#g;"