Вопрос
Я ищу разумный способ заполнения таблиц docbook из xml-файлов. Цель состоит в том, чтобы иметь файл docbook, который содержит некоторую минимальную ссылку на необходимые данные. Когда файл docbook обрабатывается до окончательной публикации, эта ссылка должна быть заменена данными, полученными из файла xml.Заполнение таблицы docbook из xml-файла
Конкретный пример
Ниже приведен конкретный пример, чтобы проиллюстрировать это далее. Это довольно подробно, потому что моя первая попытка задать этот вопрос была слишком расплывчатой.
источник-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>
источник-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 и фат, но другие могут быть предложены.)
publication.pdf
Normal DocBook подготовлены публикации PDF со следующими заменами:
<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?
питон предварительной обработки сценария
- плюсы: возможно простое решение для достижения этой цели?
- минусы: невозможность достичь этого с собственными механизмами XML в
что-то другое?
Любой входной сигнал о том, каким образом я должен принять это и почему. Так же как полные примеры кода и т.д.
Является ли «xml-файл» входным для процесса и «файл docbook» желаемым результатом? Что такое «целевой документ»? Что такое «синтаксис на основе тегов?» Пожалуйста, уточните: – mzjn
@mzjn «файл docbook» и «xml-файл» являются «исходными» файлами. Они должны создавать «целевой документ» (файл pdf в моем случае) после обработки цепочки инструментов (xsltproc и fop в данный момент), вызванный из makefile. Инструментальная цепочка может содержать предварительную обработку перед действительными инструментами docbook (или после этого, если вам нужно). Целевой документ должен иметь выше замещений. По синтаксису на основе тегов я имею в виду что-то вроде « good ADJ SUPL ", который является надлежащим XML. Извините за то, что он не ясен. –
ojs