1

我需要配置 Apache FOP 以便它使用我的本地 docbook dtd 文件等。我尝试了几乎所有的东西,从编写目录文件到安装 apache xml 解析器等

这是我写的目录文件。我还将 xml.catalog.files 属性设置为该文件,并实例化了 FopFactory 用作 URIResolver 的 apache 目录解析器。但是 fop 仍然从网上获取所有内容。

<?xml version="1.0"?>
<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/>
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<group  prefer="public"  xml:base="file:///Users/raichoo/">
  <public publicId="-//OASIS//DTD DocBook XML V4.5//EN" uri="docbook/docbookx.dtd" />
  <public publicId="-//OASIS//DTD DocBook XML V4.1.2//EN" uri="docbook/docbookx.dtd" />
  <system systemId="http://www.oasis-open.org/docbook/xml/4.5/" uri="docbook/" />
  <rewriteSystem systemIdStartString="http://www.oasis-open.org/docbook/xml/4.5/" rewritePrefix="docbook/"/>
</group>                                                                                                                      

</catalog>

任何想法出了什么问题?

问候, raichoo

4

3 回答 3

1

我认为问题在于目录文件中的 DOCTYPE 声明:

  1. 语法错误:它以/>代替结尾>并且缺少右引号。

  2. 修复第 1 项后,解析器尝试从http://www.oasis-open.org/committees/entity. 该位置没有 DTD,解析器放弃了。

我做了一些测试,当我简单地<!DOCTYPE ..>从目录文件中删除整行时,事情开始按预期工作。

于 2011-02-12T14:32:31.577 回答
0

我通过简单地从要转换的文件中删除 DOCTYPE 解决了这个问题。不完全是一个很好的解决方案,但我无法说服 FOP 解析 URI。

问候, raichoo

于 2011-02-23T22:45:10.087 回答
0

我在我的 catalog.xml 文件中使用了这个 doctype 元素定义:

<?xml version="1.0"?>
<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
 ...
</catalog>
于 2011-04-26T09:02:54.197 回答