我正在使用XSLT 2.0將XML文件轉換爲XHTML。我正在使用saxon9處理器進行轉換。在轉換時,出現如下錯誤:忽略DOCTYPE聲明
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>
我還定義在環境變量classpath中像:
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
及時幫助非常感謝,因爲這是非常緊迫......
公共ID( 「 - // ES // DTD書DTD版本5.3.0 // EN // XML」)是由[愛思唯爾(HTTP發佈的DTD://cdn.elsevier。 COM /資產/ text_file/0018/111339/bk53_book530_dtd.txt)。它不是獨立的,因爲它牽扯到其他聲明。沒有完整的發行版,你不會走得太遠。我建議完全刪除doctype聲明,並使用非驗證解析器與撒克遜。 – arayq2
此外,內部子集中的實體聲明被破壞:'<!'之間不應有空格和「ENTITY」。即使有了這個修復,仍然存在沒有聲明名爲'IMAGE'的符號的問題。 – arayq2
在應該是的目錄中。但是,您的真正問題可能是您根本沒有Elsevier DTD。 –
arayq2