将Docbook 5.0(包含部分内容)转换为PDF



我正在尝试使用Xerces 2.7.1和Xalan 2.7.0将带有片段/部分包含的docbook文档转换为pdf。

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

这没有工作,直到我发现为了使用部分包含,必须使用<!DOCTYPE ..>提供一个可解析的模式文件路径。

但是在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"> 

我如何提供docbook ?RNG到工具链?

没有办法"提供docbook "。RNG到工具链",在这种情况下会有所帮助。甚至没有将XML文档与RELAX NG模式关联起来的标准方法。xmlns="http://docbook.org/ns/docbook"名称空间声明将文档标识为DocBook 5(连同version属性),但它没有说明模式的位置。

像这样的一行,

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

表示:"包括TestDocument.included.xml中由具有类型ID属性且值为Section2的元素标识的部分"。

在DocBook 5中,xml:id用于唯一标识符。此属性被识别为ID类型,并且不需要模式来确定其"ID性"(参见http://www.w3.org/TR/xml-id/)。所以如果你在docbook5文档中有任何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类型。

最新更新