質問
xmlファイルからdocbookテーブルを作成する方法を検討しています。目標は、必要なデータへの最小限の参照を含むdocbookファイルを持つことです。 docbookファイルが最終的な出版に処理されるとき、この参照はxmlファイルから取り出されたデータに置き換えられるべきです。xmlファイルからdocbookテーブルにデータを入力
具体例
下記は、これをさらに具体的に説明するための具体例です。この質問をする私の最初の試みがあまりにも曖昧だったので、それはかなり詳細です。
ソース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-database.xml
。 (現在の選択の私のツールは、xsltprocのとFOPですが、他の人が提案することができます)
publication.pdf
通常の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を達成することは不可能かもしれないですか?
Pythonの前処理スクリプト
- 長所:これを達成する可能性が最も簡単な解決策?
- 短所:XMLの独自のメカニズムでこれを達成できないこと
他の何か?
私はこれをどのように受けなければならないのか、なぜ歓迎されたのかについてのご意見をお寄せください。同様に完全なコード例などここ
「xmlファイル」はプロセスへの入力で、「docbookファイル」は目的の出力ですか? 「対象文書」とは何ですか? – mzjn
@mzjn "docbook file"と "xml file"は、 "source"ファイルです。処理されたトラフのツールチェーン(xsltprocと)の後に "target document"(私の場合はpdfファイル)を生成する必要があります。 fop)は、makefileから呼び出されます。ツールチェインには、実際のドキュメントブックツールの前に(または後に)前処理が含まれていてもかまいません。 "これは適切なXMLです – ojs