fo:引用但未声明的实体



每当我尝试使用 apache fo 将 .fo 文件转换为 .pdf 时,我都会收到错误"实体 0slash 被引用但未声明" 1.0

我发现您可以在 DTD 中声明实体,但是,我的 .fo 文件没有 DTD。它应该有一个吗?如果没有,我该如何解决这个问题?最好不使用额外的 .xsl 或任何文件?

(注意:在我的回答中,我使用"Oslash"(哦斜杠)而不是您在问题中的"0slash"(零斜杠)。由于您不能以数字开头实体名称,因此我假设零是一个错字。

您有以下几种选择:

  1. 您可以修改创建 XSL-FO 的任何内容,以输出十六进制引用,而不是 ISO 实体引用。在这种情况下,Ø将是Ø

  2. 您可以在 DOCTYPE 声明的内部子集中声明实体。

下面是添加了 DOCTYPE 的示例 XSL-FO:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fo:root [
<!ENTITY Oslash "&#xD8;">
]>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:layout-master-set>
        <fo:simple-page-master master-name="page">
            <fo:region-body region-name="body"></fo:region-body>
        </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="page">
        <fo:flow flow-name="body">
          <fo:block>Hello World! &Oslash;</fo:block>
        </fo:flow>
    </fo:page-sequence>
</fo:root>

如果使用 FOP 处理此问题,则会得到: Hello World! Ø

最新更新