每当我尝试使用apache fop 1.0将.fo文件转换为.pdf时,我收到错误“实体0slash被引用但未声明”
我发现你可以在DTD中声明实体,但是,我的.fo文件没有DTD。应该有吗?如果没有,我该如何解决这个问题呢?优选地,不使用额外的.xsl或任何文件?
答案 0 :(得分:4)
(注意:在我的回答中,我使用的是“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! Ø