我需要使用XSL轉(zhuǎn)換 XML 文件,其中包括多個導(dǎo)入。一個簡單的轉(zhuǎn)換就可以正常工作(即使使用導(dǎo)入),但這并不是我真正想要的,因?yàn)槊總€轉(zhuǎn)換甚至有超過 20 個導(dǎo)入文件。(我現(xiàn)在正在使用javax.xml.transform,在我使用之前net.sf.saxon.s9api。)我用Oxygen XML Editor編譯了XSLT并得到了一個SEF文件。它應(yīng)該已經(jīng)包含所有文件,現(xiàn)在我收到以下錯誤:Error at package on line 2 column 321 of file.sef.xml:? XTSE0150: The supplied file does not appear to be a stylesheetjavax.xml.transform.TransformerConfigurationException: Failed to compile stylesheet. 1 error detected.我認(rèn)為問題是它正在嘗試編譯已編譯的文件,但我該如何解決呢?這是我現(xiàn)在擁有的基本代碼:public String transform(File xslt, String xml) throws TransformerException {? ? TransformerFactory tFactory = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl", null);? ? Transformer transformer = tFactory.newTransformer(new StreamSource(xslt));? ? final StringWriter writer = new StringWriter();? ? StreamResult standardResult = new StreamResult(writer);? ? transformer.transform(new StreamSource(new StringReader(xml)), standardResult);? ? return writer.toString();}
1 回答

忽然笑
TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個贊
Saxon 9.9 應(yīng)該在所有接受源樣式表的地方都接受 SEF 文件。事實(shí)上,我剛剛確認(rèn)您的代碼確實(shí)接受 9.9 中的 SEF 文件。但 9.8 并非如此,因此首先要檢查 Saxon 版本。
還有一種可能是,用于創(chuàng)建 SEF 文件的 oXygen 版本與您用來加載和執(zhí)行它的 Saxon 版本之間存在一些版本不兼容。
添加回答
舉報
0/150
提交
取消