2011-12-19 72 views
0

我試圖使用Xerces 2.7.1和Xalan 2.7.0將包含碎片/部分的docbook文檔轉換爲pdf。將Docbook 5.0(含部分包含)轉換爲PDF

<xi:include href="./TestDocument.included.xml" xpointer="Section2"/> 

這並沒有工作,直到我想通了,爲了使用部分包括一個具有提供使用<!DOCTYPE ..>的schemafile一個resolveable路徑。

但是對於Docbook 5.0,應該/必須使用名稱空間聲明而不是DOCTYPE。

<?xml version="1.0" encoding="UTF-8"?> 
<article xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" 
xml:lang="de" version="5.0" status="DRAFT" security="confidential"> 

如何將docbookxi.rng提供給工具鏈?

回答

1

沒有辦法「提供docbookxi.rng到工具鏈」,這將有助於在這種情況下。甚至沒有將XML文檔與RELAX NG模式相關聯的標準方法。 xmlns="http://docbook.org/ns/docbook"命名空間聲明將該文檔標識爲DocBook 5(與version屬性一起),但沒有說明模式的位置。

像這樣的一條線,

<xi:include href="./TestDocument.included.xml" xpointer="Section2"/> 

意思是:「包括由具有ID類型的具有Section2的值的屬性的元素標識的的TestDocument.included.xml部」。

在DocBook 5中,xml:id用於唯一標識符。該屬性被識別爲ID類型,並且不需要模式來確定其「ID-ness」(請參見http://www.w3.org/TR/xml-id/)。因此,如果您的DocBook 5文檔中有任何id屬性,請將它們更改爲xml:id

但是,您還應該確保XML解析器支持xml:id。 Xerces在這裏似乎很缺乏,所以它可能仍然不適合你(見https://issues.apache.org/jira/browse/XERCESJ-1113)。

如果出現問題,可以嘗試使用DocBook 5 DTD(是的,即使規範模式是在RELAX NG中編寫的,也存在DTD)。該DTD宣佈xml:id爲ID類型。

+0

聽起來很有希望:) – 2011-12-19 15:18:27

+0

我該如何「使用」Docbook DTD? – 2011-12-20 11:25:46

+0

下載DTD並向XML文檔添加DOCTYPE聲明。像這樣:'<!DOCTYPE book SYSTEM「docbook.dtd」>'(假設XML文件和DTD在同一個目錄中)。你在問題中提到了'',所以我認爲你已經知道了。 – mzjn 2011-12-20 11:40:33

相關問題