+1 vote
808 vues

Does anyone know of a command line tool to convert USFM format to USX (or any other xml flavor)?

I’d like to write a script to grab a few different .sfm files from different projects and mass-convert them… something quite difficult with the built-in Tools–>Advanced–>Export Project to USX.

Also, USX makes some strange design decisions that seem to be direct reflections of the USFM code instead of true xml. At least they seem strange to me who has very little background in this area… but I would have expected the tag to close at the end of the chapter and not immediately after the chapter number, e.g.
<chapter number=“1” style=“c”>
    all the verses
</chapter>

instead of
<chapter number=“1” style=“c” />

I have the exact same question about verse tags.

Can anyone explain why the xml works this way, or suggest other xml formats that are more logical? These files will be used internally in a publishing project and thus we’re not too concerned about external standards.

Note I’ve tried the Haiola usfm2usfx.exe tool and can’t get it to work, but if people say that’s the best option I can try to figure out what’s wrong.

Ancienne publication - affichée dans sa langue d'origine
Paratext par (1,9k points) | 808 vues

6 Réponses

0 votes
Meilleure réponse

Désolé, cela ne fonctionnera pas. Vous pouvez lire le résultat d'un module déjà configuré sur lequel Paratext a déjà exécuté la génération de module, mais vous ne pouvez pas écrire un module dans Paratext et le faire savoir que c'est un module et exécuter la génération.

EDIT: Apparemment, j'ai manqué quelques questions d'il y a plus de deux ans : :grimacing:

Oui, il devrait maintenant sortir au format 3.0.

Malheureusement, non. rdwrtp8 est conçu pour lire/écrire les fichiers bruts afin que d'autres applications puissent lire/écrire les données Paratext. Cela nécessite que les données soient réversibles (round-trip-able) et les modifications définies dans PrintDraftChanges.txt ne sont pas réversibles.

Traduit automatiquement depuis English
par [Expert]
(16,7k points)

réaffiché
0 votes

Je ne connais pas un tel outil. À mon avis, la meilleure solution consiste à utiliser un schéma d'emplacement standardisé pour l'exportation des fichiers USX, par exemple C:\My Paratext 8 Projects\[project name]\local\USX, et à les récupérer à partir de cet emplacement.
Concernant les marqueurs de chapitres et de versets, ils sont appelés « milestones » (repères) et constituent une manière de gérer le balisage imbriqué.
Est-ce destiné à une publication imprimée ou uniquement numérique ?

Traduit automatiquement depuis English
par (872 points)
réaffiché

Ceci est destiné à une publication uniquement imprimée. Le programme de publication que nous utilisons, SILE, prend en entrée des fichiers xml. Il accepterait en réalité une entrée de type TeX (c'est-à-dire USFM), mais le développeur avec qui je travaille préférerait utiliser du xml.

Je suppose que le format USX conviendra parfaitement au développeur, donc ces autres questions sont pour ma propre compréhension.

Je suppose qu'il s'agit simplement de décisions de conception, mais je me demande pourquoi la personne qui a créé USX a décidé que <chapter> signifiait « le numéro au début d'un chapitre » et non « chapitre ». Ma compréhension du xml est qu'il utilise généralement un formatage comme
<tag attributes=“aaa”>content</tag>

La façon dont les choses sont actuellement
<chapter number=“1” style=“c” > n'a aucun contenu
Alors que je m'attendrais à
<chapter number=“1” style=“c”>the actual content of the chapter<\chapter>

Peut-être que je manque quelque chose, mais je ne vois pas comment cela est causé par des problèmes de balisage superposé.

Voici un autre problème – suivant le style des livres religieux de notre région, notre projet prévoit de marquer les numéros de versets à la fin des versets, et non au début. Avec la façon dont le marqueur <verse> fonctionne actuellement, nous devrons utiliser des scripts pour déplacer la balise à une position différente dans le document xml en texte brut, mais si USX utilisait le format que je pense qu'il devrait utiliser:
<verse number=“1” style=“v”>verse text</verse>
alors il serait assez simple que le programme lisant le xml interprète cette ligne et dise « imprimer l'attribut 'number' à la fin de 'verse text' au lieu du début ».

Traduit automatiquement depuis English
0 votes

Un an et demi plus tard, je veux toujours cette fonctionnalité.

L'option intégrée de Paratext « exporter le projet en USX » est exactement ce dont j'ai besoin, mais je voudrais l'automatiser pour pouvoir l'intégrer dans un script construit en ligne de commande. Le code de conversion USFM–>USX doit être dans PT. Y a-t-il un moyen d'obtenir ce code des développeurs (en comprenant qu'une modification serait nécessaire de notre part pour le faire fonctionner dans le langage que nous utilisons) ? Si oui, comment procéder ?

Traduit automatiquement depuis English
par (1,9k points)
0 votes

Il semble que vous vouliez un outil autonome, mais si tout ce dont vous avez besoin est le texte d'un projet au format USX, Paratext 8+ est livré avec un petit outil en ligne de commande qui peut extraire le texte d'un projet au format USX:
rdwrtp8 -r projectShortName bookCode chapterNum resultFileName -x

Le -x sert à spécifier le format USX au lieu du format USFM.
Si chapterNum est 0 (zéro), alors le livre entier est renvoyé.

Cela ne peut pas être utilisé sur des ressources pour des raisons évidentes.

Il serait difficile de séparer le code d'analyse en dehors de Paratext, car il dépend beaucoup des paramètres du projet et des informations de feuille de style pour produire l'USX à partir de l'USFM.

Traduit automatiquement depuis English
par [Expert]
(16,7k points)
0 votes

Lorsque j'ai vu votre récent message, j'allais suggérer Haiola également, mais je vois que vous l'avez déjà essayé. Admettons que je ne l'ai pas utilisé moi-même. Je suggérerais de contacter l'auteur avec les problèmes que vous avez trouvés, si rdwrtp8 ne fournit pas de solution.

Concernant le balisage imbriqué, je suppose qu'un exemple serait Néhémie 8. Dans ma NIV imprimée, le chapitre 8 commence au milieu d'un paragraphe. Et le numéro de verset (1 dans ce cas) est imprimé à côté du numéro de chapitre (qui est en capitales). Dans d'autres chapitres, le numéro de verset est omis s'il est 1.

Dans Paratext, la feuille de style définit une hiérarchie de marqueurs, tels que id > ide > c > p > v. Et pour la plupart des chapitres et des paragraphes, cela pourrait correspondre au XML de la manière que vous attendez (avec l'élément c contenant un élément p, etc.) Mais pour Néhémie 8, la hiérarchie de Paratext s'effondre, c'est pourquoi je soupçonne que USX a un élément c qui n'a pas de contenu.

Traduit automatiquement depuis English
par (185 points)
0 votes

Merci, @anon291708, je pense que rdwrtp8 fera exactement ce dont j'ai besoin. J'ai quelques questions à ce sujet, l'ayant tout juste exécuté.
Il sort l'USX au format version 2.5, ce que PT8 utilisait. Sera-t-il un jour mis à jour pour sortir au format 3.0 comme PT9 ?
Il ne semble pas utiliser le fichier PrintDraftChanges.txt pendant le processus d'exportation, ce que l'option de menu « Exporter le projet en USX » dans PT8/9 utilise. Y a-t-il un moyen d'incorporer ces modifications ?

@Bobby, merci pour la suggestion de Haiola. Oui, je l'avais essayé sans succès. Concernant les marqueurs imbriqués, après avoir lu ce message il y a un ou deux ans et avoir réfléchi aux problèmes, je pense que j'ai une meilleure compréhension de pourquoi c'est important (et pourquoi tout système aura des lacunes inhérentes).

Traduit automatiquement depuis English
par (1,9k points)

Je voudrais maintenant écrire un script qui prend un fichier de spécification de module biblique et crée le fichier de sortie à partir de celui-ci. On m'a dit ici que rdwrtp8.exe devrait le faire, mais je n'arrive pas à le faire fonctionner.

Devrait-il le faire ? Devrais-je pouvoir prendre un fichier de spécification de module biblique, le charger dans PT en externe comme un livre XXA-XXG, puis l'exporter… et avoir le fichier résultant être la sortie du module biblique avec toutes les Écritures remplies ?

Les commandes que j'utilise sont:
rdwrtp8 -w PROJ XXA 0 "D:\My-Modules\module1.sfm"
et
rdwrtp8 -r PROJ XXA 0 "D:\My-Expanded-Modules\module1.sfm"

Traduit automatiquement depuis English

Questions connexes

0 votes
2 réponses 43 vues
J'ai besoin de convertir un fichier USX en USFM. Je vois une option dans Paratext pour faire l'inverse, ... que leur conversion en USFM facilitera leur traitement par Proskomma.
yeti 109 posée mars 19
0 votes
2 réponses 359 vues
Hello, I am writing as a representative of a small task team assigned to review proposals for what becomes a ... necessary information with you. Thank you. jmkla [Email Removed]
[Expert]
jmkla
290
posée oct. 2, 2015
0 votes
2 réponses 236 vues
In the USX export file from Paratext, for certain references, the transformation adds an extra - in the tag. ... bug in the USX transformation. Any help would be appreciated.
anon753074 109 posée avr. 24, 2020
0 votes
1 réponse 34 vues
Nous utilisons /xt dans les renvois de notes de bas de page, configuré pour utiliser le nom court du livre. ... -il un code USFM différent que je pourrais utiliser pour cela ?
Lenice 180 posée oct. 7, 2025
0 votes
1 réponse 423 vues
Je souhaite exporter le projet en HTML afin de pouvoir partager des brouillons avec d'autres personnes. Je ne veux ... . Comment masquer les marqueurs USFM dans le HTML exporté ?
bit 495 posée avr. 14, 2022
Welcome to Support Bible, where you can ask questions and receive answers from other members of the community.
If anyone destroys God’s temple, God will destroy that person; for God’s temple is sacred, and you together are that temple.
1 Corinthians 3:17
3,045 questions
6,005 réponses
5,671 commentaires
2,026 utilisateurs