+1 голос
808 просмотров

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.

Старое сообщение — показано на исходном языке
Paratext от (1,9тыс. очков) | 808 просмотров

6 Ответов

0 голосов
Лучший ответ

Извините, это не сработает. Вы можете читать результат уже настроенного модуля, над которым Paratext уже выполнил генерацию модуля, но вы не можете записать модуль в Paratext и заставить его понять, что это модуль, и выполнить генерацию.

ПРАВКА: Похоже, я пропустил несколько вопросов, заданных более двух лет назад: :grimacing:

Да, теперь он должен выводить формат 3.0.

К сожалению, нет. rdwrtp8 предназначен для чтения/записи необработанных файлов, чтобы другие приложения могли читать/записывать данные Paratext. Это требует, чтобы данные были обратимыми (round-trip-able), а изменения, определенные в PrintDraftChanges.txt, не являются обратимыми.

Переведено машиной с языка English
от [Expert]
(16,7тыс. очков)

снова показан
0 голосов

Я не знаю такого инструмента. Лучший способ, по-моему, использовать стандартизированную схему расположения для экспорта файлов USX, например C:\My Paratext 8 Projects\[project name]\local\USX и получать их оттуда.
Что касается маркеров глав и стихов, они называются контрольными точками (milestones) и являются одним из способов обработки перекрывающейся разметки.
Это для печатного издания или только цифрового?

Переведено машиной с языка English
от (872 очков)
снова показан

Это для печатного издания. Издательская программа, которую мы используем, SILE, принимает на вход XML. На самом деле она принимала бы вход в стиле TeX (т.е. USFM), но программист, с которым я работаю, предпочел бы использовать XML.

Я предполагаю, что формат USX будет работать идеально для программиста, поэтому эти другие вопросы — для моего собственного понимания.

Думаю, это просто дизайнерские решения, но я задаюсь вопросом, почему тот, кто создал USX, решил, что <chapter> означает «номер в начале главы», а не «глава». Моё понимание XML состоит в том, что обычно используется форматирование вида
<tag attributes=“aaa”>content</tag>

То, как это устроено сейчас:
<chapter number=“1” style=“c” > не имеет содержимого
Где я ожидал бы:
<chapter number=“1” style=“c”>the actual content of the chapter<\chapter>

Возможно, я упускаю что-то, но я не вижу, как это вызвано проблемами перекрывающейся разметки.

Вот еще одна проблема — следуя стилю религиозных книг нашего региона, наш проект планирует отмечать номера стихов в конце стихов, а не в начале. С тем, как сейчас работает маркер <verse>, нам придется использовать скрипты, чтобы переместить тег в другое положение в документе XML с обычным текстом, но если USX использовал бы формат, который, по-моему, должен быть:
<verse number=“1” style=“v”>verse text</verse>
то было бы довольно просто заставить программу, читающую XML, интерпретировать эту строку и сказать «напечатать атрибут ‘number’ в конце ‘verse text’, а не в начале».

Переведено машиной с языка English
0 голосов

Спустя год и полгода я по-прежнему хочу эту функциональность.

Встроенная функция Paratext «export project to USX» — это именно то, что мне нужно, но я хотел бы автоматизировать ее, чтобы я мог включить ее в скрипт командной строки. Код конвертации USFM–>USX должен быть в PT. Есть ли способ получить этот код от разработчиков (понимая, что с нашей стороны потребуются некоторые модификации, чтобы заставить его работать на том языке, который мы используем)? Если да, как мне это сделать?

Переведено машиной с языка English
от (1,9тыс. очков)
0 голосов

Похоже, вам нужен автономный инструмент, но если вам нужен только текст проекта в формате USX, Paratext 8+ поставляется с небольшим инструментом командной строки, который может извлечь текст проекта в формате USX:
rdwrtp8 -r projectShortName bookCode chapterNum resultFileName -x

Флаг -x используется для указания формата USX вместо формата USFM.
Если chapterNum равно 0 (ноль), возвращается вся книга.

Это нельзя использовать для ресурсов по очевидным причинам.

Было бы сложно вынести код разбора за пределы Paratext, поскольку он сильно зависит от настроек проекта и информации о стилях для создания USX из USFM.

Переведено машиной с языка English
от [Expert]
(16,7тыс. очков)
0 голосов

Когда я увидел ваш недавний пост, я собирался предложить Haiola, но вижу, что вы уже пробовали это. Признаюсь, я сам его не использовал. Я бы предложил связаться с автором по поводу любых проблем, которые вы обнаружили, если rdwrtp8 не предоставляет решения.

Что касается перекрывающейся разметки, я бы предположил, что примером может послужить Неемия 8. В моей печатной NIV глава 8 начинается посреди абзаца. И номер стиха (в данном случае 1) напечатан рядом с номером главы (который набран буквицей). В других главах номер стиха опускается, если он равен 1.

В Paratext лист стилей определяет иерархию маркеров, такую как id > ide > c > p > v. И для большинства глав и абзацев это можно отобразить в XML так, как вы ожидаете (с элементом c, содержащим элемент p и т.д.). Но для Неемии 8 иерархия Paratext нарушается, поэтому я подозреваю, что в USX есть элемент c без содержимого.

Переведено машиной с языка English
от (185 очков)
0 голосов

Спасибо, @anon291708, я думаю, rdwrtp8 сделает именно то, что мне нужно. У меня есть несколько вопросов по нему, так как я только что его запустил.
Он выводит USX в формате версии 2.5, который использовал PT8. Будет ли он когда-нибудь обновлен для вывода в формате 3.0, как это делает PT9?
Похоже, он не использует файл PrintDraftChanges.txt во время процесса экспорта, тогда как пункт меню «Export project to USX» в PT8/9 использует его. Есть ли способ включить эти изменения?

@Bobby, спасибо за предложение Haiola. Да, я пробовал его безрезультатно. Что касается перекрывающихся маркеров, после прочтения этого поста год или два назад и размышлений о проблемах, я думаю, что я лучше понял, почему это важно (и почему любая система будет иметь врожденные недостатки).

Переведено машиной с языка English
от (1,9тыс. очков)

Теперь я хотел бы написать скрипт, который берет файл спецификации Библии (Bible Module spec file) и создает из него выходной файл. Мне сказали здесь, что rdwrtp8.exe должен сделать это, но я не могу заставить его работать.

Должен ли он? Должен ли я иметь возможность взять файл спецификации Библии, загрузить его в PT внешне как книгу XXA-XXG, а затем экспортировать его… и чтобы результирующий файл был выходом модуля Библии со всеми заполненными текстами Писания?

Команды, которые я использую:
rdwrtp8 -w PROJ XXA 0 "D:\My-Modules\module1.sfm"
и
rdwrtp8 -r PROJ XXA 0 "D:\My-Expanded-Modules\module1.sfm"

Переведено машиной с языка English

Похожие вопросы

0 голосов
2 ответов 43 просмотров
Мне нужно преобразовать файл USX в USFM. Я вижу, что в Paratext есть опция для обратного преобразования, но не ... преобразование их в USFM поможет Proskomma лучше с ними работать.
yeti 109 задал вопрос мар 19
0 голосов
2 ответов 359 просмотров
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
задал вопрос окт 2, 2015
0 голосов
2 ответов 236 просмотров
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 задал вопрос апр 24, 2020
0 голосов
1 ответ 34 просмотров
Мы используем /xt в перекрёстных ссылках в сносках, настроенных на использование короткого названия книги. Но в глоссарии ... код USFM, который я мог бы использовать для этого?
Lenice 180 задал вопрос окт 7, 2025
0 голосов
1 ответ 423 просмотров
Я хотел бы экспортировать проект в HTML, чтобы делиться черновиками с другими людьми. Я не хочу экспортировать в PDF ... далее. Как мне скрыть маркеры USFM в экспортированном HTML?
bit 495 задал вопрос апр 14, 2022
Welcome to Support Bible, where you can ask questions and receive answers from other members of the community.
Make every effort to keep the unity of the Spirit through the bond of peace.
Ephesians 4:3
3,045 вопросов
6,005 ответов
5,671 комментариев
2,026 пользователей