XSLT 2.0 を使用して XML ファイルを XHTML に変換しています。変換には saxon9 プロセッサを使用しています。変換中に、次のようなエラーが発生します
java.io.FileNotFoundException: c:\test\book.dtd (指定されたファイルが見つかりません)。
XML には PUBLIC ID を持つ DOCTYPE 宣言があるため、DTD を探しています。
このエラーを解決するための解決策を探していましたが、それを行うことができません。私は resolver.jar で試しました。
私は resolver.jar をダウンロードし、saxon.jar と同じ場所に配置し、次のコマンド ラインを試しました。
java -cp c:/saxon9/saxon9.jar;c:saxon9/resolver.jar; net.sf.saxon.Transform -x:org.apache.xml.resolver.tools.ResolvingXMLReader -t -s:c:/test/sample2.xml -xsl:c:/test/body.xsl >c:/test/out /output.html
同じエラー メッセージが表示されます。
resolver.jar を使用するためにいくつかの Web サイトを参照しましたが、指示が明確ではなく、目的の出力が得られません。
http://sourceforge.net/apps/mediawiki/saxon/index.php?title=XML_Catalogsを見つけました。これは、resolver.jar を使用して DOCTYPE 宣言を省略する正しい解決策ですか? もしそうなら、これを使用する方法について親切に助けてください、または使用できる他の方法はありますか?
私のXMLファイルは次のようになります
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE chapter PUBLIC "-//ES//DTD book DTD version 5.3.0//EN//XML" "book.dtd" [<! ENTITY fx1 SYSTEM "fx1" NDATA IMAGE>]>
<chapter>
<info>
<ce:link locator="fx1"/>…
以下のようにcatalog.xmlファイルを作成し、同じ場所に保存しました。
<catalog prefer="public" xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<system systemId="-//ES//DTD book DTD version 5.3.0//EN//XML" uri="book.dtd"/>
</catalog>
環境変数のクラスパスも次のように定義しました。
c:\saxon9\saxon9.jar;c:\saxon\resolver.jarUsed the following command line for conversion(referred http://sourceforge.net/apps/mediawiki/saxon/index.php?title=XML_Catalogs)
しかし、私はまだ同じ問題に直面しており、正確な問題がどこにあるかを見つけることができず、他に何をする必要がありますか?
C:\>java -cp c:\saxon9\saxon9.jar;c:\saxon9\resolver.jar -Dxml.catalog.files=c:\saxon9\catalog.xml net.sf.saxon.Transform -r:org.apache.xml.resolver.tools.CatalogResolver -x:org.apache.xml.resolver.tools.ResolvingXMLReader -y:org.apache.xml.resolver.tools.ResolvingXMLReader -xsl:c:\test\body1.xsl -s:c:\test\Main.xml -o:c:\test\output.html
しかし、次のエラーが発生します
Error java.io.FileNotFoundException: c:\test\book.dtd (The system cannot find the file specified)
Transformation failed: Run-time errors were reported
これは非常に緊急であるため、タイムリーなサポートに非常に感謝しています...