問題
我正在尋找合理的方式來從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>
處理
生成文件包含配方從產生和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?
蟒蛇預處理腳本
- 優點:可能是最簡單的解決方案來實現這一目標?
- 缺點:無法與XML自身機制
以外的東西來實現這一目標?
關於我應該採取哪種方式以及爲什麼歡迎的任何輸入。以及全碼的例子等
是「xml文件」輸入到進程和「docbook文件」所需的輸出?什麼是「目標文件」?什麼是「基於標記的語法?請澄清 – mzjn 2012-01-10 18:19:30
@mzjn」docbook文件「和」xml文件「是」源文件「文件,在處理完槽工具鏈(xsltproc和xsltproc)後應產生」目標文檔「工具鏈可以在實際的docbook工具之前包含預處理(或者在需要之後)。目標文檔應該具有上述替換。通過基於標籤的語法,我的意思是類似於「好 ADJ SUPL 「這是正確的XML。對不起,我不清楚。 –
ojs
2012-01-11 00:36:29