2013-07-12 38 views
0

我正在開發一個Java類,通過XSLT文檔將HTML字符串轉換爲FO字符串。XSL到FO和HTML實體

然後,生成的FO字符串由FOP處理以創建PDF文件。

的問題是,當一個特殊字符由FOP發現,我得到一個錯誤:

(e.g.) The entity "ldquo" was referenced, but not declared. 

現在我的解決辦法是用它們的Unicode基準,以取代所有這些特殊字符。

在這個例子中,"“"成爲"“"

我可以宣佈我的XSLT文件的實體沒有做StringUtils.replaceAll不計其數()?

+0

那麼您如何將HTML輸入提供給您的XSLT?要麼確保它是格式良好的XHTML,其中引用的所有實體都在DOCTYPE中正確聲明,或者使用像http://about.validator.nu/htmlparser/這樣的HTML5解析器,而不是XML解析器。 –

+0

你的情況還不清楚。您聲明「通過XSLT文檔轉換HTML ...」,但XSLT無法讀取HTML文件,它只能讀取XML文件。如果您將HTML轉換爲XML,那麼您已經解決了這個問題,因爲XML是正確的。你傳遞給XSLT處理器的文件是什麼?我告訴我的學生,使用XSLT處理HTML信息我首先使用W3C Tidy工具將其轉換爲XHTML,然後使用解析實體的W3C DTD片段的實體解析器調用Saxon。 –

+0

感謝G.肯霍爾曼。你如何用實體解析器調用撒克遜? – neo

回答

0

Solved using JTidy with setXmlOut(true)