fo:引用但未声明的实体

发布于 2024-11-08 04:39:55 字数 167 浏览 2 评论 0原文

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

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

I am getting the error "entity 0slash was referenced but not declared" whenever I try to convert .fo file to .pdf with apache fop 1.0

I found out you can declare entities in DTD, however, my .fo file has no DTD. Is it supposed to have one? If not, how can I solve this problem? Prefereably without using additional .xsl or whatever files?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月亮坠入山谷 2024-11-15 04:40:22

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

您有几个选项:

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

  2. 您可以在 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! Ø

(NOTE: In my answer I'm using the "Oslash" (oh slash) instead of the "0slash" (zero slash) you have in your question. Since you can't begin an entity name with a digit, I'm assuming that the zero is a typo.)

You have a couple of options:

  1. You can modify whatever is creating your XSL-FO to output hex references instead of the ISO entity references. In this instance Ø would be Ø.

  2. You can declare the entity in the internal subset of a DOCTYPE declaration.

Here is a sample XSL-FO with the DOCTYPE added:

<?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>

If you process this with FOP, you get: Hello World! Ø

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文