Вопрос
Я ищу разумный способ для заполнения таблиц docbook из XML-файлов.Цель состоит в том, чтобы иметь файл документации, который содержит некоторую минимальную ссылку на необходимые данные.Когда файл документации обрабатывается для окончательной публикации, эту ссылку следует заменить данными, извлеченными из файла XML.
Конкретный пример
Ниже приведен конкретный пример, чтобы проиллюстрировать это далее.Это довольно подробно, потому что моя первая попытка задать этот вопрос была слишком расплывчатой.
source-document.docbook
<?xml version="1.0" encoding="utf-8"?>
<article xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
<info><title/></info>
<table><title/><tgroup cols="2"><tbody>
<row>
<entry>good in comparative</entry>
<entry>
<phrase role="populateme">
<phrase>good</phrase>
<phrase>ADJ COMP</phrase>
</phrase>
</entry>
</row>
<row>
<entry>good in superlative</entry>
<entry>
<phrase role="populateme">
<phrase>good</phrase>
<phrase>ADJ SUPL</phrase>
</phrase>
</entry>
</row>
</tbody></tgroup></table>
</article>
source-database.xml
<?xml version="1.0" encoding="utf-8"?>
<database>
<row>
<cell>good</cell>
<cell>ADJ POST</cell>
<cell>good</cell>
</row>
<row>
<cell>better</cell>
<cell>ADJ COMP</cell>
<cell>good</cell>
</row>
<row>
<cell>best</cell>
<cell>ADJ SUPL</cell>
<cell>good</cell>
</row>
</database>
обработка
Makefile содержит рецепт для получения publication.pdf
из source-document.docbook
и source-database.xml
.(В настоящее время я выбираю xsltproc и fop, но можно предложить и другие)*
<phrase role="populateme">
<phrase>good</phrase>
<phrase>ADJ COMP</phrase>
</phrase>
выше производит better
вместо goodADJ COMP
.
<phrase role="populateme">
<phrase>good</phrase>
<phrase>ADJ SUPL</phrase>
</phrase>
выше производит best
вместо goodADJ SUPL
.
последнее замечание
<phrase role="populateme"><phrase>ref</phrase><phrase>ref2</phrase></phrase>
Выше «синтаксис» очень громоздок, но я пока не могу придумать ничего лучшего, чем действительный docbook.
Предварительные мысли о решении
Теги XInclude
- плюсы: техника xml
- минусы: плохая поддержка xpointer, решение, вероятно, будет громоздким, если это вообще возможно
преобразование предварительной обработки xslt
- плюсы: метод xml
- минусы: xslt довольно запутанный, к тому же это невозможно сделать с помощью xslt?
скрипт предварительной обработки python
- плюсы: возможно, siСамое лучшее решение для достижения этого?
- минусы: невозможность достичь этого с помощью собственных механизмов xml
что-то другое?
Любой вклад, о которомкак я должен принять это и почему можно только приветствовать.А также полные примеры кода и т. Д.