我正在使用 XSLT 2.0 将 XML 文件转换为 XHTML。我正在使用 saxon9 处理器进行转换。转换时,我收到一个错误,例如
java.io.FileNotFoundException: c:\test\book.dtd(系统找不到指定的文件)。
它正在寻找 DTD,因为 XML 具有带有 PUBLIC id 的 DOCTYPE 声明。
我正在寻找解决此错误的解决方案,但我无法做到这一点。我尝试使用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,但我不清楚说明并且没有获得所需的输出。
我找到了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
非常感谢及时的帮助,因为这是非常紧急的......