1

ローカルの docbook dtd ファイルなどを使用するように Apache FOP を構成する必要があります。カタログ ファイルの作成から 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>

何がうまくいかないのですか?

よろしく、らいちょう

4

3 に答える 3

1

問題は、カタログファイルのDOCTYPE宣言にあると思います。

  1. 構文が間違っています。/>代わりにで終わり>、終了引用符がありません。

  2. 項目1を修正すると、リゾルバーはからDTDをフェッチしようとしますhttp://www.oasis-open.org/committees/entity。その場所にはDTDがなく、リゾルバーはあきらめます。

いくつかのテストを行いましたが、カタログファイルから行全体を削除しただけで<!DOCTYPE ..>、期待どおりに機能し始めました。

于 2011-02-12T14:32:31.577 に答える
0

ファイルから DOCTYPE を削除して変換するだけで問題を解決しました。正確にはきれいな解決策ではありませんが、FOP に URI を解決するよう説得することはできませんでした。

よろしく、らいちょう

于 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 に答える