我需要使用XSL轉換 XML 文件,其中包括多個導入。一個簡單的轉換就可以正常工作(即使使用導入),但這并不是我真正想要的,因為每個轉換甚至有超過 20 個導入文件。(我現在正在使用javax.xml.transform,在我使用之前net.sf.saxon.s9api。)我用Oxygen XML Editor編譯了XSLT并得到了一個SEF文件。它應該已經包含所有文件,現在我收到以下錯誤: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.我認為問題是它正在嘗試編譯已編譯的文件,但我該如何解決呢?這是我現在擁有的基本代碼: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貢獻1806條經驗 獲得超5個贊
Saxon 9.9 應該在所有接受源樣式表的地方都接受 SEF 文件。事實上,我剛剛確認您的代碼確實接受 9.9 中的 SEF 文件。但 9.8 并非如此,因此首先要檢查 Saxon 版本。
還有一種可能是,用于創建 SEF 文件的 oXygen 版本與您用來加載和執行它的 Saxon 版本之間存在一些版本不兼容。
添加回答
舉報
0/150
提交
取消