【问题标题】:Converting Docbook 5.0 (with partial includes) to PDF将 Docbook 5.0(部分包含)转换为 PDF
【发布时间】:2011-12-19 12:42:09
【问题描述】:

我试图使用 Xerces 2.7.1 和 Xalan 2.7.0 将包含碎片/部分包含的 docbook 文档转换为 pdf。

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

直到我发现为了使用部分包含,必须使用 &lt;!DOCTYPE ..&gt; 提供架构文件的可解析路径,这才起作用。

但是对于 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 提供给工具链?

【问题讨论】:

    标签: xml xerces docbook xinclude


    【解决方案1】:

    在这种情况下,没有办法“将 docbookxi.rng 提供给工具链”。甚至没有将 XML 文档与 RELAX NG 模式相关联的标准方法。 xmlns="http://docbook.org/ns/docbook" 命名空间声明将文档标识为 DocBook 5(连同 version 属性),但它没有说明架构的位置。

    像这样的一行,

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

    表示:“包括TestDocument.included.xml 的一部分,该部分由具有值为Section2 的ID 类型属性的元素标识”。

    在 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 类型。

    【讨论】:

    • 我究竟如何“使用”Docbook DTD?
    • 下载 DTD 并将 DOCTYPE 声明添加到 XML 文档。像这样:&lt;!DOCTYPE book SYSTEM "docbook.dtd"&gt;(这里假设 XML 文件和 DTD 在同一个目录中)。您确实在问题中提到了&lt;!DOCTYPE ..&gt;,所以我假设您已经知道了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    • 2013-01-31
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多