每当我尝试使用 apache fo 将 .fo 文件转换为 .pdf 时,我都会收到错误"实体 0slash 被引用但未声明" 1.0
我发现您可以在 DTD 中声明实体,但是,我的 .fo 文件没有 DTD。它应该有一个吗?如果没有,我该如何解决这个问题?最好不使用额外的 .xsl 或任何文件?
(注意:在我的回答中,我使用"Oslash"(哦斜杠)而不是您在问题中的"0slash"(零斜杠)。由于您不能以数字开头实体名称,因此我假设零是一个错字。
您有以下几种选择:
-
您可以修改创建 XSL-FO 的任何内容,以输出十六进制引用,而不是 ISO 实体引用。在这种情况下,
Ø
将是Ø
。 -
您可以在 DOCTYPE 声明的内部子集中声明实体。
下面是添加了 DOCTYPE 的示例 XSL-FO:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fo:root [
<!ENTITY Oslash "Ø">
]>
<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! Ø</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
如果使用 FOP 处理此问题,则会得到: Hello World! Ø