Conversion Docbook en DITA #47
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
J'ai essayé d'appliquer ce que l'on a vu dans le premier exercice de conversion avec XSLT pour transformer le fichier Docbook ci-joint en DITA.
Je ne suis pas encore certaine du résultat puisqu'il est différent de ce que j'obtiens en le convertissant sur oXygen.
Voici le fichier XSLT :
Pourriez-vous attacher le fichier de sortie oXygen et celui que vous obtenez avec cette transformation ?
Il y a plusieurs problèmes:
<dita>
ne peut pas être hors d'un modèleUne fois ces problèmes résolus, vous obtiendrez quelque chose qui fonctionne même si ça n'est pas encore satisfaisant.
Le mieux alors serait de recommencer pour tenter de reproduire la sortie d'oXygen, puis de retirer les éléments qui ne vous intéressent pas.
Je pense avoir réussi à obtenir le résultat que je voulais.
Il reste un seul problème à régler, dans le 3e
<entry>
de chaque élément<row>
, il y a deux éléments<keycap>
séparés par un « ou ».Exemple :
Cependant, ce « ou » ne s'affiche pas dans le résultat final...
La cible de la 1ère ligne, c'est effectivement le contenu du premier
<keycap>
, donc par exemple "shift", et la cible de la 2e ligne, c'est effectivement le contenu du second<keycap>
, donc "⇧".Et à aucun moment, vous ne demandez autre chose que ces deux éléments.
Et c'est là qu'on trouve l'intérêt des transformations. Ce qui peut être transformé, extrait ou injecté, ce n'est pas seulement les balises, mais également le contenu textuel des éléments. Ici, le code d'origine contient un "ou" entre les
<keycap>
mais vous pourriez utiliser<xsl:text>
pour ajouter un " ou " (ou autre chose) entre le contenu des<keycap>
:L'étape suivante serait de trouver le moyen d'extraire simplement le contenu de
entry[3]
en laissant les balises<keycap>
de côté, mais en conservant leur contenu ? Ça nous éviterait d'avoir à utiliser 3 instructions.Votre fichier est correct, mais il vous oblige à créer une instruction par élément du document source pour obtenir un élément du document cible. Il doit y avoir le moyen de généraliser ça, comme on l'a fait avec la transformation TMX > TBX, pour pouvoir gérer un nombre arbitraire de données.
Je n'ai pas abandonné cet exercice ! Voici ce que j'ai pu faire jusqu'à présent en revoyant la structure de DITA et en reprenant ce que nous avions vu dans l'exercice précédent (TBX > TMX) :
La nouveauté ici est
xsl:element
, qui permet de créer un élément dans le fichier de sortie (topic
,section
,title
,table
,row
,entry
etkeycap
) :XSLT xsl:element
Topic elements - Dita
Ça a l'air très bien.
Je ne connais pas DITA donc j'ai quelques questions :
sous le premier
title
il y a un paragraphe sans balise, mais j'y verrais un truc de typepara
comme dans DocBook.avant les deux points il y a une espace insécable en DocBook qui semble être mal convertie.
dans les
entry
, est-ce qu'il faut quelque chose pour baliser le texte « ou » ?Après la première
table
et avant le secondtitle
en DocBook il aurait fallu unpara
, cf. plus haut. Ça se passe comment en DITA ?Bref, toutes les parties de texte qui ne sont pas correctement balisées me paraissent suspectes. Pourriez-vous vérifier comment ça se passe en DITA ?
En tout cas, ça avance. C'est super.
Tout à fait ! Et c’est un oubli de ma part. En DITA on utilisera plutôt
<p>
donc je l’ai ajouté comme ceci :Je ne suis pas sûre d'avoir compris de quoi vous parlez. Est-ce que cela concerne le fichier de sortie ou le code ?
Non, plus besoin d'ajouter quoi que ce soit puisque
xsl:element
englobe tout ce qui se trouve dans la balise<entry>
. Je pense que l'XPath que j'utilisais au début excluait le texte à l'intérieur des balises.J'ai encore apporté des modifications, car en refaisant un tour sur le fichier que j'avais précédemment converti avec oXygen, j'ai remarqué que :
Voici donc à quoi cela ressemble maintenant :
Il manque des choses :
Fichier du 21 :
Fichier d'aujourd'hui :
Pas sur le texte, sur les balises.
et je voulais dire que ce caractère : " " ne s'affiche pas bien dans BBEdit, et je n'ai pas l'impression que c'est une espace insécable normale ici.
Désolé pour la fermeture accidentelle du ticket. Je cherchais à annuler un mauvais brouillon, et j'ai évidemment cliqué le mauvais bouton. Oops ! 😰 😧
Je suis en train d'apprendre le DITA sur le tas dans le cadre de mon travail, alors je suis ce ticket avec intérêt.
J'ai enfin eu le temps de regarder les fichiers de sortie d'un peu plus près. Mes connaissances restent encore limitées, mais j'ai remarqué quelques éléments.
Un premier problème est l'imbrication d'éléments
<section>
. Malgré son nom, en DITA cet élément a un usage limité (généralement dans les rubriques référence) et, malgré son nom, ne représente pas tout à fait ce que l'on imagine quand on pense à une section d'un document.L'utilisation de l'élément
<dita>
dans la deuxième tentative m'intrigue. D'après ce que j'ai lu, l'utilité de cet élément est de pouvoir inclure plus d'une rubrique (un élément<topic>
ou une de ses versions spécialisées) dans un même fichier, mais cette pratique semble être généralement déconseillée puisque la rédaction en DITA préconise plutôt la création d'une seule rubrique par fichier.Par contre, il a peut-être une utilité particulière dans un processus de conversion. (Je pense que Oxygen fait ça dans sa conversion, mais j'ai aussi vu des commentaires à propos du Batch Conversion plugin qui effectuerait un meilleur découpage selon les types de rubriques DITA.)
Et ce deuxième point me mène à problème sous-jacent dans l'exercice de conversion :
Même en travaillant chapitre par chapitre, le manuel se prête mal à une conversion directe
en DITA parce qu'il n'est pas suffisamment modulaire par rapport à l'approche structurée qui repose sur des rubriques autonomes courtes qui est au cœur de DITA.
Cela complique le processus de conversion.
Je pense qu'il faudrait donc procéder en quelques étapes :
(Il faudrait aussi songer à l'ordre de étapes ; les deux premières dans ma liste pourraient être inversées.)
Dans cette optique, le regroupement d'un chapitre dans un élément
<dita>
pourrait présenter une approche utile si on commence par la conversion et qu'on passe à la modularisation à partir du contenu converti en XML DITA.Toutefois, je pense qu'avec cette approche, certaines des balises
<section>
de DITA devraient devenir des rubriques représentées par de balises<topic>
(ou encore des balises<concept>
,<task>
ou<reference>
) en DITA. (Mais là, comment identifier les<section>
qui représente des rubriques de celles qui représente autre chose ?)De là, on pourrait peut-être extraire les rubriques dans de fichiers individuels (manuellement ? avec un outil quelconque ?) pour modulariser le contenu.
On peut aussi se demander si on pourrait découper un chapitre en plusieurs documents DITA dans le processus de transformation. Il semble que XSLT 2.0 permet de créer plusieurs documents de sortie à partir d'un seul document d'entrée, tandis qu'avec XSLT 1.0, ça dépend de l'outil utilisé. Certains outils offriraient des extensions avec cette fonctionnalité, d'autres non.
Si on tente de produire plusieurs documents DITA à partir d'un seul chapitre du manuel, il serait peut-être avantageux d'essayer de modulariser le contenu un peu plus à l'avance, peut-être en ajoutant un attribut quelconque aux éléments
<section>
, ou en les remplaçant par des éléments<sect1>
,<sect2>
, etc. un peu plus précis. Y aurait-il une meilleure solution ?Autre point d'interrogation : une conversion du manuel mériterait-elle une réorganisation selon les rubriques techniques proposées par DITA (concept, task, et reference, peut-être avec des rubriques glossaire (glossentry) ou troubleshooting à l'occasion ?
Je n'ai pas de réponses à toutes ces questions, que je me pose autant à moi-même qu'à vous tous.
J'ai l'impression qu'une conversion complète exigera probablement un processus qui combine du XSLT avec d'autres outils, ainsi qu'un certain niveau de travail manuel. Il reste à voir à quel point on pourrait peaufiner les XSLT (ou une combinaison de XSLT et d'un autre programme) pour miniser l'effort manuel requis.
Et enfin, le caractère qui intrigue Jean-Christophe :
Ça a l'air d'être une espace insécable fine.
Il semble y avoir un certain désaccord entre diverses références typographique (et régions de la francophonie) à savoir si l'on devrait précéder les deux-points d'une espace insécable fine ou normale.
Hahaha, je pensais que tu avais été piraté. Mais j’ai été surpris par le temps qu’il m’a fallu pour trouver comment réouvrir un ticket.
Excellent !
Et c’est là où tu mets le doigt sur l’objectif de l’exercice.
Tu sais qu’on a discuté sur dev de la réécriture du manuel de manière plus modulaire. La dernière version de DocBook semble bien se prêter à l’exercice, mais je veux aussi explorer ce que DITA propose, même si je n’ai pas envie de tomber dans un autre terrier à lapin (marrant cette expression, ça passe bien en anglais, mais moyen en français, et je ne sais même pas si on a un équivalent… Tu sais si ça vient de Lewis Carroll ?).
Bref, ici, il était question plutôt de travailler manuellement avec XSLT, puisqu’il existe déjà des outils de conversion DocBook/DITA, et de produire un document DITA valide pour lui appliquer la mémoire de traduction créée dans le processus de traduction du DocBooc que de s’intéresser en détail (mais si on le fait, c’est bien aussi) à la valeur intrinsèque du document produit en tant que document DITA.
L’idée très limitée de cet exercice, c’est avant tout d’apprendre à créer un XSLT qui propose une sortie satisfaisante, dans les limites de la structure du fichier d’origine.
Et dans l’esprit décrit ci-dessus, ça serait intéressant de pousser la modularisation du DocBook au maximum, et de voir quels sont les avantages/désavantages des deux formats (en considérant « presque » exclusivement la chaîne de production d’une sortie utilisable, soit en HTML, soit en PDF, soit en un truc qui est directement intégrable à OmegaT, si ça existe, etc., vu que les formats en eux-mêmes n’ont pas grand intérêt).
Avec 6.n, j’envisage de mettre à jour notre chaîne d’outils DocBook pour la sortie du HTML/PDF. Je n’avais pas trop envie de mettre le doigt dans cet engrenage-là lors de la mise à jour du manuel. Mais une fois qu’on aura plus de temps, on pourra faire des essais.
Je ne peux pas dire que j’ai acquis une grosse compétence en XSLT lors de ce stage 😅, et je remercie @ciri de tenter de boucler ce projet, mais je compte bien étudier notre transformation HTML parce qu’il y a des choses qui me chagrinent. Et pour le moment, le bidouillage que j’ai fait (essentiellement, effacer des trucs sans trop savoir pourquoi, mais ça produisait ce que je voulais) c’est quand même le niveau 0 de l’écriture (pour ne pas dire -1).
Oui, je pense. Et je pense aussi qu’on peut adopter ce type de structure dans le cadre de DocBook dans un premier temps.
Bon, et bien tu vois maintenant où j’aimerais aller avec les futures versions d’OmegaT donc on pourra en discuter sur dev une fois la page de ce stage tournée.
Moi, je fais confiance à Antidote. Si on doit adopter la typo canadienne comme tu l’as fait pour l’anglais (et la langue en général), ça ne me pose pas de problème.
Shiver me timbers!
Au moins je t'aurai donné la chance d'apprendre quelque chose de nouveau !
Les terriers à lapin, ça vient indubitablement de Carroll, mais aucun aussi bon équivalent français ne me vient à l'esprit.
Et réécrire le manuel de façon plus modulaire, c'est quelque chose que je veux travailler une fois qu'on aura bouclé la sortie de 5.8/6.0.
Le diable se cache dans les détails… 👺
À ce niveau, @ciri y est presque : il suffit d'éviter d'imbriquer des éléments
<section>
dans le document de sortie.Dans un premier temps, je pense que DocBook a une orientation plus narrative par rapport à la rédaction du contenu. Même si on adopted une certaine modularité dans le processus, les modules sont généralement envisagés dans le contexte d'un livre ou autre publication complète en soi.
En DITA, tout est entièrement axé sur la création de petites unités autonomes de contenu qui doivent être assemblées pour former un tout.
À ce sujet, j'ai diverses idées sur les différents aspects documentation (certaines contradictoire !). Je vais les organiser de façon cohérente et envoyer un message sur la liste au cours des prochaines semaines.
De toute façon, il va bien falloir que je commence à agir en peu à titre de "documentation manager"… 😄
Le HTML et le CSS sont sur ma (longue) liste de choses à étudier et approfondir.
Probablement, surtout si on passe à DocBook 5.0.
En effet! D'ici là, je vais mettre un peu d'ordre dans mes idées pour les rendre présentables.
J'ai entendu parler d'Antidote, mais je ne l'ai jamais utilisé. Ce n'est pas une question de devoir, mais simplement une question de choisir quelles règles typographiques on veut utiliser dans le cadre de OmegaT l10n-fr.